Sha256: 89809ed84c383af2c12130b8f6386b526a00ebb54a1033e98f2d2844b328ca3e
Contents?: true
Size: 1.34 KB
Versions: 135
Compression:
Stored size: 1.34 KB
Contents
# frozen_string_literal: true module EacCli class Parser class Alternative module ShortOptions SHORT_OPTION_PREFIX = '-' private def argv_current_short_option? phase == PHASE_ANY && argv_enum.peek.start_with?(SHORT_OPTION_PREFIX) && !argv_current_long_option? end def find_short_option(char) alternative.options.find do |option| short_without_prefix(option.short).if_present(false) { |v| v == char } end end def short_option_collect_argv_value last_option = nil short_without_prefix(argv_enum.peek).each_char do |char| raise_error "Option \"#{last_option}\" requires a argument not provided" if last_option.present? collected_option = short_option_collect_char(char) last_option = collected_option if collected_option.argument? end end # @return [EacCli::Definition::BaseOption] The option collected. def short_option_collect_char(char) option = find_short_option(char) raise_argv_current_invalid_option unless option option_collect_option(option) end def short_without_prefix(short) short.to_s.gsub(/\A#{::Regexp.quote(SHORT_OPTION_PREFIX)}/, '') end end end end end
Version data entries
135 entries across 135 versions & 3 rubygems