Module: Intersys::Callable

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

Instance Method Summary collapse

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(method, *args) ⇒ Object



87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
# File 'lib/intersys.rb', line 87

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



64
65
66
# File 'lib/intersys.rb', line 64

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

#intersys_get(property) ⇒ Object

Get the specified property



78
79
80
# File 'lib/intersys.rb', line 78

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

#intersys_has_method?(method) ⇒ Boolean

Returns:

  • (Boolean)


73
74
75
# File 'lib/intersys.rb', line 73

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

#intersys_has_property?(property) ⇒ Boolean

Returns:

  • (Boolean)


69
70
71
# File 'lib/intersys.rb', line 69

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



58
59
60
# File 'lib/intersys.rb', line 58

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

#intersys_methodsObject

returns list of methods for this class



40
41
42
# File 'lib/intersys.rb', line 40

def intersys_methods
  @methods ||= intersys_reflector._methods
end

#intersys_propertiesObject

returns list of properties for current class



45
46
47
# File 'lib/intersys.rb', line 45

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



52
53
54
# File 'lib/intersys.rb', line 52

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

#intersys_reflectorObject

Returns ClassDefinition object for current class



35
36
37
# File 'lib/intersys.rb', line 35

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

#intersys_set(property, value) ⇒ Object

Set the specified property



83
84
85
# File 'lib/intersys.rb', line 83

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