5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
# File 'lib/himekaminize/filters/task_filter.rb', line 5
def call(context:, output:)
seq = 0
@context = context
output = output.map do |line|
if line.is_a?(String) && line =~ /\A\s*(#{Himekaminize::Nodes::Task::INCOMPLETE_PATTERN}|#{Himekaminize::Nodes::Task::COMPLETE_PATTERN})/
seq += 1
Himekaminize::Nodes::Task.new(line, seq)
else
line
end
end
output.map.with_index do |line, index|
next line if !line.is_a?(Himekaminize::Nodes::Task) || index == 0 || line.none_parent?
prev_i = index - 1
next attach_parent_task(output, line, prev_i)
end
if only_task_list?
output = output.select { |line| line.is_a?(Himekaminize::Nodes::Task) }
end
if update_task_status_list.present?
seq = 1
update_task_status_list.each do |v|
output = output.map do |line|
if line.is_a?(Himekaminize::Nodes::Task) && line.seq == v[:seq]
line.update_status(v[:status].to_sym)
line
else
line
end
end
end
end
{
context: context,
output: output,
}
end
|