checkoff 0.116.0 → 0.118.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: 261fea2c412a6994c7bccdbc9140ddc73a13d750b8e90dec0a7dbbc3d392e192
4
- data.tar.gz: 6e110965d53209c916cfc68c4f9542f7604629e2c9b3bf1dad7b7d24c3cef1e2
3
+ metadata.gz: 963a3b8220497cddec9b0267e32b875105ac3694d74133e074dbbf8064c61b42
4
+ data.tar.gz: c0ff06c0ec7e800f26bfabd93d47bcf820644df6c33ffc3b3061c490e625188f
5
5
  SHA512:
6
- metadata.gz: 937e014e1a1308d6ea3c8093d20d1ccf62889af2751f8e0fab77364ea1c64c62dbf8d5814fdcc312cfca56100d1e42ca1615fcb1bb8981094b2aba48fd773aba
7
- data.tar.gz: 2a5c95f4d368fc4d5f457d704e65c7ab4cc690940f697b4ea2a14d9c596f9914ee26c521a2af6359ea90b342398be745c22d003f5d5c3c3de4a12b79dcfc70d8
6
+ metadata.gz: 3321268a181406c1d2323946022818166a8a26867f31ea52bc235bf8070445a566868f0f78ba4aeee4dba805cda726c6fde7cdf26835a16c147b4e13f7b77f64
7
+ data.tar.gz: 02ee7fb7ec62e1bef53cf39490d57a119d643efbdd4d6bd3f15d20461cc68e5831a91ed2fdbcb80d9b34f7d54f9dc77f1f413cd3a9881f9965ccada8a8c8b7f3
data/Gemfile.lock CHANGED
@@ -12,7 +12,7 @@ GIT
12
12
  PATH
13
13
  remote: .
14
14
  specs:
15
- checkoff (0.116.0)
15
+ checkoff (0.118.0)
16
16
  activesupport
17
17
  asana (> 0.10.0)
18
18
  cache_method
@@ -26,6 +26,23 @@ module Checkoff
26
26
  tasks.last&.resource_subtype == 'milestone'
27
27
  end
28
28
  end
29
+
30
+ # :has_tasks? function
31
+ class HasTasksPFunctionEvaluator < FunctionEvaluator
32
+ FUNCTION_NAME = :has_tasks?
33
+
34
+ def matches?
35
+ fn?(selector, FUNCTION_NAME)
36
+ end
37
+
38
+ # @param section [Asana::Resources::Section]
39
+ #
40
+ # @sg-ignore
41
+ # @return [Boolean]
42
+ def evaluate(section)
43
+ @sections.tasks_by_section_gid(section.gid).any?
44
+ end
45
+ end
29
46
  end
30
47
  end
31
48
  end
@@ -256,6 +256,22 @@ module Checkoff
256
256
  @tasks.in_portfolio_named?(task, portfolio_name)
257
257
  end
258
258
  end
259
+
260
+ # :last_task_milestone_does_not_depend_on_this_task? function
261
+ class LastTaskMilestoneDoesNotDependOnThisTaskPFunctionEvaluator < FunctionEvaluator
262
+ FUNCTION_NAME = :last_task_milestone_does_not_depend_on_this_task?
263
+
264
+ def matches?
265
+ fn?(selector, FUNCTION_NAME)
266
+ end
267
+
268
+ # @param task [Asana::Resources::Task]
269
+ #
270
+ # @return [Boolean]
271
+ def evaluate(task)
272
+ !@timelines.last_task_milestone_depends_on_this_task?(task)
273
+ end
274
+ end
259
275
  end
260
276
  end
261
277
  end
@@ -188,6 +188,18 @@ module Checkoff
188
188
  end
189
189
  end
190
190
 
191
+ # @param task [Asana::Resources::Task]
192
+ #
193
+ # @return [Array<Asana::Resources::Task>]
194
+ def all_dependent_tasks(task)
195
+ dependent_tasks = []
196
+ task.dependents.each do |dependent_task|
197
+ dependent_tasks << dependent_task
198
+ dependent_tasks += all_dependent_tasks(dependent_task)
199
+ end
200
+ dependent_tasks
201
+ end
202
+
191
203
  # Builds on the standard API representation of an Asana task with some
192
204
  # convenience keys:
193
205
  #
@@ -58,6 +58,25 @@ module Checkoff
58
58
  end
59
59
  end
60
60
 
61
+ # @param task [Asana::Resources::Task]
62
+ def last_task_milestone_depends_on_this_task?(task)
63
+ all_dependent_task_gids = @tasks.all_dependent_tasks(task).map(&:gid)
64
+ task.memberships.all? do |membership_data|
65
+ # @type [Hash{String => String}]
66
+ section_data = membership_data.fetch('section')
67
+ # @type [String]
68
+ section_gid = section_data.fetch('gid')
69
+
70
+ last_milestone = last_milestone_in_section(section_gid)
71
+
72
+ next false if last_milestone.nil?
73
+
74
+ next true if last_milestone.gid == task.gid
75
+
76
+ all_dependent_task_gids.include? last_milestone.gid
77
+ end
78
+ end
79
+
61
80
  # @param section_gid [String]
62
81
  #
63
82
  # @return [Asana::Resources::Task,nil]
@@ -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.116.0'
6
+ VERSION = '0.118.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.116.0
4
+ version: 0.118.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vince Broz