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

Version Path
eac_tools-0.76.0 sub/eac_cli/lib/eac_cli/parser/alternative/short_options.rb
eac_tools-0.75.2 sub/eac_cli/lib/eac_cli/parser/alternative/short_options.rb
eac_cli-0.37.0 lib/eac_cli/parser/alternative/short_options.rb
eac_tools-0.75.1 sub/eac_cli/lib/eac_cli/parser/alternative/short_options.rb
eac_tools-0.75.0 sub/eac_cli/lib/eac_cli/parser/alternative/short_options.rb
eac_tools-0.74.1 sub/eac_cli/lib/eac_cli/parser/alternative/short_options.rb
eac_tools-0.74.0 sub/eac_cli/lib/eac_cli/parser/alternative/short_options.rb
eac_cli-0.36.0 lib/eac_cli/parser/alternative/short_options.rb
eac_tools-0.73.0 sub/eac_cli/lib/eac_cli/parser/alternative/short_options.rb
eac_tools-0.72.0 sub/eac_cli/lib/eac_cli/parser/alternative/short_options.rb
eac_tools-0.70.1 sub/eac_cli/lib/eac_cli/parser/alternative/short_options.rb
eac_tools-0.70.0 sub/eac_cli/lib/eac_cli/parser/alternative/short_options.rb
eac_tools-0.69.1 sub/eac_cli/lib/eac_cli/parser/alternative/short_options.rb
eac_tools-0.69.0 sub/eac_cli/lib/eac_cli/parser/alternative/short_options.rb
eac_cli-0.35.1 lib/eac_cli/parser/alternative/short_options.rb
eac_cli-0.34.1 lib/eac_cli/parser/alternative/short_options.rb
eac_tools-0.68.0 sub/eac_cli/lib/eac_cli/parser/alternative/short_options.rb
eac_tools-0.67.1 sub/eac_cli/lib/eac_cli/parser/alternative/short_options.rb
eac_cli-0.35.0 lib/eac_cli/parser/alternative/short_options.rb
eac_tools-0.67.0 sub/eac_cli/lib/eac_cli/parser/alternative/short_options.rb