module_chain_method
Module::ChainMethod mixin to simplify method chain aliasing.
Example
require 'module/chain_method' # Module::ChainMethod
module MyMixin
def self.included target
super
$stderr.puts "MyMixin.included #{target}
end
include ::Module::ChainMethod
def foo
puts "MyMixin#foo"
foo_without_MyMixin
end
def bar
puts "MyMixin#bar"
end
# Prepares method #foo for chaining.
chain_method :foo
end
class Foo
def foo
puts "Foo#foo"
end
def bar
puts "Foo#bar"
super rescue nil
end
end
f = Foo.new
f.foo
f.bar
puts
Foo.send(:include, MyMixin)
f.foo
f.bar
Generates the following output:
> ruby -I lib example/ex01.rb
Foo#foo
Foo#bar
MyMixin.included Foo
MyMixin#foo
Foo#foo
Foo#bar
MyMixin#bar
Note on Patches/Pull Requests
-
Fork the project.
-
Make your feature addition or bug fix.
-
Add tests for it. This is important so I don’t break it in a future version unintentionally.
-
Commit, do not mess with rakefile, version, or history. (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
-
Send me a pull request. Bonus points for topic branches.
Copyright
Copyright © 2010 Kurt Stephens. See LICENSE for details.