Module: Intersys::Callable
Instance Method Summary collapse
-
#intersys_call(method_name, *args) ⇒ Object
(also: #call)
call class method.
-
#intersys_get(property) ⇒ Object
Get the specified property.
- #intersys_has_method?(method) ⇒ Boolean
- #intersys_has_property?(property) ⇒ Boolean
-
#intersys_method(name) ⇒ Object
Loads method definition with required name for required object for internal use only.
-
#intersys_methods ⇒ Object
returns list of methods for this class.
-
#intersys_properties ⇒ Object
returns list of properties for current class.
-
#intersys_property(name) ⇒ Object
Loads property definition with required name for required object for internal use only.
-
#intersys_reflector ⇒ Object
Returns ClassDefinition object for current class.
-
#intersys_set(property, value) ⇒ Object
Set the specified property.
- #method_missing(method, *args) ⇒ Object
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
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
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_methods ⇒ Object
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_properties ⇒ Object
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_reflector ⇒ Object
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 |