checkoff 0.50.0 → 0.51.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/Gemfile.lock +1 -1
- data/config/definitions.rb +17 -1
- data/lib/checkoff/internal/task_selector_evaluator.rb +49 -6
- data/lib/checkoff/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: ae2af0fc7d0e29eadef095ae0987a8be0deed073e5772991be91c6edf0bc06dd
|
|
4
|
+
data.tar.gz: ae20ac97a3675df6e6438167f8bf40a0524a6cae0e89e186330e2c770c8172c7
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 42d03ee1caf0c8c96ae6404575475a3a6ee7a71883434c4ec1085001b419f5556d2947a4b048a0452678a2805e653e098327858ecb43e257fc295e6cd47bf4e9
|
|
7
|
+
data.tar.gz: f68d1acf02c47ab02ddf284469606d50589da4faad6a6c1536540d3a04e5812647200e661586461491d655fc65eed7aad3274c5dd92349af69ac90cb3837a3e3
|
data/Gemfile.lock
CHANGED
data/config/definitions.rb
CHANGED
|
@@ -4,9 +4,21 @@
|
|
|
4
4
|
# @!parse
|
|
5
5
|
# class Time
|
|
6
6
|
# class << self
|
|
7
|
-
# # @param
|
|
7
|
+
# # @param time [String]
|
|
8
8
|
# # @return [Time]
|
|
9
|
+
# def parse(time); end
|
|
10
|
+
# end
|
|
11
|
+
# # https://ruby-doc.org/3.2.2/exts/date/Time.html#method-i-to_date#
|
|
12
|
+
# # @return [Date]
|
|
13
|
+
# def to_date; end
|
|
14
|
+
# end
|
|
15
|
+
# class Date
|
|
16
|
+
# class << self
|
|
17
|
+
# # @param date [String]
|
|
18
|
+
# # @return [Date]
|
|
9
19
|
# def parse(date); end
|
|
20
|
+
# # @return [Date]
|
|
21
|
+
# def today; end
|
|
10
22
|
# end
|
|
11
23
|
# end
|
|
12
24
|
# module Asana
|
|
@@ -26,6 +38,10 @@
|
|
|
26
38
|
# module Resources
|
|
27
39
|
# # https://developers.asana.com/reference/gettask
|
|
28
40
|
# class Task
|
|
41
|
+
# # @return [String,nil]
|
|
42
|
+
# def due_at; end
|
|
43
|
+
# # @return [String,nil]
|
|
44
|
+
# def due_on; end
|
|
29
45
|
# # @return [Hash<String, String>, nil]
|
|
30
46
|
# def assignee; end
|
|
31
47
|
# # @return [String, nil]
|
|
@@ -38,9 +38,21 @@ module Checkoff
|
|
|
38
38
|
# @sg-ignore
|
|
39
39
|
# @return [Date, nil]
|
|
40
40
|
def pull_date_field_by_name_or_raise(task, field_name)
|
|
41
|
-
|
|
41
|
+
if field_name == :modified
|
|
42
|
+
return Time.parse(task.modified_at).to_date unless task.modified_at.nil?
|
|
42
43
|
|
|
43
|
-
|
|
44
|
+
return nil
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
if field_name == :due
|
|
48
|
+
return Time.parse(task.due_at).to_date unless task.due_at.nil?
|
|
49
|
+
|
|
50
|
+
return Date.parse(task.due_on) unless task.due_on.nil?
|
|
51
|
+
|
|
52
|
+
return nil
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
raise "Teach me how to handle field #{field_name}"
|
|
44
56
|
end
|
|
45
57
|
|
|
46
58
|
# @sg-ignore
|
|
@@ -372,13 +384,43 @@ module Checkoff
|
|
|
372
384
|
#
|
|
373
385
|
# @return [Boolean]
|
|
374
386
|
def evaluate(task, field_name, num_days)
|
|
375
|
-
|
|
387
|
+
date = pull_date_field_by_name_or_raise(task, field_name)
|
|
376
388
|
|
|
377
|
-
return false if
|
|
389
|
+
return false if date.nil?
|
|
378
390
|
|
|
379
|
-
n_days_ago = (Time.now - (num_days * 24 * 60 * 60))
|
|
380
391
|
# @sg-ignore
|
|
381
|
-
|
|
392
|
+
n_days_ago = Date.today - num_days
|
|
393
|
+
# @sg-ignore
|
|
394
|
+
date < n_days_ago
|
|
395
|
+
end
|
|
396
|
+
end
|
|
397
|
+
|
|
398
|
+
# :field_greater_than_or_equal_to_n_days_from_today
|
|
399
|
+
class FieldGreaterThanOrEqualToNDaysFromTodayFunctionEvaluator < FunctionEvaluator
|
|
400
|
+
FUNCTION_NAME = :field_greater_than_or_equal_to_n_days_from_today
|
|
401
|
+
|
|
402
|
+
def matches?
|
|
403
|
+
fn?(task_selector, FUNCTION_NAME)
|
|
404
|
+
end
|
|
405
|
+
|
|
406
|
+
def evaluate_arg?(_index)
|
|
407
|
+
false
|
|
408
|
+
end
|
|
409
|
+
|
|
410
|
+
# @param task [Asana::Resources::Task]
|
|
411
|
+
# @param field_name [Symbol]
|
|
412
|
+
# @param num_days [Integer]
|
|
413
|
+
#
|
|
414
|
+
# @return [Boolean]
|
|
415
|
+
def evaluate(task, field_name, num_days)
|
|
416
|
+
date = pull_date_field_by_name_or_raise(task, field_name)
|
|
417
|
+
|
|
418
|
+
return false if date.nil?
|
|
419
|
+
|
|
420
|
+
# @sg-ignore
|
|
421
|
+
n_days_from_today = Date.today + num_days
|
|
422
|
+
# @sg-ignore
|
|
423
|
+
date >= n_days_from_today
|
|
382
424
|
end
|
|
383
425
|
end
|
|
384
426
|
|
|
@@ -481,6 +523,7 @@ module Checkoff
|
|
|
481
523
|
Checkoff::TaskSelectorClasses::UnassignedPFunctionEvaluator,
|
|
482
524
|
Checkoff::TaskSelectorClasses::DueDateSetPFunctionEvaluator,
|
|
483
525
|
Checkoff::TaskSelectorClasses::FieldLessThanNDaysAgoFunctionEvaluator,
|
|
526
|
+
Checkoff::TaskSelectorClasses::FieldGreaterThanOrEqualToNDaysFromTodayFunctionEvaluator,
|
|
484
527
|
Checkoff::TaskSelectorClasses::CustomFieldLessThanNDaysFromNowFunctionEvaluator,
|
|
485
528
|
Checkoff::TaskSelectorClasses::CustomFieldGreaterThanOrEqualToNDaysFromNowFunctionEvaluator,
|
|
486
529
|
Checkoff::TaskSelectorClasses::StringLiteralEvaluator,
|
data/lib/checkoff/version.rb
CHANGED