Sha256: 3ee107c8f701d1d20fb8bfd2eaebbf469d229f54df3391f62e94d1f2dfae3108
Contents?: true
Size: 1.18 KB
Versions: 26
Compression:
Stored size: 1.18 KB
Contents
# frozen_string_literal: true require 'eac_ruby_utils/core_ext' require 'eac_ruby_utils/struct' module EacCli class Parser class Collector class << self def to_data(definition) collector = new(definition) yield(collector) collector.to_data end end common_constructor :definition do default_values end # @return [OpenStruct] def to_data ::EacRubyUtils::Struct.new(data.transform_keys(&:identifier)) end def collect(option, value) if data[option].is_a?(::Array) data[option] << value else data[option] = value end end private def data @data ||= {} end def default_values definition.options.each { |option| data[option] = option_default_value(option) } definition.positional.each do |positional| data[positional] = positional_default_value(positional) end end def option_default_value(option) option.argument? ? nil : false end def positional_default_value(positional) positional.repeat? ? [] : nil end end end end
Version data entries
26 entries across 26 versions & 3 rubygems