checkoff 0.98.0 → 0.99.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/lib/checkoff/internal/selector_classes/task/function_evaluator.rb +2 -25
- data/lib/checkoff/internal/selector_classes/task.rb +2 -2
- data/lib/checkoff/internal/task_timing.rb +42 -7
- data/lib/checkoff/tasks.rb +4 -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: f0aa9c88e96e1094d284c59a9c7146ff72f393f2e16442c8e320b3253ab0221d
|
4
|
+
data.tar.gz: 7f6021289d7fb0e331cb6b993b10307287c365d9a00d5fbe789e5b6c13972dad
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ab4476c149bf918e5d138f71a5d1c5df78192f3fa3fa13e8ef0e8a2d7c7198b34268a78ab14e6009237d3cf0113316f3ff91222d22893606c5ecc1ab31830d55
|
7
|
+
data.tar.gz: 4f804bcfc9548b7106fcd80c5764da4250bf024e9dc7f1c2b95460078b89de3a238ba2b28f6d44188cd3fee074a0d348925ef780b751534a0f801f08b74fab24
|
data/Gemfile.lock
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require_relative '../function_evaluator'
|
4
|
+
require 'checkoff/internal/task_timing'
|
4
5
|
|
5
6
|
module Checkoff
|
6
7
|
module SelectorClasses
|
@@ -16,6 +17,7 @@ module Checkoff
|
|
16
17
|
@selector = selector
|
17
18
|
@tasks = tasks
|
18
19
|
@timelines = timelines
|
20
|
+
@task_timing = ::Checkoff::Internal::TaskTiming.new
|
19
21
|
super()
|
20
22
|
end
|
21
23
|
|
@@ -44,31 +46,6 @@ module Checkoff
|
|
44
46
|
raise "Teach me how to handle field #{field_name}"
|
45
47
|
end
|
46
48
|
|
47
|
-
# @param task [Asana::Resources::Task]
|
48
|
-
# @param field_name [Symbol]
|
49
|
-
#
|
50
|
-
# @sg-ignore
|
51
|
-
# @return [Date, Time, nil]
|
52
|
-
def pull_date_or_time_field_by_name(task, field_name)
|
53
|
-
if field_name == :due
|
54
|
-
return Time.parse(task.due_at) unless task.due_at.nil?
|
55
|
-
|
56
|
-
return Date.parse(task.due_on) unless task.due_on.nil?
|
57
|
-
|
58
|
-
return nil
|
59
|
-
end
|
60
|
-
|
61
|
-
if field_name == :start
|
62
|
-
return Time.parse(task.start_at) unless task.start_at.nil?
|
63
|
-
|
64
|
-
return Date.parse(task.start_on) unless task.start_on.nil?
|
65
|
-
|
66
|
-
return nil
|
67
|
-
end
|
68
|
-
|
69
|
-
raise "Teach me how to handle field #{field_name}"
|
70
|
-
end
|
71
|
-
|
72
49
|
# @sg-ignore
|
73
50
|
# @param task [Asana::Resources::Task]
|
74
51
|
# @param custom_field_gid [String]
|
@@ -138,8 +138,8 @@ module Checkoff
|
|
138
138
|
end_n_days_from_now_time = (Time.now + (end_num_days_from_now * 24 * 60 * 60))
|
139
139
|
|
140
140
|
# @type [Date, Time, nil]
|
141
|
-
task_date_or_time =
|
142
|
-
|
141
|
+
task_date_or_time = @task_timing.date_or_time_field_by_name(task, :start) ||
|
142
|
+
@task_timing.date_or_time_field_by_name(task, :due)
|
143
143
|
|
144
144
|
return false if task_date_or_time.nil?
|
145
145
|
|
@@ -5,27 +5,62 @@ module Checkoff
|
|
5
5
|
# Utility methods for working with task dates and times
|
6
6
|
class TaskTiming
|
7
7
|
# @param time_class [Class<Time>]
|
8
|
-
|
8
|
+
# @param date_class [Class<Date>]
|
9
|
+
def initialize(time_class: Time, date_class: Date)
|
9
10
|
@time_class = time_class
|
11
|
+
@date_class = date_class
|
10
12
|
end
|
11
13
|
|
12
14
|
# @param task [Asana::Resources::Task]
|
13
15
|
# @return [Time, nil]
|
14
16
|
def start_time(task)
|
15
|
-
|
16
|
-
return @time_class.parse(task.start_on) if task.start_on
|
17
|
-
|
18
|
-
nil
|
17
|
+
date_or_time_field_by_name(task, :start)&.to_time
|
19
18
|
end
|
20
19
|
|
21
20
|
# @param task [Asana::Resources::Task]
|
22
21
|
# @return [Time, nil]
|
23
22
|
def due_time(task)
|
24
|
-
|
25
|
-
|
23
|
+
date_or_time_field_by_name(task, :due)&.to_time
|
24
|
+
end
|
25
|
+
|
26
|
+
# @param task [Asana::Resources::Task]
|
27
|
+
# @param field_name [Symbol]
|
28
|
+
#
|
29
|
+
# @sg-ignore
|
30
|
+
# @return [Date, Time, nil]
|
31
|
+
def start_date_or_time(task)
|
32
|
+
return @time_class.parse(task.start_at) unless task.start_at.nil?
|
33
|
+
|
34
|
+
return @date_class.parse(task.start_on) unless task.start_on.nil?
|
26
35
|
|
27
36
|
nil
|
28
37
|
end
|
38
|
+
|
39
|
+
# @param task [Asana::Resources::Task]
|
40
|
+
# @param field_name [Symbol]
|
41
|
+
#
|
42
|
+
# @sg-ignore
|
43
|
+
# @return [Date, Time, nil]
|
44
|
+
def due_date_or_time(task)
|
45
|
+
return @time_class.parse(task.due_at) unless task.due_at.nil?
|
46
|
+
|
47
|
+
return @date_class.parse(task.due_on) unless task.due_on.nil?
|
48
|
+
|
49
|
+
nil
|
50
|
+
end
|
51
|
+
|
52
|
+
# @param task [Asana::Resources::Task]
|
53
|
+
# @param field_name [Symbol]
|
54
|
+
#
|
55
|
+
# @sg-ignore
|
56
|
+
# @return [Date, Time, nil]
|
57
|
+
def date_or_time_field_by_name(task, field_name)
|
58
|
+
return due_date_or_time(task) if field_name == :due
|
59
|
+
|
60
|
+
return start_date_or_time(task) if field_name == :start
|
61
|
+
|
62
|
+
raise "Teach me how to handle field #{field_name}"
|
63
|
+
end
|
29
64
|
end
|
30
65
|
end
|
31
66
|
end
|
data/lib/checkoff/tasks.rb
CHANGED
@@ -27,6 +27,7 @@ module Checkoff
|
|
27
27
|
# @param workspaces [Checkoff::Workspaces]
|
28
28
|
# @param sections [Checkoff::Sections]
|
29
29
|
# @param time_class [Class<Time>]
|
30
|
+
# @param date_class [Class<Date>]
|
30
31
|
# @param asana_task [Class<Asana::Resources::Task>]
|
31
32
|
def initialize(config: Checkoff::Internal::ConfigLoader.load(:asana),
|
32
33
|
client: Checkoff::Clients.new(config: config).client,
|
@@ -35,10 +36,12 @@ module Checkoff
|
|
35
36
|
sections: Checkoff::Sections.new(config: config,
|
36
37
|
client: client),
|
37
38
|
time_class: Time,
|
39
|
+
date_class: Date,
|
38
40
|
asana_task: Asana::Resources::Task)
|
39
41
|
@config = config
|
40
42
|
@sections = sections
|
41
43
|
@time_class = time_class
|
44
|
+
@date_class = date_class
|
42
45
|
@asana_task = asana_task
|
43
46
|
@client = client
|
44
47
|
@workspaces = workspaces
|
@@ -167,7 +170,7 @@ module Checkoff
|
|
167
170
|
|
168
171
|
# @return [Checkoff::Internal::TaskTiming]
|
169
172
|
def task_timing
|
170
|
-
@task_timing ||= Checkoff::Internal::TaskTiming.new(time_class: @time_class)
|
173
|
+
@task_timing ||= Checkoff::Internal::TaskTiming.new(time_class: @time_class, date_class: @date_class)
|
171
174
|
end
|
172
175
|
|
173
176
|
# @return [Checkoff::Internal::TaskHashes]
|
data/lib/checkoff/version.rb
CHANGED