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
|