Paramix
Website · YARD API · Report Issue · Source Code
About
Parametric Mixins provides an easy means to "functionalize" modules. The module can then be differentiated upon usage according to the parameters provided.
Usage
Here is the most basic example. It simply makes the parametric module's parameters available at the instance level.
module M
  include Paramix::Parametric
  paramaterized do |params|
    define_method :params do
      params
    end
  end
  def hello
    "Hello, %s!" % [params[:name]]
  end
end
class X
  include M[:name=>'Charlie']
end
X.new.hello  #=> 'Hello, Charlie!'
Because the +parameterized+ method defines a block that is evaluated in the context of a new Parametric::Mixin, it is possible to work with the parameters in more versitle ways. Here is a simple example that uses a parameter to define a method and another parameter to define it's return value.
module M
  include Paramix::Parametric
  paramaterized do |params|
    define_method params[:name] do
      params[:value]
    end
  end
end
class X
  include M[:name=>'foo', :value='bar']
end
X.new.foo  #=> 'bar'
Copyrights
Copyright (c) 2006 Rubyworks
This program is ditributed unser the terms of the BSD-2-Clause license.
See COPYING.rdoc file for details.