DynamicMethods
Define dynamic instance methods with captures and arguments:
require 'rubygems'
require 'dynamic_methods'
class FriendlyGuy
include DynamicMethods
dynamic_method /say_hello_to_(.*)/ do |person|
puts "Hello #{person}"
end
dynamic_method /say_(.*)_to/ do |word, person|
puts "#{word} #{person}"
end
end
guy = FriendlyGuy.new
guy.say_hello_to_bob
# => Hello bob
guy.say_bye_to 'bob'
# => bye bob
The block should expect enough arguments to receive the patterns captures plus additional arguments.