Sha256: cd5bdd188d6f5e31b57a8dc2aeec622c2948bb879606cdede4864471ec918a9f

Contents?: true

Size: 1.29 KB

Versions: 5

Compression:

Stored size: 1.29 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::Task::INCOMPLETE_PATTERN}|#{Himekaminize::Task::COMPLETE_PATTERN})/
            seq += 1
            Himekaminize::Task.new(line, seq)
          else
            line
          end
        end

        if only_task_list?
          output = output.select { |line| line.is_a?(Himekaminize::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::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

5 entries across 5 versions & 1 rubygems

Version Path
himekaminize-0.0.9 lib/himekaminize/filters/task_filter.rb
himekaminize-0.0.8 lib/himekaminize/filters/task_filter.rb
himekaminize-0.0.7 lib/himekaminize/filters/task_filter.rb
himekaminize-0.0.6 lib/himekaminize/filters/task_filter.rb
himekaminize-0.0.5 lib/himekaminize/filters/task_filter.rb