Class: Checkoff::ProjectSelectors

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

Overview

Filter lists of projects using declarative selectors.

Constant Summary collapse

MINUTE =
60
HOUR =
MINUTE * 60
DAY =
24 * HOUR
REALLY_LONG_CACHE_TIME =
HOUR * 1
LONG_CACHE_TIME =
MINUTE * 15
SHORT_CACHE_TIME =
MINUTE

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(config: Checkoff::Internal::ConfigLoader.load(:asana), workspaces: Checkoff::Workspaces.new(config: config), projects: Checkoff::Projects.new(config: config), custom_fields: Checkoff::CustomFields.new(config: config), portfolios: Checkoff::Portfolios.new(config: config), clients: Checkoff::Clients.new(config: config), client: clients.client) ⇒ ProjectSelectors

Returns a new instance of ProjectSelectors.

Parameters:

  • config (Hash<Symbol, Object>) (defaults to: Checkoff::Internal::ConfigLoader.load(:asana))
  • workspaces (Checkoff::Workspaces) (defaults to: Checkoff::Workspaces.new(config: config))
  • projects (Checkoff::Projects) (defaults to: Checkoff::Projects.new(config: config))
  • custom_fields (Checkoff::CustomFields) (defaults to: Checkoff::CustomFields.new(config: config))
  • portfolios (Checkoff::Portfolios) (defaults to: Checkoff::Portfolios.new(config: config))
  • clients (Checkoff::Clients) (defaults to: Checkoff::Clients.new(config: config))
  • client (Asana::Client) (defaults to: clients.client)


29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/checkoff/project_selectors.rb', line 29

def initialize(config: Checkoff::Internal::ConfigLoader.load(:asana),
               workspaces: Checkoff::Workspaces.new(config: config),
               projects: Checkoff::Projects.new(config: config),
               custom_fields: Checkoff::CustomFields.new(config: config),
               portfolios: Checkoff::Portfolios.new(config: config),
               clients: Checkoff::Clients.new(config: config),
               client: clients.client)
  @workspaces = workspaces
  @projects = projects
  @custom_fields = custom_fields
  @portfolios = portfolios
  @client = client
end

Class Method Details

.runvoid

This method returns an undefined value.



74
75
76
77
78
79
80
# File 'lib/checkoff/project_selectors.rb', line 74

def run
  # workspace_name = ARGV[0] || raise('Please pass workspace name as first argument')
  # project_selector_name = ARGV[1] || raise('Please pass project_selector name as second argument')
  # project_selectors = Checkoff::ProjectSelectors.new
  # project_selector = project_selectors.project_selector_or_raise(workspace_name, project_selector_name)
  # puts "Results: #{project_selector}"
end

Instance Method Details

#filter_via_project_selector(project, project_selector) ⇒ Boolean

Parameters:

  • project (Asana::Resources::Project)
  • project_selector (Array<(Symbol, Array)>)

    Filter based on project details. Examples: [:tag, ‘foo’] [:not, [:tag, ‘foo’]] [:tag, ‘foo’]

Returns:

  • (Boolean)


47
48
49
50
51
# File 'lib/checkoff/project_selectors.rb', line 47

def filter_via_project_selector(project, project_selector)
  evaluator = ProjectSelectorEvaluator.new(project: project, projects: projects, custom_fields: custom_fields,
                                           workspaces: workspaces, portfolios: portfolios)
  evaluator.evaluate(project_selector)
end