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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2a26bf5e53147ab791087492c23a9a050c6bdeef1d0edadba9a4d3d4741c32bf
4
- data.tar.gz: 403940c20a3e08c11904192168fbd6d0df95b012cd17e025148a777223b0f30c
3
+ metadata.gz: 48f7926e53c17c01d34979e6e179e7de9f9c3f75e4b525ad198c12c774d2187e
4
+ data.tar.gz: faba1965ff8947718c5118a30d4271a1ca8445ff43722f3fe0cfc77b0eb25e38
5
5
  SHA512:
6
- metadata.gz: a5421aa9a82b335176e2cd98e0bba600acbaa61cc5e8c45fd876c13eeb5d2d1d750740f56a92cf8f556d79faf7b8ac162452d7ff6d30dff9719df5ffeba4930f
7
- data.tar.gz: 8dd35cf8d9009cb1bf76fd0b662a0d5bbde874a25c7cad914424131dc8d5e508ce0e39f0c2ba690b2ff3936bda3076ea9b6ec1eff6416ea032cd24bb0b10da59
6
+ metadata.gz: 396211f82f8e9636af8c46ee4049a7a5fae6278df3bd95f41bfb7350ca5cfe12fcc45544dac8800a4a2d7a2a8fd811a787657dad1d9c311c8fa1cdc989ba6d5a
7
+ data.tar.gz: 81fa41307abbb32f576411fa147cbbf845eb341e086ab8697b2c715e4dd756b40709e84f471881ef0e192f77fce8f80beecc56586d3abad395a979de9078f2b7
data/.solargraph.yml CHANGED
@@ -3,6 +3,9 @@ include:
3
3
  - "**/*.rb"
4
4
  - ".git-hooks/**/*.rb"
5
5
  exclude:
6
+ - spec/**/*
7
+ - feature/**/*
8
+ - test/**/*
6
9
  - vendor/**/*
7
10
  - ".bundle/**/*"
8
11
  require: []
data/Gemfile.lock CHANGED
@@ -12,7 +12,7 @@ GIT
12
12
  PATH
13
13
  remote: .
14
14
  specs:
15
- checkoff (0.54.0)
15
+ checkoff (0.56.0)
16
16
  activesupport
17
17
  asana (> 0.10.0)
18
18
  cache_method
@@ -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
@@ -3,5 +3,5 @@
3
3
  # Command-line and gem client for Asana (unofficial)
4
4
  module Checkoff
5
5
  # Version of library
6
- VERSION = '0.54.0'
6
+ VERSION = '0.56.0'
7
7
  end
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.54.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-14 00:00:00.000000000 Z
11
+ date: 2023-09-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport