Project

paramix

0.01
No commit activity in last 3 years
No release in over 3 years
Parametric Mixins provides parameters for mixin modules.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

>= 0
 Project Readme

Paramix

Gem Version Build Status     Flattr Me

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.