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
- #rule_set ⇒ Object
- #valid_attributes ⇒ Object
- #valid_parameter_keys ⇒ Object
Instance Method Details
#evaluate(attributes = {}) ⇒ Object
18 19 20 21 22 |
# File 'lib/rules/rule.rb', line 18 def evaluate(attributes = {}) lhv = lhs_parameter_value(attributes) rhv = rhs_parameter_value(attributes) if evaluator.requires_rhs? evaluator.evaluate(lhv, rhv) end |
#evaluator ⇒ Object
24 25 26 |
# File 'lib/rules/rule.rb', line 24 def evaluator @evaluator ||= evaluator_key ? Evaluators.list[evaluator_key.to_sym] : nil end |
#evaluator_key ⇒ Object
36 37 38 |
# File 'lib/rules/rule.rb', line 36 def evaluator_key key_from_store :evaluator_key end |
#lhs_parameter ⇒ Object
57 58 59 |
# File 'lib/rules/rule.rb', line 57 def lhs_parameter @lhs_parameter ||= lhs_parameter_key ? parameter_from_key(lhs_parameter_key) : nil end |
#lhs_parameter_key ⇒ Object
28 29 30 |
# File 'lib/rules/rule.rb', line 28 def lhs_parameter_key key_from_store :lhs_parameter_key end |
#lhs_parameter_value(attributes = {}) ⇒ Object
40 41 42 |
# File 'lib/rules/rule.rb', line 40 def lhs_parameter_value(attributes = {}) lhs_parameter.try(:evaluate, attributes) end |
#requires_rhs? ⇒ Boolean
69 70 71 |
# File 'lib/rules/rule.rb', line 69 def requires_rhs? evaluator ? evaluator.requires_rhs? : false end |
#rhs_parameter ⇒ Object
53 54 55 |
# File 'lib/rules/rule.rb', line 53 def rhs_parameter rhs_parameter_key ? parameter_from_key(rhs_parameter_key) : rhs_parameter_raw end |
#rhs_parameter_key ⇒ Object
32 33 34 |
# File 'lib/rules/rule.rb', line 32 def rhs_parameter_key key_from_store :rhs_parameter_key end |
#rhs_parameter_value(attributes = {}) ⇒ Object
44 45 46 47 48 49 50 51 |
# File 'lib/rules/rule.rb', line 44 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 |
#rule_set ⇒ Object
73 74 75 |
# File 'lib/rules/rule.rb', line 73 def rule_set super || ObjectSpace.each_object(RuleSet).detect { |rs| rs.rules.include?(self) } end |
#valid_attributes ⇒ Object
65 66 67 |
# File 'lib/rules/rule.rb', line 65 def valid_attributes rule_set ? rule_set.attributes : {} end |
#valid_parameter_keys ⇒ Object
61 62 63 |
# File 'lib/rules/rule.rb', line 61 def valid_parameter_keys Parameters.constants.keys.map(&:to_s) + valid_attributes.keys.map(&:to_s) end |