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[singleton(Checkoff::SelectorClasses::FunctionEvaluator)]
@sg-ignore.
- #initializer_kwargs ⇒ Hash
-
#try_this_evaluator(selector, evaluator) ⇒ bool, ...
@param
selector.
Instance Attribute Details
#item ⇒ Asana::Resources::Resource (readonly)
67 68 69 |
# File 'lib/checkoff/internal/selector_evaluator.rb', line 67 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 24 25 |
# 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] # @sg-ignore evaluator = evaluator_class.new(selector:, **initializer_kwargs) next unless evaluator.matches? # @sg-ignore 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
43 44 45 46 47 48 49 50 51 52 53 54 |
# File 'lib/checkoff/internal/selector_evaluator.rb', line 43 def evaluate_args(selector, evaluator) return [] unless selector.is_a?(Array) # @sg-ignore selector[1..].map.with_index do |item, index| if evaluator.evaluate_arg?(index) evaluate(item) else item end end end |
#function_evaluators ⇒ ::Array[singleton(Checkoff::SelectorClasses::FunctionEvaluator)]
@sg-ignore
36 37 38 |
# File 'lib/checkoff/internal/selector_evaluator.rb', line 36 def function_evaluators raise 'Implement me!' end |
#initializer_kwargs ⇒ Hash
30 31 32 |
# File 'lib/checkoff/internal/selector_evaluator.rb', line 30 def initializer_kwargs {} end |
#try_this_evaluator(selector, evaluator) ⇒ bool, ...
@param selector
@param evaluator
59 60 61 62 63 64 |
# File 'lib/checkoff/internal/selector_evaluator.rb', line 59 def try_this_evaluator(selector, evaluator) # if selector is an array evaluated_args = evaluate_args(selector, evaluator) evaluator.evaluate(item, *evaluated_args) end |