Sha256: 6ec5b8ee3637c2f712c313048f056f0c60119f3d5b41bb0653acbfe58f58e49a

Contents?: true

Size: 1.01 KB

Versions: 232

Compression:

Stored size: 1.01 KB

Contents

# frozen_string_literal: true

module EacCli
  class Parser
    class Alternative
      module LongOptions
        LONG_OPTION_PREFIX = '--'
        OPTION_WITH_ARGUMENT_PATTERN = /\A([^=]+)(?:=(.*))\z/.freeze

        private

        def argv_current_long_option?
          phase == PHASE_ANY && argv_enum.peek.start_with?(LONG_OPTION_PREFIX) &&
            !argv_current_double_dash?
        end

        def long_option_collect_argv_value
          option_long, value = parse_option_current_argv
          alternative.options.any? do |option|
            next false unless option.long == option_long

            if value.nil?
              option_collect_option(option)
            else
              option_argument_collect(option, value)
            end
          end || raise_argv_current_invalid_option
        end

        def parse_option_current_argv
          m = OPTION_WITH_ARGUMENT_PATTERN.match(argv_enum.peek)
          m ? [m[1], m[2].if_present('')] : [argv_enum.peek, nil]
        end
      end
    end
  end
end

Version data entries

232 entries across 232 versions & 4 rubygems

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