Class: Proforma::ExtendedEvaluator
- Inherits:
-
Object
- Object
- Proforma::ExtendedEvaluator
- Defined in:
- lib/proforma/extended_evaluator.rb,
lib/proforma/extended_evaluator/version.rb,
lib/proforma/extended_evaluator/resolver.rb,
lib/proforma/extended_evaluator/formatter.rb
Overview
This class provides robust functionality for value resolution and text templating. For value resolution it uses its own dot-notation and message-based object traversal algorithm. For text templating it uses the Stringento library.
Defined Under Namespace
Constant Summary collapse
- VERSION =
'1.1.0'
Instance Attribute Summary collapse
-
#formatter ⇒ Object
readonly
Returns the value of attribute formatter.
-
#resolver ⇒ Object
readonly
Returns the value of attribute resolver.
Instance Method Summary collapse
-
#initialize(formatter: Formatter.new, resolver: Resolver.new) ⇒ ExtendedEvaluator
constructor
A new instance of ExtendedEvaluator.
- #text(object, expression) ⇒ Object
- #value(object, expression) ⇒ Object
Constructor Details
#initialize(formatter: Formatter.new, resolver: Resolver.new) ⇒ ExtendedEvaluator
Returns a new instance of ExtendedEvaluator.
27 28 29 30 31 32 33 34 35 |
# File 'lib/proforma/extended_evaluator.rb', line 27 def initialize(formatter: Formatter.new, resolver: Resolver.new) raise ArgumentError, 'formatter is required' unless formatter raise ArgumentError, 'resolver is required' unless resolver @formatter = formatter @resolver = resolver freeze end |
Instance Attribute Details
#formatter ⇒ Object (readonly)
Returns the value of attribute formatter.
25 26 27 |
# File 'lib/proforma/extended_evaluator.rb', line 25 def formatter @formatter end |
#resolver ⇒ Object (readonly)
Returns the value of attribute resolver.
25 26 27 |
# File 'lib/proforma/extended_evaluator.rb', line 25 def resolver @resolver end |
Instance Method Details
#text(object, expression) ⇒ Object
41 42 43 44 45 46 47 48 49 50 |
# File 'lib/proforma/extended_evaluator.rb', line 41 def text(object, expression) record = object.is_a?(Array) || object.nil? ? {} : object Stringento.evaluate( expression.to_s, record, resolver: resolver, formatter: formatter ) end |
#value(object, expression) ⇒ Object
37 38 39 |
# File 'lib/proforma/extended_evaluator.rb', line 37 def value(object, expression) resolver.resolve(expression, object) end |