checkoff 0.54.0 → 0.56.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
 - data/.solargraph.yml +3 -0
 - data/Gemfile.lock +1 -1
 - data/lib/checkoff/internal/task_selector_evaluator.rb +54 -0
 - data/lib/checkoff/version.rb +1 -1
 - metadata +2 -2
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA256:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 48f7926e53c17c01d34979e6e179e7de9f9c3f75e4b525ad198c12c774d2187e
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: faba1965ff8947718c5118a30d4271a1ca8445ff43722f3fe0cfc77b0eb25e38
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 396211f82f8e9636af8c46ee4049a7a5fae6278df3bd95f41bfb7350ca5cfe12fcc45544dac8800a4a2d7a2a8fd811a787657dad1d9c311c8fa1cdc989ba6d5a
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 81fa41307abbb32f576411fa147cbbf845eb341e086ab8697b2c715e4dd756b40709e84f471881ef0e192f77fce8f80beecc56586d3abad395a979de9078f2b7
         
     | 
    
        data/.solargraph.yml
    CHANGED
    
    
    
        data/Gemfile.lock
    CHANGED
    
    
| 
         @@ -163,6 +163,26 @@ module Checkoff 
     | 
|
| 
       163 
163 
     | 
    
         
             
                  end
         
     | 
| 
       164 
164 
     | 
    
         
             
                end
         
     | 
| 
       165 
165 
     | 
    
         | 
| 
      
 166 
     | 
    
         
            +
                # :or function
         
     | 
| 
      
 167 
     | 
    
         
            +
                #
         
     | 
| 
      
 168 
     | 
    
         
            +
                # Does not yet shortcut, but may in future - be careful with side
         
     | 
| 
      
 169 
     | 
    
         
            +
                # effects!
         
     | 
| 
      
 170 
     | 
    
         
            +
                class OrFunctionEvaluator < FunctionEvaluator
         
     | 
| 
      
 171 
     | 
    
         
            +
                  FUNCTION_NAME = :or
         
     | 
| 
      
 172 
     | 
    
         
            +
             
     | 
| 
      
 173 
     | 
    
         
            +
                  def matches?
         
     | 
| 
      
 174 
     | 
    
         
            +
                    fn?(task_selector, FUNCTION_NAME)
         
     | 
| 
      
 175 
     | 
    
         
            +
                  end
         
     | 
| 
      
 176 
     | 
    
         
            +
             
     | 
| 
      
 177 
     | 
    
         
            +
                  # @param _task [Asana::Resources::Task]
         
     | 
| 
      
 178 
     | 
    
         
            +
                  # @param lhs [Object]
         
     | 
| 
      
 179 
     | 
    
         
            +
                  # @param rhs [Object]
         
     | 
| 
      
 180 
     | 
    
         
            +
                  # @return [Object]
         
     | 
| 
      
 181 
     | 
    
         
            +
                  def evaluate(_task, lhs, rhs)
         
     | 
| 
      
 182 
     | 
    
         
            +
                    lhs || rhs
         
     | 
| 
      
 183 
     | 
    
         
            +
                  end
         
     | 
| 
      
 184 
     | 
    
         
            +
                end
         
     | 
| 
      
 185 
     | 
    
         
            +
             
     | 
| 
       166 
186 
     | 
    
         
             
                # :not function
         
     | 
| 
       167 
187 
     | 
    
         
             
                class NotFunctionEvaluator < FunctionEvaluator
         
     | 
| 
       168 
188 
     | 
    
         
             
                  FUNCTION_NAME = :not
         
     | 
| 
         @@ -484,6 +504,38 @@ module Checkoff 
     | 
|
| 
       484 
504 
     | 
    
         
             
                  end
         
     | 
| 
       485 
505 
     | 
    
         
             
                end
         
     | 
| 
       486 
506 
     | 
    
         | 
| 
      
 507 
     | 
    
         
            +
                # :last_story_created_less_than_n_days_ago function
         
     | 
| 
      
 508 
     | 
    
         
            +
                class LastStoryCreatedLessThanNDaysAgoFunctionEvaluator < FunctionEvaluator
         
     | 
| 
      
 509 
     | 
    
         
            +
                  FUNCTION_NAME = :last_story_created_less_than_n_days_ago
         
     | 
| 
      
 510 
     | 
    
         
            +
             
     | 
| 
      
 511 
     | 
    
         
            +
                  def matches?
         
     | 
| 
      
 512 
     | 
    
         
            +
                    fn?(task_selector, FUNCTION_NAME)
         
     | 
| 
      
 513 
     | 
    
         
            +
                  end
         
     | 
| 
      
 514 
     | 
    
         
            +
             
     | 
| 
      
 515 
     | 
    
         
            +
                  def evaluate_arg?(_index)
         
     | 
| 
      
 516 
     | 
    
         
            +
                    false
         
     | 
| 
      
 517 
     | 
    
         
            +
                  end
         
     | 
| 
      
 518 
     | 
    
         
            +
             
     | 
| 
      
 519 
     | 
    
         
            +
                  # @param task [Asana::Resources::Task]
         
     | 
