Sha256: 78a63c21d060f0e39f0a3727a3412223036196bc0263d828479b8d55d0eb223e
Contents?: true
Size: 1.9 KB
Versions: 55
Compression:
Stored size: 1.9 KB
Contents
# frozen_string_literal: true require_relative 'project/function_evaluator' module Checkoff module SelectorClasses # Project selector classes module Project # :due_date function class DueDateFunctionEvaluator < FunctionEvaluator FUNCTION_NAME = :due_date def matches? fn?(selector, FUNCTION_NAME) end # @param resource [Asana::Resources::Project] # @return [String, nil] def evaluate(resource) resource.due_date end end # :ready? function class ReadyPFunctionEvaluator < FunctionEvaluator FUNCTION_NAME = :ready? def matches? fn?(selector, FUNCTION_NAME) end # @param project [Asana::Resources::Project] # @param period [Symbol<:now_or_before,:this_week>] # @return [Boolean] def evaluate(project, period = :now_or_before) @projects.project_ready?(project, period: period) end end # :in_portfolio_named? function class InPortfolioNamedPFunctionEvaluator < FunctionEvaluator FUNCTION_NAME = :in_portfolio_named? def matches? fn?(selector, FUNCTION_NAME) end # @param project [Asana::Resources::Project] # @param portfolio_name [String] # @param workspace_name [String, nil] # @param extra_project_fields [Array<String>] # # @return [Boolean] def evaluate(project, portfolio_name, workspace_name: nil, extra_project_fields: []) workspace_name ||= project.workspace&.name workspace_name ||= @workspaces.default_workspace.name projects = @portfolios.projects_in_portfolio(workspace_name, portfolio_name, extra_project_fields: extra_project_fields) projects.any? { |p| p.name == project.name } end end end end end
Version data entries
55 entries across 55 versions & 1 rubygems