module OverrideParens
Public Class Methods
included(base)
click to toggle source
# File lib/override_parens.rb, line 2 def self.included(base) namespace = base.name.split('::')[0...-1] unqualified_name = base.name.split('::')[-1] immediate_namespace = namespace.inject(Kernel) { |mod, const_name| mod.const_get const_name } immediate_namespace.class_eval do define_method(unqualified_name) do |*args, &block| base.parens(*args, &block) end define_singleton_method(unqualified_name) do |*args, &block| base.parens(*args, &block) end private unqualified_name end def base.parens(*args) raise NotImplementedError.new "To use OverrideParens, you must implement #{self.name}.parens, e.g.:" + %Q{ class #{self.name} def self.parens(*args) # ... end end } end end