Module: StateMethods::MethodUtilsClassMethods

Included in:
MethodUtils
Defined in:
lib/state_methods/method_utils.rb

Instance Method Summary collapse

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