Class: Checkoff::TaskSelectorEvaluator

Inherits:
Object
  • Object
show all
Defined in:
lib/checkoff/internal/task_selector_evaluator.rb

Overview

Evaluator task selectors against a task

Constant Summary collapse

FUNCTION_EVALUTORS =
[
  NotFunctionEvaluator,
  NilPFunctionEvaluator,
  TagPFunctionEvaluator,
  CustomFieldValueFunctionEvaluator,
  CustomFieldGidValueFunctionEvaluator,
  CustomFieldGidValueContainsAnyGidFunctionEvaluator,
  CustomFieldGidValueContainsAllGidsFunctionEvaluator,
  AndFunctionEvaluator,
  DuePFunctionEvaluator,
  DueDateSetPFunctionEvaluator,
].freeze

Instance Method Summary collapse

Constructor Details

#initialize(task:, tasks: Checkoff::Tasks.new) ⇒ TaskSelectorEvaluator

Returns a new instance of TaskSelectorEvaluator.



218
219
220
221
222
# File 'lib/checkoff/internal/task_selector_evaluator.rb', line 218

def initialize(task:,
               tasks: Checkoff::Tasks.new)
  @task = task
  @tasks = tasks
end

Instance Method Details

#evaluate(task_selector) ⇒ Object



237
238
239
240
241
242
243
244
245
246
247
248
249
250
# File 'lib/checkoff/internal/task_selector_evaluator.rb', line 237

def evaluate(task_selector)
  return true if task_selector == []

  FUNCTION_EVALUTORS.each do |evaluator_class|
    evaluator = evaluator_class.new(task_selector: task_selector,
                                    tasks: tasks)

    next unless evaluator.matches?

    return try_this_evaluator(task_selector, evaluator)
  end

  raise "Syntax issue trying to handle #{task_selector}"
end