Class: Squared::Workspace::Series
- Inherits:
-
Object
- Object
- Squared::Workspace::Series
show all
- Extended by:
- Forwardable
- Includes:
- Rake::DSL
- Defined in:
- lib/squared/workspace/series.rb
Instance Attribute Summary collapse
Instance Method Summary
collapse
Constructor Details
#initialize(tasks, workspace, keys: Workspace::Application::WORKSPACE_KEYS) ⇒ Series
Returns a new instance of Series.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
# File 'lib/squared/workspace/series.rb', line 15
def initialize(tasks, workspace, keys: Workspace::Application::WORKSPACE_KEYS)
if tasks.is_a?(Array)
@data = {}
tasks.each { |key| __set__ key }
else
@data = tasks.dup
end
@workspace = workspace
@keys = keys
@sync = []
@multiple = []
@parallel = []
@session = {
group: {},
parent: {},
id: []
}
end
|
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(key) ⇒ Object
62
63
64
|
# File 'lib/squared/workspace/series.rb', line 62
def method_missing(key, *)
self[key]
end
|
Instance Attribute Details
#multiple ⇒ Object
Returns the value of attribute multiple.
11
12
13
|
# File 'lib/squared/workspace/series.rb', line 11
def multiple
@multiple
end
|
#parallel ⇒ Object
Returns the value of attribute parallel.
11
12
13
|
# File 'lib/squared/workspace/series.rb', line 11
def parallel
@parallel
end
|
#sync ⇒ Object
Returns the value of attribute sync.
11
12
13
|
# File 'lib/squared/workspace/series.rb', line 11
def sync
@sync
end
|
#workspace ⇒ Object
Returns the value of attribute workspace.
11
12
13
|
# File 'lib/squared/workspace/series.rb', line 11
def workspace
@workspace
end
|
Instance Method Details
#__set__(key) ⇒ Object
34
35
36
|
# File 'lib/squared/workspace/series.rb', line 34
def __set__(key)
self[key.to_sym] ||= []
end
|
#finalize!(thread = []) ⇒ Object
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
|
# File 'lib/squared/workspace/series.rb', line 66
def finalize!(thread = [])
thread.map!(&:to_s)
group, parent, id = @session.values
merge!(parent) if id.uniq.size > 1
merge!(group)
each do |key, items|
next if items.empty?
key = key.to_s
if items.size > 1
multiple << key
if thread.include?(key) || (key.include?(':') && thread.include?(key.split(':').first.to_sym))
desc "#{key} (thread)"
multitask key => items
parallel << key
desc "#{key} (sync)"
task "#{key}:sync": items
sync << "#{key}:sync"
multiple << "#{key}:sync"
next
end
end
desc key
task key => items
end
@session = nil
end
|
#has?(key) ⇒ Boolean
96
97
98
|
# File 'lib/squared/workspace/series.rb', line 96
def has?(key)
!key.nil? && key?(key = key.to_sym) && !self[key].empty?
end
|
#multiple?(val = nil) ⇒ Boolean
100
101
102
|
# File 'lib/squared/workspace/series.rb', line 100
def multiple?(val = nil)
already_invoked?(multiple, val)
end
|
#parallel?(val = nil) ⇒ Boolean
108
109
110
|
# File 'lib/squared/workspace/series.rb', line 108
def parallel?(val = nil)
already_invoked?(parallel, val)
end
|
#populate(proj) ⇒ Object
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
# File 'lib/squared/workspace/series.rb', line 38
def populate(proj)
return unless @session
group, parent, id = @session.values
each do |key, items|
target = "#{proj.name}:#{key}"
if @keys.include?(key)
next unless proj.has?(key) || (target = workspace.task_base?(key, target))
else
next unless workspace.task_include?(proj, key)
end
if (g = proj.group)
id << g
(group[:"#{key}:#{g}"] ||= []).push(target)
else
items << target
end
next unless (b = find_base(proj)) && (name = b.to_sym.to_s) != g
id << name
(parent[:"#{key}:#{name}"] ||= []).push(target)
end
end
|
#respond_to_missing?(key) ⇒ Boolean
112
113
114
|
# File 'lib/squared/workspace/series.rb', line 112
def respond_to_missing?(key, *)
key?(key)
end
|
#sync?(val = nil) ⇒ Boolean
104
105
106
|
# File 'lib/squared/workspace/series.rb', line 104
def sync?(val = nil)
already_invoked?(sync, val)
end
|