class Dry::Configurable::ArgumentParser

@private

def self.call(data)

def self.call(data)
  parsed = new(data)
  [parsed.value, parsed.options]
end

def check_for_value_or_options(args)

Other tags:
    Private: -
def check_for_value_or_options(args)
  case args
  when Hash
    parse_hash(args)
  else
    { value: args }
  end
end

def check_options(opts)

Other tags:
    Private: -
def check_options(opts)
  return {} if opts.empty?
  opts.select { |k, _| VALID_OPTIONS.include?(k) }
end

def default_args

Other tags:
    Private: -
def default_args
  { value: nil, options: {} }
end

def hash_include_options_key(hash)

Other tags:
    Private: -
def hash_include_options_key(hash)
  hash.any? { |k, _| VALID_OPTIONS.include?(k) }
end

def initialize(data)

def initialize(data)
  @data = data
end

def options

def options
  parse_args[:options]
end

def parse_args

Other tags:
    Private: -
def parse_args
  return default_args if data.empty?
  if data.size > 1
    { value: data.first, options: check_options(data.last) }
  else
    default_args.merge(check_for_value_or_options(data.first))
  end
end

def parse_hash(args)

Other tags:
    Private: -
def parse_hash(args)
  if hash_include_options_key(args)
    { options: check_options(args) }
  else
    { value: args }
  end
end

def value

def value
  parse_args[:value]
end