T
Trans
I would like to discuss the merits/non-merits and the best approach to
implementation of "dynamic modules" --modules that take parameters at
the time of include, thus altering their behavior per include. The
common denominator here is the altered interface of #include:
include AModule, pt1 => :val1, pt2 => :val2
Here's a simple example based on the implementation I (and friends) put
together
module Mixin
dynamic_feature do |options|
define_method :hello do
puts "Hello from #{options[:name]}"
end
end
end
class MyClass
include Mixin, :name => 'Ruby'
end
m = MyClass.new
m.hello -> 'Hello from Ruby'
class MyClass2
include Mixin, :name => 'Tom'
end
m = MyClass2.new
m.hello -> 'Hello from Tom'
T.
implementation of "dynamic modules" --modules that take parameters at
the time of include, thus altering their behavior per include. The
common denominator here is the altered interface of #include:
include AModule, pt1 => :val1, pt2 => :val2
Here's a simple example based on the implementation I (and friends) put
together
module Mixin
dynamic_feature do |options|
define_method :hello do
puts "Hello from #{options[:name]}"
end
end
end
class MyClass
include Mixin, :name => 'Ruby'
end
m = MyClass.new
m.hello -> 'Hello from Ruby'
class MyClass2
include Mixin, :name => 'Tom'
end
m = MyClass2.new
m.hello -> 'Hello from Tom'
T.