Class: Rules::Rule
- Inherits:
-
ActiveRecord::Base
- Object
- ActiveRecord::Base
- Rules::Rule
- Defined in:
- lib/rules/rule.rb
Instance Method Summary collapse
- #evaluate(attributes = {}) ⇒ Object
- #evaluator ⇒ Object
- #evaluator_key ⇒ Object
- #lhs_parameter ⇒ Object
- #lhs_parameter_key ⇒ Object
- #lhs_parameter_value(attributes = {}) ⇒ Object
- #requires_rhs? ⇒ Boolean
- #rhs_parameter ⇒ Object
- #rhs_parameter_key ⇒ Object
- #rhs_parameter_value(attributes = {}) ⇒ Object
- #valid_attributes ⇒ Object
- #valid_parameter_keys ⇒ Object
Instance Method Details
#evaluate(attributes = {}) ⇒ Object
20 21 22 23 24 |
# File 'lib/rules/rule.rb', line 20 def evaluate(attributes = {}) lhv = lhs_parameter_value(attributes) rhv = rhs_parameter_value(attributes) if evaluator.requires_rhs? evaluator.evaluate(lhv, rhv) end |
#evaluator ⇒ Object
26 27 28 |
# File 'lib/rules/rule.rb', line 26 def evaluator @evaluator ||= evaluator_key ? Evaluators.list[evaluator_key.to_sym] : nil end |
#evaluator_key ⇒ Object
38 39 40 |
# File 'lib/rules/rule.rb', line 38 def evaluator_key key_from_store :evaluator_key end |
#lhs_parameter ⇒ Object
59 60 61 |
# File 'lib/rules/rule.rb', line 59 def lhs_parameter @lhs_parameter ||= lhs_parameter_key ? parameter_from_key(lhs_parameter_key) : nil end |
#lhs_parameter_key ⇒ Object
30 31 32 |
# File 'lib/rules/rule.rb', line 30 def lhs_parameter_key key_from_store :lhs_parameter_key end |
#lhs_parameter_value(attributes = {}) ⇒ Object
42 43 44 |
# File 'lib/rules/rule.rb', line 42 def lhs_parameter_value(attributes = {}) lhs_parameter.try(:evaluate, attributes) end |
#requires_rhs? ⇒ Boolean
71 72 73 |
# File 'lib/rules/rule.rb', line 71 def requires_rhs? evaluator ? evaluator.requires_rhs? : false end |
#rhs_parameter ⇒ Object
55 56 57 |
# File 'lib/rules/rule.rb', line 55 def rhs_parameter rhs_parameter_key ? parameter_from_key(rhs_parameter_key) : rhs_parameter_raw end |
#rhs_parameter_key ⇒ Object
34 35 36 |
# File 'lib/rules/rule.rb', line 34 def rhs_parameter_key key_from_store :rhs_parameter_key end |
#rhs_parameter_value(attributes = {}) ⇒ Object
46 47 48 49 50 51 52 53 |
# File 'lib/rules/rule.rb', line 46 def rhs_parameter_value(attributes = {}) if rhs_parameter.respond_to?(:evaluate) rhs_parameter.try(:evaluate, attributes) else rhv = Parameters::Parameter.cast(rhs_parameter_raw, lhs_parameter.try(:type)) Parameters::Parameter.cast(rhv, evaluator.try(:type_for_rhs)) end end |
#valid_attributes ⇒ Object
67 68 69 |
# File 'lib/rules/rule.rb', line 67 def valid_attributes rule_set ? rule_set.attributes : {} end |
#valid_parameter_keys ⇒ Object
63 64 65 |
# File 'lib/rules/rule.rb', line 63 def valid_parameter_keys Parameters.constants.keys.map(&:to_s) + valid_attributes.keys.map(&:to_s) end |