Sha256: d819d0e57109a4fdf4b4e5b9fcf56faa15956c277d3456a98121c72b5c7ad52a

Contents?: true

Size: 1.07 KB

Versions: 27

Compression:

Stored size: 1.07 KB

Contents

# frozen_string_literal: true

module EacCli
  class Definition
    class BaseOption
      class InitializeArgsParser
        PROPERTIES = %i[short long description options].freeze
        attr_reader(*PROPERTIES)

        def initialize(args)
          self.options = args.extract_options!.freeze
          args.each { |arg| absorb_arg(arg) }
        end

        private

        attr_writer(*PROPERTIES)

        def absorb_arg(arg)
          arg_ext = ArgumentParser.new(arg)
          send("#{arg_ext.type}=", arg_ext.value)
        end

        class ArgumentParser
          TYPES = %i[short long description].freeze
          common_constructor :value

          def type
            TYPES.find { |type| send("#{type}?") } ||
              raise(::EacCli::Definition::Error, "Unknown type for \"#{value}\"")
          end

          def short?
            value.start_with?('-') && !long?
          end

          def long?
            value.start_with?('--')
          end

          def description?
            !short? || !long?
          end
        end
      end
    end
  end
end

Version data entries

27 entries across 27 versions & 2 rubygems

Version Path
eac_tools-0.81.0 sub/eac_cli/lib/eac_cli/definition/base_option/initialize_args_parser.rb
eac_tools-0.80.0 sub/eac_cli/lib/eac_cli/definition/base_option/initialize_args_parser.rb
eac_tools-0.79.0 sub/eac_cli/lib/eac_cli/definition/base_option/initialize_args_parser.rb
eac_tools-0.78.0 sub/eac_cli/lib/eac_cli/definition/base_option/initialize_args_parser.rb
eac_tools-0.77.1 sub/eac_cli/lib/eac_cli/definition/base_option/initialize_args_parser.rb
eac_tools-0.77.0 sub/eac_cli/lib/eac_cli/definition/base_option/initialize_args_parser.rb
eac_cli-0.38.0 lib/eac_cli/definition/base_option/initialize_args_parser.rb
eac_tools-0.76.1 sub/eac_cli/lib/eac_cli/definition/base_option/initialize_args_parser.rb
eac_tools-0.76.0 sub/eac_cli/lib/eac_cli/definition/base_option/initialize_args_parser.rb
eac_tools-0.75.2 sub/eac_cli/lib/eac_cli/definition/base_option/initialize_args_parser.rb
eac_cli-0.37.0 lib/eac_cli/definition/base_option/initialize_args_parser.rb
eac_tools-0.75.1 sub/eac_cli/lib/eac_cli/definition/base_option/initialize_args_parser.rb
eac_tools-0.75.0 sub/eac_cli/lib/eac_cli/definition/base_option/initialize_args_parser.rb
eac_tools-0.74.1 sub/eac_cli/lib/eac_cli/definition/base_option/initialize_args_parser.rb
eac_tools-0.74.0 sub/eac_cli/lib/eac_cli/definition/base_option/initialize_args_parser.rb
eac_cli-0.36.0 lib/eac_cli/definition/base_option/initialize_args_parser.rb
eac_tools-0.73.0 sub/eac_cli/lib/eac_cli/definition/base_option/initialize_args_parser.rb
eac_tools-0.72.0 sub/eac_cli/lib/eac_cli/definition/base_option/initialize_args_parser.rb
eac_tools-0.70.1 sub/eac_cli/lib/eac_cli/definition/base_option/initialize_args_parser.rb
eac_tools-0.70.0 sub/eac_cli/lib/eac_cli/definition/base_option/initialize_args_parser.rb