Class: Checkoff::SelectorEvaluator
- Inherits:
-
Object
- Object
- Checkoff::SelectorEvaluator
- Defined in:
- lib/checkoff/internal/selector_evaluator.rb,
sig/checkoff.rbs
Overview
Base class to evaluate Asana resource selectors against an Asana resource
Direct Known Subclasses
ProjectSelectorEvaluator, SectionSelectorEvaluator, TaskSelectorEvaluator
Instance Attribute Summary collapse
- #item ⇒ Asana::Resources::Resource readonly
Instance Method Summary collapse
-
#evaluate(selector) ⇒ bool, ...
@param
selector. -
#evaluate_args(selector, evaluator) ⇒ ::Array[untyped]
@param
selector. - #function_evaluators ⇒ Array<Class<Checkoff::SelectorClasses::FunctionEvaluator>>
- #initializer_kwargs ⇒ Hash
-
#try_this_evaluator(selector, evaluator) ⇒ bool, ...
@param
selector.
Instance Attribute Details
#item ⇒ Asana::Resources::Resource (readonly)
66 67 68 |
# File 'lib/checkoff/internal/selector_evaluator.rb', line 66 def item @item end |
Instance Method Details
#evaluate(selector) ⇒ bool, ...
@param selector
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
# File 'lib/checkoff/internal/selector_evaluator.rb', line 9 def evaluate(selector) return true if selector.empty? function_evaluators.each do |evaluator_class| # @type [Checkoff::SelectorClasses::FunctionEvaluator] evaluator = evaluator_class.new(selector:, **initializer_kwargs) next unless evaluator.matches? return try_this_evaluator(selector, evaluator) end raise "Syntax issue trying to handle #{selector.inspect}" end |
#evaluate_args(selector, evaluator) ⇒ ::Array[untyped]
@param selector
@param evaluator
40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/checkoff/internal/selector_evaluator.rb', line 40 def evaluate_args(selector, evaluator) return [] unless selector.is_a?(Array) rest = selector[1..] return [] unless rest rest.map.with_index do |item, index| if evaluator.evaluate_arg?(index) evaluate(item) else item end end end |
#function_evaluators ⇒ Array<Class<Checkoff::SelectorClasses::FunctionEvaluator>>
33 34 35 |
# File 'lib/checkoff/internal/selector_evaluator.rb', line 33 def function_evaluators raise 'Implement me!' end |
#initializer_kwargs ⇒ Hash
28 29 30 |
# File 'lib/checkoff/internal/selector_evaluator.rb', line 28 def initializer_kwargs {} end |
#try_this_evaluator(selector, evaluator) ⇒ bool, ...
@param selector
@param evaluator
58 59 60 61 62 63 |
# File 'lib/checkoff/internal/selector_evaluator.rb', line 58 def try_this_evaluator(selector, evaluator) # if selector is an array evaluated_args = evaluate_args(selector, evaluator) evaluator.evaluate(item, *evaluated_args) end |