checkoff 0.106.0 → 0.107.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/lib/checkoff/internal/selector_classes/task.rb +2 -11
- data/lib/checkoff/portfolios.rb +2 -2
- data/lib/checkoff/tasks.rb +7 -1
- data/lib/checkoff/timing.rb +26 -1
- 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: 9a3f9bd1bb8698f7f5a318fefbf79cc09cf17998177dfbbae762fb3be82e33d7
|
4
|
+
data.tar.gz: 634e833fdb5f54c9f8a5e56411b4affb1a2d7384a1231a068bf77a8e37951088
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 950738387e7ecfe3652763452bca3dd79b39e3e8b8ca2618decacb77c04e6deb2d5b5680a272aacac5b46d97a75b53409a483bc339b13f8fd910c55d8ea0105a
|
7
|
+
data.tar.gz: 176ac1780573b9fe89f97a75c9bddf4cc74b69833ee31ec60e0f684ef88a7ca4dafa5e5661e5c5aec78ce8e5392dc23e7b9f3022e7ef77c2e94b1cc5efd45300
|
data/Gemfile.lock
CHANGED
@@ -94,7 +94,7 @@ module Checkoff
|
|
94
94
|
def evaluate(task, period = :now_or_before, ignore_dependencies = false)
|
95
95
|
@tasks.task_ready?(task, period: period, ignore_dependencies: ignore_dependencies)
|
96
96
|
end
|
97
|
-
# rubocop:
|
97
|
+
# rubocop:enable Style/OptionalBooleanParameter
|
98
98
|
end
|
99
99
|
|
100
100
|
# :unassigned function
|
@@ -171,16 +171,7 @@ module Checkoff
|
|
171
171
|
#
|
172
172
|
# @return [Boolean]
|
173
173
|
def evaluate(task, field_name, num_days)
|
174
|
-
|
175
|
-
|
176
|
-
date = task_timing.date_or_time_field_by_name(task, field_name)&.to_date
|
177
|
-
|
178
|
-
return false if date.nil?
|
179
|
-
|
180
|
-
# @sg-ignore
|
181
|
-
n_days_ago = Date.today - num_days
|
182
|
-
# @sg-ignore
|
183
|
-
date < n_days_ago
|
174
|
+
@tasks.in_period?(task, field_name, [:less_than_n_days_ago, num_days])
|
184
175
|
end
|
185
176
|
end
|
186
177
|
|
data/lib/checkoff/portfolios.rb
CHANGED
@@ -28,9 +28,9 @@ module Checkoff
|
|
28
28
|
# @param clients [Checkoff::Clients]
|
29
29
|
# @param client [Asana::Client]
|
30
30
|
def initialize(config: Checkoff::Internal::ConfigLoader.load(:asana),
|
31
|
-
workspaces: Checkoff::Workspaces.new(config: config),
|
32
31
|
clients: Checkoff::Clients.new(config: config),
|
33
|
-
client: clients.client
|
32
|
+
client: clients.client,
|
33
|
+
workspaces: Checkoff::Workspaces.new(config: config, client: client))
|
34
34
|
@workspaces = workspaces
|
35
35
|
@client = client
|
36
36
|
end
|
data/lib/checkoff/tasks.rb
CHANGED
@@ -67,9 +67,15 @@ module Checkoff
|
|
67
67
|
# @param period [Symbol<:now_or_before,:this_week>]
|
68
68
|
# @param ignore_dependencies [Boolean]
|
69
69
|
def task_ready?(task, period: :now_or_before, ignore_dependencies: false)
|
70
|
-
field_name = :ready
|
71
70
|
return false if !ignore_dependencies && incomplete_dependencies?(task)
|
72
71
|
|
72
|
+
in_period?(task, :ready, period)
|
73
|
+
end
|
74
|
+
|
75
|
+
# @param task [Asana::Resources::Task]
|
76
|
+
# @param field_name [Symbol]
|
77
|
+
# @param period [Symbol<:now_or_before,:this_week>,Array] See Checkoff::Timing#in_period?_
|
78
|
+
def in_period?(task, field_name, period)
|
73
79
|
# @type [Date,Time,nil]
|
74
80
|
task_date_or_time = task_timing.date_or_time_field_by_name(task, field_name)
|
75
81
|
|
data/lib/checkoff/timing.rb
CHANGED
@@ -38,7 +38,9 @@ module Checkoff
|
|
38
38
|
end
|
39
39
|
|
40
40
|
# @param date_or_time [Date,Time,nil]
|
41
|
-
# @param period [Symbol
|
41
|
+
# @param period [Symbol,Array<(Symbol,Integer)>]
|
42
|
+
#
|
43
|
+
# Valid values: :this_week, :now_or_before, :indefinite, [:less_than_n_days_ago, Integer]
|
42
44
|
def in_period?(date_or_time, period)
|
43
45
|
return this_week?(date_or_time) if period == :this_week
|
44
46
|
|
@@ -46,11 +48,34 @@ module Checkoff
|
|
46
48
|
|
47
49
|
return now_or_before?(date_or_time) if period == :now_or_before
|
48
50
|
|
51
|
+
if period.is_a?(Array)
|
52
|
+
# @sg-ignore
|
53
|
+
# @type [Symbol]
|
54
|
+
period_name = period.first
|
55
|
+
args = period[1..]
|
56
|
+
|
57
|
+
# @sg-ignore
|
58
|
+
return less_than_n_days_ago?(date_or_time, *args) if period_name == :less_than_n_days_ago
|
59
|
+
end
|
60
|
+
|
49
61
|
raise "Teach me how to handle period #{period.inspect}"
|
50
62
|
end
|
51
63
|
|
52
64
|
private
|
53
65
|
|
66
|
+
# @param date_or_time [Date,Time,nil]
|
67
|
+
# @param num_days [Integer]
|
68
|
+
def less_than_n_days_ago?(date_or_time, num_days)
|
69
|
+
return false if date_or_time.nil?
|
70
|
+
|
71
|
+
date = date_or_time.to_date
|
72
|
+
|
73
|
+
# @sg-ignore
|
74
|
+
n_days_ago = @today_getter.today - num_days
|
75
|
+
# @sg-ignore
|
76
|
+
date < n_days_ago
|
77
|
+
end
|
78
|
+
|
54
79
|
# @param date_or_time [Date,Time,nil]
|
55
80
|
def this_week?(date_or_time)
|
56
81
|
return true if date_or_time.nil?
|
data/lib/checkoff/version.rb
CHANGED