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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 71946ece124fe806bdf1691c15496de26d40aee2362a9f824693dcd6e04b1f4a
4
- data.tar.gz: 2b45ca097930338ae0ed79b7b2610e64cbe0e95ed47e9265d5d1df4292650e86
3
+ metadata.gz: ae2af0fc7d0e29eadef095ae0987a8be0deed073e5772991be91c6edf0bc06dd
4
+ data.tar.gz: ae20ac97a3675df6e6438167f8bf40a0524a6cae0e89e186330e2c770c8172c7
5
5
  SHA512:
6
- metadata.gz: 14bce3ce48c9aec936250d6bf8706a70c7e5ad53a3a526fd10c2d78a49df29632493506a362a6c107863b84e9ce2b3817aa9e282787978f033278936604be3c5
7
- data.tar.gz: 660962aad915c791b9efdc899004ecc3ca9528a94107c88f8b20f344a393114b7d524dd052a612c162133e441739ac63764c65b1991645d42db14c0f698dda69
6
+ metadata.gz: 42d03ee1caf0c8c96ae6404575475a3a6ee7a71883434c4ec1085001b419f5556d2947a4b048a0452678a2805e653e098327858ecb43e257fc295e6cd47bf4e9
7
+ data.tar.gz: f68d1acf02c47ab02ddf284469606d50589da4faad6a6c1536540d3a04e5812647200e661586461491d655fc65eed7aad3274c5dd92349af69ac90cb3837a3e3
data/Gemfile.lock CHANGED
@@ -12,7 +12,7 @@ GIT
12
12
  PATH
13
13
  remote: .
14
14
  specs:
15
- checkoff (0.48.0)
15
+ checkoff (0.51.0)
16
16
  activesupport
17
17
  asana (> 0.10.0)
18
18
  cache_method
@@ -4,9 +4,21 @@
4
4
  # @!parse
5
5
  # class Time
6
6
  # class << self
7
- # # @param date [String]
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
- raise "Teach me how to handle field #{field_name}" unless field_name == :modified_at
41
+ if field_name == :modified
42
+ return Time.parse(task.modified_at).to_date unless task.modified_at.nil?
42
43
 
43
- task.modified_at
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
- time = pull_date_field_by_name_or_raise(task, field_name)
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 time.nil?
418
+ return false if date.nil?
365
419
 
366
- n_days_ago = (Time.now - (num_days * 24 * 60 * 60))
367
420
  # @sg-ignore
368
- time < n_days_ago
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,
@@ -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.48.0'
6
+ VERSION = '0.51.0'
7
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: checkoff
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.48.0
4
+ version: 0.51.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vince Broz