Module: Hook

Module | Hook
In: | lib/more/facets/hook.rb

TODO: hooks should be an inheritor

### Methods

append_features hook hooks

### Public Class methods

append_features(base)

[Source]

    # File lib/more/facets/hook.rb, line 7
      def self.append_features(base)
        base.extend self
      end

### Public Instance methods

hook(name)

[Source]

    # File lib/more/facets/hook.rb, line 15
      def hook(name)
        name = name.to_sym

        (class << self; self; end).class_eval %{
          def #{name}(meth=nil, &blk)
            hooks[:#{name}] << (meth || blk)
          end
        }

        module_eval %{
          def #{name}(*args)
            self.class.hooks[:#{name}].each do |blk|
              if Proc === blk
                instance_exec(:#{name}, *args, &blk)
              else
                __send__(blk, :#{name}, *args)
              end
            end
          end
        }
      end

hooks()

[Source]

    # File lib/more/facets/hook.rb, line 11
      def hooks
        @hooks ||= Hash.new{ |h,k| h[k] = [] }
      end

[Validate]