| 
      
 520 
     | 
    
         
            +
                  # @param num_days [Integer]
         
     | 
| 
      
 521 
     | 
    
         
            +
                  # @param excluding_resource_subtypes [Array<String>]
         
     | 
| 
      
 522 
     | 
    
         
            +
                  # @return [Boolean]
         
     | 
| 
      
 523 
     | 
    
         
            +
                  def evaluate(task, num_days, excluding_resource_subtypes)
         
     | 
| 
      
 524 
     | 
    
         
            +
                    # for whatever reason, .last on the enumerable does not impose ordering; .to_a does!
         
     | 
| 
      
 525 
     | 
    
         
            +
             
     | 
| 
      
 526 
     | 
    
         
            +
                    # @type [Array<Asana::Resources::Story>]
         
     | 
| 
      
 527 
     | 
    
         
            +
                    stories = task.stories(per_page: 100).to_a.reject do |story|
         
     | 
| 
      
 528 
     | 
    
         
            +
                      excluding_resource_subtypes.include? story.resource_subtype
         
     | 
| 
      
 529 
     | 
    
         
            +
                    end
         
     | 
| 
      
 530 
     | 
    
         
            +
                    return true if stories.empty? # no stories == infinitely old!
         
     | 
| 
      
 531 
     | 
    
         
            +
             
     | 
| 
      
 532 
     | 
    
         
            +
                    last_story = stories.last
         
     | 
| 
      
 533 
     | 
    
         
            +
                    last_story_created_at = Time.parse(last_story.created_at)
         
     | 
| 
      
 534 
     | 
    
         
            +
                    n_days_ago = Time.now - (num_days * 24 * 60 * 60)
         
     | 
| 
      
 535 
     | 
    
         
            +
                    last_story_created_at < n_days_ago
         
     | 
| 
      
 536 
     | 
    
         
            +
                  end
         
     | 
| 
      
 537 
     | 
    
         
            +
                end
         
     | 
| 
      
 538 
     | 
    
         
            +
             
     | 
| 
       487 
539 
     | 
    
         
             
                # String literals
         
     | 
| 
       488 
540 
     | 
    
         
             
                class StringLiteralEvaluator < FunctionEvaluator
         
     | 
| 
       489 
541 
     | 
    
         
             
                  def matches?
         
     | 
| 
         @@ -560,6 +612,7 @@ module Checkoff 
     | 
|
| 
       560 
612 
     | 
    
         
             
                  Checkoff::TaskSelectorClasses::CustomFieldGidValueContainsAnyGidFunctionEvaluator,
         
     | 
| 
       561 
613 
     | 
    
         
             
                  Checkoff::TaskSelectorClasses::CustomFieldGidValueContainsAllGidsFunctionEvaluator,
         
     | 
| 
       562 
614 
     | 
    
         
             
                  Checkoff::TaskSelectorClasses::AndFunctionEvaluator,
         
     | 
| 
      
 615 
     | 
    
         
            +
                  Checkoff::TaskSelectorClasses::OrFunctionEvaluator,
         
     | 
| 
       563 
616 
     | 
    
         
             
                  Checkoff::TaskSelectorClasses::DuePFunctionEvaluator,
         
     | 
| 
       564 
617 
     | 
    
         
             
                  Checkoff::TaskSelectorClasses::UnassignedPFunctionEvaluator,
         
     | 
| 
       565 
618 
     | 
    
         
             
                  Checkoff::TaskSelectorClasses::DueDateSetPFunctionEvaluator,
         
     | 
| 
         @@ -567,6 +620,7 @@ module Checkoff 
     | 
|
| 
       567 
620 
     | 
    
         
             
                  Checkoff::TaskSelectorClasses::FieldGreaterThanOrEqualToNDaysFromTodayFunctionEvaluator,
         
     | 
| 
       568 
621 
     | 
    
         
             
                  Checkoff::TaskSelectorClasses::CustomFieldLessThanNDaysFromNowFunctionEvaluator,
         
     | 
| 
       569 
622 
     | 
    
         
             
                  Checkoff::TaskSelectorClasses::CustomFieldGreaterThanOrEqualToNDaysFromNowFunctionEvaluator,
         
     | 
| 
      
 623 
     | 
    
         
            +
                  Checkoff::TaskSelectorClasses::LastStoryCreatedLessThanNDaysAgoFunctionEvaluator,
         
     | 
| 
       570 
624 
     | 
    
         
             
                  Checkoff::TaskSelectorClasses::StringLiteralEvaluator,
         
     | 
| 
       571 
625 
     | 
    
         
             
                  Checkoff::TaskSelectorClasses::EstimateExceedsDurationFunctionEvaluator,
         
     | 
| 
       572 
626 
     | 
    
         
             
                ].freeze
         
     | 
    
        data/lib/checkoff/version.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | 
         @@ -1,14 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: checkoff
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.56.0
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Vince Broz
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire:
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: exe
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date: 2023-09- 
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2023-09-17 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
14 
     | 
    
         
             
              name: activesupport
         
     |