checkoff 0.54.0 → 0.56.0

Sign up to get free protection for your applications and to get access to all the features.
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