Class Paramix::Delegator
In: lib/more/facets/paramix.rb
Parent: Module

Methods

Attributes

base_block  [R] 
module_delegate  [R] 
parameters  [R] 

Public Class methods

[Source]

# File lib/more/facets/paramix.rb, line 132
    def initialize(module_delegate, parameters={}, &base_block)
      @module_delegate = module_delegate
      @parameters      = parameters
      @base_block      = base_block
    end

Public Instance methods

[Source]

# File lib/more/facets/paramix.rb, line 174
    def [](name)
      @parameters[name]
    end

[Source]

# File lib/more/facets/paramix.rb, line 140
    def append_features(base)
      base.mixin_parameters[module_delegate] = parameters

      base.module_eval do 
        define_method(:mixin_parameters) do
          base.mixin_parameters
        end
        alias_method :mixin_params, :mixin_parameters
      end

      base.module_eval(&@base_block) if base_block

      base.__send__(:include, module_delegate)
    end

[Source]

# File lib/more/facets/paramix.rb, line 157
    def extend_object(base)
      baseclass = (class << base; self; end)

      baseclass.mixin_parameters[module_delegate] = parameters

      baseclass.module_eval do 
        define_method(:mixin_parameters) do
          baseclass.mixin_parameters
        end
        alias_method :mixin_params, :mixin_parameters
      end

      baseclass.module_eval(&@base_block) if base_block

      base.__send__(:extend, module_delegate)
    end

[Validate]