Sha256: 6c98e814c2d5e0320a9ca3e040bb8fa123dd205738c5985904a90b15b669ca62

Contents?: true

Size: 931 Bytes

Versions: 36

Compression:

Stored size: 931 Bytes

Contents

module HammerCLI
  module Options
    class ProcessorList < Array
      attr_reader :name

      def initialize(sources = [], name: nil)
        @name = name
        self.push(*sources)
      end

      def insert_relative(mode, target_name, processor)
        index = target_name.nil? ? nil : item_index(target_name)
        HammerCLI.insert_relative(self, mode, index, processor)
      end

      def find_by_name(name)
        self[item_index(name)]
      end

      def process(defined_options, result)
        self.inject(result) do |all_options, processor|
          processor.process(defined_options, all_options)
        end
      end

      private

      def item_index(target_name)
        idx = find_index do |item|
          item.respond_to?(:name) && (item.name == target_name)
        end
        raise ArgumentError, "Option processor '#{target_name}' not found" if idx.nil?
        idx
      end
    end
  end
end

Version data entries

36 entries across 36 versions & 1 rubygems

Version Path
hammer_cli-3.13.0 lib/hammer_cli/options/processor_list.rb
hammer_cli-3.12.0 lib/hammer_cli/options/processor_list.rb
hammer_cli-3.10.0 lib/hammer_cli/options/processor_list.rb
hammer_cli-3.9.0 lib/hammer_cli/options/processor_list.rb
hammer_cli-3.8.0 lib/hammer_cli/options/processor_list.rb
hammer_cli-3.7.0 lib/hammer_cli/options/processor_list.rb
hammer_cli-3.5.1 lib/hammer_cli/options/processor_list.rb
hammer_cli-3.6.0 lib/hammer_cli/options/processor_list.rb
hammer_cli-3.5.0 lib/hammer_cli/options/processor_list.rb
hammer_cli-3.4.0 lib/hammer_cli/options/processor_list.rb
hammer_cli-3.3.0 lib/hammer_cli/options/processor_list.rb
hammer_cli-3.2.0 lib/hammer_cli/options/processor_list.rb
hammer_cli-3.1.1 lib/hammer_cli/options/processor_list.rb
hammer_cli-3.0.2 lib/hammer_cli/options/processor_list.rb
hammer_cli-3.1.0 lib/hammer_cli/options/processor_list.rb
hammer_cli-3.0.1 lib/hammer_cli/options/processor_list.rb
hammer_cli-3.0.0 lib/hammer_cli/options/processor_list.rb
hammer_cli-2.5.1 lib/hammer_cli/options/processor_list.rb
hammer_cli-2.5.0 lib/hammer_cli/options/processor_list.rb
hammer_cli-2.3.1 lib/hammer_cli/options/processor_list.rb