Sha256: d50cba0977fee17b6f3474e79f765fe189f67b0ccc962e889c20784735dd624c

Contents?: true

Size: 1.32 KB

Versions: 1

Compression:

Stored size: 1.32 KB

Contents

require "himekaminize/filters/base_filter"
module Himekaminize
  module Filters
    class TaskFilter < BaseFilter
      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

        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.sequence == v[:sequence]
                line.update_status(v[:status].to_sym)
                line
              else
                line
              end
            end
          end

        end

        {
          context: context,
          output: output,
        }
      end

      private

      def only_task_list?
        @context[:only_task_list].presence || false
      end

      def update_task_status_list
        @context[:update_task_status_list].presence || {}
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
himekaminize-0.0.10 lib/himekaminize/filters/task_filter.rb