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
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
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
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_methods ⇒ Object
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_properties ⇒ Object
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_reflector ⇒ Object
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 |