Module: Intersys::Callable

Included in:
Object, Object
Defined in:
lib/callable.rb

Instance Method Summary collapse

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(method, *args) ⇒ Object



57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
# File 'lib/callable.rb', line 57

def method_missing(method, *args)
  method_name = method.to_s.camelize
  if match_data = method_name.match(/intersys_(.*)/)
    # Protection from errors in this method
    return super(method, *args)
  end
  if match_data = method_name.match(/(\w+)=/)
    return intersys_set(match_data.captures.first, args.first)
  end
  return intersys_get(method_name) if intersys_has_property?(method_name) && args.empty?
  begin
    return intersys_call(method_name, *args)
  rescue NoMethodError => e
  end
  begin
    return intersys_call("%"+method_name, *args)
  rescue NoMethodError => e
  end
  super(method, *args)
end

Instance Method Details

#intersys_call(method_name, *args) ⇒ Object Also known as: call

call class method



34
35
36
# File 'lib/callable.rb', line 34

def intersys_call(method_name, *args)
  intersys_method(method_name).call!(args)
end

#intersys_get(property) ⇒ Object

Get the specified property



48
49
50
# File 'lib/callable.rb', line 48

def intersys_get(property)
  intersys_property(property).get
end

#intersys_has_method?(method) ⇒ Boolean

Returns:

  • (Boolean)


43
44
45
# File 'lib/callable.rb', line 43

def intersys_has_method?(method)
  self.intersys_reflector._methods.to_a.include?(method)
end

#intersys_has_property?(property) ⇒ Boolean

Returns:

  • (Boolean)


39
40
41
# File 'lib/callable.rb', line 39

def intersys_has_property?(property)
  self.intersys_reflector.properties.to_a.include?(property)
end

#intersys_method(name) ⇒ Object

Loads method definition with required name for required object for internal use only



28
29
30
# File 'lib/callable.rb', line 28

def intersys_method(name)
  Method.new(database, class_name, name.to_s, self)
end

#intersys_methodsObject

returns list of methods for this class



10
11
12
# File 'lib/callable.rb', line 10

def intersys_methods
  @methods ||= intersys_reflector._methods
end

#intersys_propertiesObject

returns list of properties for current class



15
16
17
# File 'lib/callable.rb', line 15

def intersys_properties
  @properties ||= intersys_reflector.properties
end

#intersys_property(name) ⇒ Object

Loads property definition with required name for required object for internal use only



22
23
24
# File 'lib/callable.rb', line 22

def intersys_property(name)
  Property.new(database, class_name, name.to_s, self)
end

#intersys_reflectorObject

Returns ClassDefinition object for current class



5
6
7
# File 'lib/callable.rb', line 5

def intersys_reflector
  @reflector ||= Intersys::Reflection::ClassDefinition.open(class_name)
end

#intersys_set(property, value) ⇒ Object

Set the specified property



53
54
55
# File 'lib/callable.rb', line 53

def intersys_set(property, value)
  intersys_property(property).set(value)
end