Module: StateMethods::MethodUtilsClassMethods
- Included in:
- MethodUtils
- Defined in:
- lib/state_methods/method_utils.rb
Instance Method Summary collapse
- #call(object, keys) ⇒ Object
- #define_class_method(klass, name, val = nil, &block) ⇒ Object
- #define_instance_method(klass, name, val = nil, &block) ⇒ Object
- #find_defined(object, name, *keys) ⇒ Object
- #method_name(*keys) ⇒ Object
Instance Method Details
#call(object, keys) ⇒ Object
30 31 32 33 34 |
# File 'lib/state_methods/method_utils.rb', line 30 def call(object, keys) object.send(method_name(*keys)) rescue NoMethodError nil end |
#define_class_method(klass, name, val = nil, &block) ⇒ Object
16 17 18 19 |
# File 'lib/state_methods/method_utils.rb', line 16 def define_class_method(klass, name, val=nil, &block) name = method_name(*name) if name.is_a?(Array) (class << klass; self end).send(:define_method, name, &block || -> { val } ) end |
#define_instance_method(klass, name, val = nil, &block) ⇒ Object
21 22 23 24 |
# File 'lib/state_methods/method_utils.rb', line 21 def define_instance_method(klass, name, val=nil, &block) name = method_name(*name) if name.is_a?(Array) klass.send(:define_method, name, &block) end |
#find_defined(object, name, *keys) ⇒ Object
5 6 7 8 9 10 11 12 13 14 |
# File 'lib/state_methods/method_utils.rb', line 5 def find_defined(object, name, *keys) if key = keys.shift m = method_name(name, key) if object.respond_to?(m) m else find_defined(object, name, *keys) end end end |
#method_name(*keys) ⇒ Object
26 27 28 |
# File 'lib/state_methods/method_utils.rb', line 26 def method_name(*keys) :"__#{keys.map(&:to_s).join('__')}" end |