checkoff 0.98.0 → 0.99.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: 2725cd346d11c05b4742b3dd59d1202064a3a9036ec37c2037332a02f93165eb
4
- data.tar.gz: b02da55d5036d05eee1c3fb58237cf42e68c28b788be66cd0f41a07647b9e6eb
3
+ metadata.gz: f0aa9c88e96e1094d284c59a9c7146ff72f393f2e16442c8e320b3253ab0221d
4
+ data.tar.gz: 7f6021289d7fb0e331cb6b993b10307287c365d9a00d5fbe789e5b6c13972dad
5
5
  SHA512:
6
- metadata.gz: a8a4286f693c686211aa41db250b7d3825b9a846a923e53f7327ca0d94ba714f7b94ebfa8ec55964506721d4912d419318e8c2e94ef147b0ed586151a5b5d252
7
- data.tar.gz: 1c1d1f4a88a447e27f3bc9beaf10ff6fec97f0b55ced249eb7cdfbcd2e36955bb5230fb3991339eecd19f44f6b5d9c2ef646746a6ee175b5d4db2d1964305f00
6
+ metadata.gz: ab4476c149bf918e5d138f71a5d1c5df78192f3fa3fa13e8ef0e8a2d7c7198b34268a78ab14e6009237d3cf0113316f3ff91222d22893606c5ecc1ab31830d55
7
+ data.tar.gz: 4f804bcfc9548b7106fcd80c5764da4250bf024e9dc7f1c2b95460078b89de3a238ba2b28f6d44188cd3fee074a0d348925ef780b751534a0f801f08b74fab24
data/Gemfile.lock CHANGED
@@ -12,7 +12,7 @@ GIT
12
12
  PATH
13
13
  remote: .
14
14
  specs:
15
- checkoff (0.98.0)
15
+ checkoff (0.99.0)
16
16
  activesupport
17
17
  asana (> 0.10.0)
18
18
  cache_method
@@ -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 = pull_date_or_time_field_by_name(task, :start) ||
142
- pull_date_or_time_field_by_name(task, :due)
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
- def initialize(time_class: Time)
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
- return @time_class.parse(task.start_at) if task.start_at
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
- return @time_class.parse(task.due_at) if task.due_at
25
- return @time_class.parse(task.due_on) if task.due_on
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
@@ -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]
@@ -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.98.0'
6
+ VERSION = '0.99.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.98.0
4
+ version: 0.99.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vince Broz