checkoff 0.28.0 → 0.29.1

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: bc77ff8291abdf8396b00f06b6a264aced462d4017962f22b12be600ca0838e7
4
- data.tar.gz: 04cd04ace148582a064b9eb52fa46e738e8621effe5316f8e9dc75909564d3b2
3
+ metadata.gz: 1617e35119de72c2898412e753b6f7ef4562820260811497bf39a80b41028fe9
4
+ data.tar.gz: 99b083fe93528752dfb797527ff3a2e2a64c375acf31d3347261b0b0170e9587
5
5
  SHA512:
6
- metadata.gz: 1aa7f83850fd0b422d1c9d2e9f0634da82bc16bfd9a84a0116b839921c64448de06b49a7c8af009bfce2c282d5c7b6f65b2cf7e5dc4fdef31724613984010c31
7
- data.tar.gz: 9317f20ab81c07d64ae5c955ffe345a2849ba966d5faf9de03d73e8712ddac3ad0d1d90ac70dc7af3af54dcf6a12ae48bb80aa8e4ec43eed4368942fae206b32
6
+ metadata.gz: 3952567553582ccbfc09ce3d89ec30acd1004840ee78d2c1f227b71d855e626e94037a6f1fe9438c040a9e137d64c0b993c7f59c8be229b69a685b1c6654aef3
7
+ data.tar.gz: 9d972a2fc382ddcebad588518cf412f628acf419e14c81650c8a9aead2a0cdc1711b98f204bc5108d56b5655d240e1cf3dea6cd65c2ed62bb4d3cbb762d6f421
data/Gemfile.lock CHANGED
@@ -12,7 +12,7 @@ GIT
12
12
  PATH
13
13
  remote: .
14
14
  specs:
15
- checkoff (0.28.0)
15
+ checkoff (0.29.1)
16
16
  activesupport
17
17
  asana (> 0.10.0)
18
18
  cache_method
@@ -43,7 +43,7 @@ GEM
43
43
  concurrent-ruby (1.1.10)
44
44
  crack (0.4.5)
45
45
  rexml
46
- dalli (3.2.3)
46
+ dalli (3.2.4)
47
47
  diff-lcs (1.5.0)
48
48
  docile (1.4.0)
49
49
  fakeweb (1.3.0)
@@ -27,7 +27,7 @@ module Checkoff
27
27
  def client
28
28
  @client ||= @asana_client_class.new do |c|
29
29
  c.authentication :access_token, @config.fetch(:personal_access_token)
30
- c.default_headers 'asana-enable' => 'new_project_templates,new_user_task_lists'
30
+ c.default_headers 'asana-enable' => 'new_project_templates,new_user_task_lists,new_memberships'
31
31
  end
32
32
  end
33
33
 
@@ -3,8 +3,10 @@
3
3
  module Checkoff
4
4
  # Base class to evaluate a task selector function given fully evaluated arguments
5
5
  class FunctionEvaluator
6
- def initialize(task_selector:)
6
+ def initialize(task_selector:,
7
+ tasks:)
7
8
  @task_selector = task_selector
9
+ @tasks = tasks
8
10
  end
9
11
 
10
12
  def evaluate_arg?(_index)
@@ -83,6 +85,17 @@ module Checkoff
83
85
  end
84
86
  end
85
87
 
88
+ # :due function
89
+ class DuePFunctionEvaluator < FunctionEvaluator
90
+ def matches?
91
+ fn?(task_selector, :due)
92
+ end
93
+
94
+ def evaluate(task)
95
+ @tasks.task_ready?(task)
96
+ end
97
+ end
98
+
86
99
  # :custom_field_value function
87
100
  class CustomFieldValueFunctionEvaluator < FunctionEvaluator
88
101
  def matches?
@@ -174,8 +187,10 @@ module Checkoff
174
187
 
175
188
  # Evaluator task selectors against a task
176
189
  class TaskSelectorEvaluator
177
- def initialize(task:)
190
+ def initialize(task:,
191
+ tasks: Checkoff::Tasks.new)
178
192
  @task = task
193
+ @tasks = tasks
179
194
  end
180
195
 
181
196
  FUNCTION_EVALUTORS = [
@@ -186,13 +201,15 @@ module Checkoff
186
201
  CustomFieldGidValueFunctionEvaluator,
187
202
  CustomFieldGidValueContainsAnyGidFunctionEvaluator,
188
203
  AndFunctionEvaluator,
204
+ DuePFunctionEvaluator,
189
205
  ].freeze
190
206
 
191
207
  def evaluate(task_selector)
192
208
  return true if task_selector == []
193
209
 
194
210
  FUNCTION_EVALUTORS.each do |evaluator_class|
195
- evaluator = evaluator_class.new(task_selector: task_selector)
211
+ evaluator = evaluator_class.new(task_selector: task_selector,
212
+ tasks: tasks)
196
213
 
197
214
  next unless evaluator.matches?
198
215
 
@@ -216,6 +233,6 @@ module Checkoff
216
233
  evaluator.evaluate(task, *evaluated_args)
217
234
  end
218
235
 
219
- attr_reader :task, :task_selector
236
+ attr_reader :task, :tasks, :task_selector
220
237
  end
221
238
  end
@@ -20,17 +20,23 @@ module Checkoff
20
20
  LONG_CACHE_TIME = MINUTE * 15
21
21
  SHORT_CACHE_TIME = MINUTE
22
22
 
23
- def initialize(config: Checkoff::Internal::ConfigLoader.load(:asana))
23
+ def initialize(config: Checkoff::Internal::ConfigLoader.load(:asana),
24
+ tasks: Checkoff::Tasks.new)
24
25
  @config = config
26
+ @tasks = tasks
25
27
  end
26
28
 
27
29
  # @param [Hash<Symbol, Object>] task_selector Filter based on
28
30
  # description. Examples: {tag: 'foo'} {:not {tag: 'foo'} (:tag 'foo')
29
31
  def filter_via_task_selector(task, task_selector)
30
- evaluator = TaskSelectorEvaluator.new(task: task)
32
+ evaluator = TaskSelectorEvaluator.new(task: task, tasks: tasks)
31
33
  evaluator.evaluate(task_selector)
32
34
  end
33
35
 
36
+ private
37
+
38
+ attr_reader :tasks
39
+
34
40
  # bundle exec ./task_selectors.rb
35
41
  # :nocov:
36
42
  class << self
@@ -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.28.0'
6
+ VERSION = '0.29.1'
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: checkoff
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.28.0
4
+ version: 0.29.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vince Broz
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-02-06 00:00:00.000000000 Z
11
+ date: 2023-02-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport