checkoff 0.48.0 → 0.51.0

Sign up to get free protection for your applications and to get access to all the features.
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