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