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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8bdb0bf4cc27747e4ce2255f22438fe749beedff628a70ebe1b24252ed7c0bb3
4
- data.tar.gz: ddf33a293e522f25f1ee10df10fbd9b80fdcca9ea29d32fa1f3d21e3d8bf4ead
3
+ metadata.gz: ae2af0fc7d0e29eadef095ae0987a8be0deed073e5772991be91c6edf0bc06dd
4
+ data.tar.gz: ae20ac97a3675df6e6438167f8bf40a0524a6cae0e89e186330e2c770c8172c7
5
5
  SHA512:
6
- metadata.gz: b69f0673147f4581d3cb983e77639ef811a3b9895b89a8c11c07951b02362142ee412c799cd81333727b191e9cae0e7df800ce805f4dfcd354d6d897d78ac202
7
- data.tar.gz: c788eb613e2ae5ae0a28d433944f982b55fe246c9b1ae9283220147eb4d2d8c0904a65a7a2f26c2abff8bae351ebdb42e2b5963d9d8b42ff806e85d66a5a5248
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.50.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
@@ -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
- 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
@@ -372,13 +384,43 @@ module Checkoff
372
384
  #
373
385
  # @return [Boolean]
374
386
  def evaluate(task, field_name, num_days)
375
- time = pull_date_field_by_name_or_raise(task, field_name)
387
+ date = pull_date_field_by_name_or_raise(task, field_name)
376
388
 
377
- return false if time.nil?
389
+ return false if date.nil?
378
390
 
379
- n_days_ago = (Time.now - (num_days * 24 * 60 * 60))
380
391
  # @sg-ignore
381
- time < n_days_ago
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,
@@ -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.50.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.50.0
4
+ version: 0.51.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vince Broz