checkoff 0.48.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 +20 -1
- data/lib/checkoff/internal/task_selector_evaluator.rb +63 -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
|
@@ -24,7 +36,14 @@
|
|
24
36
|
# end
|
25
37
|
# class Collection < Asana::Resources::Collection; end
|
26
38
|
# module Resources
|
39
|
+
# # https://developers.asana.com/reference/gettask
|
27
40
|
# class Task
|
41
|
+
# # @return [String,nil]
|
42
|
+
# def due_at; end
|
43
|
+
# # @return [String,nil]
|
44
|
+
# def due_on; end
|
45
|
+
# # @return [Hash<String, String>, nil]
|
46
|
+
# def assignee; end
|
28
47
|
# # @return [String, nil]
|
29
48
|
# def html_notes; end
|
30
49
|
# class << self
|
@@ -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
|
@@ -231,6 +243,19 @@ module Checkoff
|
|
231
243
|
end
|
232
244
|
end
|
233
245
|
|
246
|
+
# :unassigned function
|
247
|
+
class UnassignedPFunctionEvaluator < FunctionEvaluator
|
248
|
+
def matches?
|
249
|
+
fn?(task_selector, :unassigned)
|
250
|
+
end
|
251
|
+
|
252
|
+
# @param task [Asana::Resources::Task]
|
253
|
+
# @return [Boolean]
|
254
|
+
def evaluate(task)
|
255
|
+
task.assignee.nil?
|
256
|
+
end
|
257
|
+
end
|
258
|
+
|
234
259
|
# :due_date_set function
|
235
260
|
class DueDateSetPFunctionEvaluator < FunctionEvaluator
|
236
261
|
FUNCTION_NAME = :due_date_set
|
@@ -359,13 +384,43 @@ module Checkoff
|
|
359
384
|
#
|
360
385
|
# @return [Boolean]
|
361
386
|
def evaluate(task, field_name, num_days)
|
362
|
-
|
387
|
+
date = pull_date_field_by_name_or_raise(task, field_name)
|
388
|
+
|
389
|
+
return false if date.nil?
|
390
|
+
|
391
|
+
# @sg-ignore
|
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)
|
363
417
|
|
364
|
-
return false if
|
418
|
+
return false if date.nil?
|
365
419
|
|
366
|
-
n_days_ago = (Time.now - (num_days * 24 * 60 * 60))
|
367
420
|
# @sg-ignore
|
368
|
-
|
421
|
+
n_days_from_today = Date.today + num_days
|
422
|
+
# @sg-ignore
|
423
|
+
date >= n_days_from_today
|
369
424
|
end
|
370
425
|
end
|
371
426
|
|
@@ -465,8 +520,10 @@ module Checkoff
|
|
465
520
|
Checkoff::TaskSelectorClasses::CustomFieldGidValueContainsAllGidsFunctionEvaluator,
|
466
521
|
Checkoff::TaskSelectorClasses::AndFunctionEvaluator,
|
467
522
|
Checkoff::TaskSelectorClasses::DuePFunctionEvaluator,
|
523
|
+
Checkoff::TaskSelectorClasses::UnassignedPFunctionEvaluator,
|
468
524
|
Checkoff::TaskSelectorClasses::DueDateSetPFunctionEvaluator,
|
469
525
|
Checkoff::TaskSelectorClasses::FieldLessThanNDaysAgoFunctionEvaluator,
|
526
|
+
Checkoff::TaskSelectorClasses::FieldGreaterThanOrEqualToNDaysFromTodayFunctionEvaluator,
|
470
527
|
Checkoff::TaskSelectorClasses::CustomFieldLessThanNDaysFromNowFunctionEvaluator,
|
471
528
|
Checkoff::TaskSelectorClasses::CustomFieldGreaterThanOrEqualToNDaysFromNowFunctionEvaluator,
|
472
529
|
Checkoff::TaskSelectorClasses::StringLiteralEvaluator,
|
data/lib/checkoff/version.rb
CHANGED