Module: PaynetEasy::PaynetEasyApi::Util::PropertyAccessor
- Defined in:
- lib/paynet_easy/paynet_easy_api/util/property_accessor.rb
Class Method Summary collapse
-
.get_value(object, property_path, fail_on_error = true) ⇒ Object|NilClass
Get property value by property path.
-
.set_value(object, property_path, value, fail_on_error = true) ⇒ Object|NilClass
Set property value by property path.
Class Method Details
.get_value(object, property_path, fail_on_error = true) ⇒ Object|NilClass
Get property value by property path.
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
# File 'lib/paynet_easy/paynet_easy_api/util/property_accessor.rb', line 10 def self.get_value(object, property_path, fail_on_error = true) if !property_path.include? '.' if object.respond_to? property_path return object.send property_path elsif fail_on_error raise RuntimeError, "Expected object with method '#{property_path}'" else return end end first_property, path_rest = property_path.split '.', 2 first_object = object.send first_property if first_object return self.get_value first_object, path_rest, fail_on_error elsif fail_on_error raise RuntimeError, "Object expected for property path '#{first_property}'" end end |
.set_value(object, property_path, value, fail_on_error = true) ⇒ Object|NilClass
Set property value by property path.
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
# File 'lib/paynet_easy/paynet_easy_api/util/property_accessor.rb', line 39 def self.set_value(object, property_path, value, fail_on_error = true) if !property_path.include? '.' if object.respond_to? "#{property_path}=" return object.send "#{property_path}=", value elsif fail_on_error raise RuntimeError, "Expected object with method '#{property_path}='" else return end end first_property, path_rest = property_path.split '.', 2 first_object = object.send(first_property) if first_object return self.set_value first_object, path_rest, value, fail_on_error elsif fail_on_error raise RuntimeError, "Object expected for property path '#{first_property}'" end end |