Class: Himekaminize::Filters::TaskFilter

Inherits:
BaseFilter
  • Object
show all
Defined in:
lib/himekaminize/filters/task_filter.rb

Instance Method Summary collapse

Instance Method Details

#call(context:, output:) ⇒ Object



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

  # Attach depth, and parent_seq
  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