class Dry::CLI::Option

@api private
@since 0.1.0
Command line option

def alias_names

Other tags:
    Api: - private

Other tags:
    Since: - 0.1.0
def alias_names
  aliases
    .map { |name| name.gsub(/^-{1,2}/, "") }
    .compact
    .uniq
    .map { |name| name.size == 1 ? "-#{name}" : "--#{name}" }
    .map { |name| boolean? || flag? ? name : "#{name} VALUE" }
end

def aliases

Other tags:
    Api: - private

Other tags:
    Since: - 0.1.0
def aliases
  options[:aliases] || []
end

def argument?

Other tags:
    Api: - private

Other tags:
    Since: - 0.1.0
def argument?
  false
end

def array?

Other tags:
    Api: - private

Other tags:
    Since: - 0.3.0
def array?
  type == :array
end

def boolean?

Other tags:
    Api: - private

Other tags:
    Since: - 0.1.0
def boolean?
  type == :boolean
end

def default

Other tags:
    Api: - private

Other tags:
    Since: - 0.1.0
def default
  options[:default]
end

def desc

Other tags:
    Api: - private

Other tags:
    Since: - 0.1.0
def desc
  desc = options[:desc]
  values ? "#{desc}: (#{values.join("/")})" : desc
end

def description_name

Other tags:
    Api: - private

Other tags:
    Since: - 0.1.0
def description_name
  options[:label] || name.upcase
end

def flag?

Other tags:
    Api: - private
def flag?
  type == :flag
end

def initialize(name, options = {})

Other tags:
    Api: - private

Other tags:
    Since: - 0.1.0
def initialize(name, options = {})
  @name = name
  @options = options
end

def parser_options

Other tags:
    Api: - private

Other tags:
    Since: - 0.1.0
def parser_options
  dasherized_name = Inflector.dasherize(name)
  parser_options  = []
  if boolean?
    parser_options << "--[no-]#{dasherized_name}"
  elsif flag?
    parser_options << "--#{dasherized_name}"
  else
    parser_options << "--#{dasherized_name}=#{name}"
    parser_options << "--#{dasherized_name} #{name}"
  end
  parser_options << Array if array?
  parser_options << values if values
  parser_options.unshift(*alias_names) if aliases.any?
  parser_options << desc if desc
  parser_options
end

def required?

Other tags:
    Api: - private

Other tags:
    Since: - 0.1.0
def required?
  options[:required]
end

def type

Other tags:
    Api: - private

Other tags:
    Since: - 0.1.0
def type
  options[:type]
end

def valid_value?(value)

Other tags:
    Api: - private
def valid_value?(value)
  available_values = values
  return true if available_values.nil?
  if array?
    (value - available_values).empty?
  else
    available_values.map(&:to_s).include?(value.to_s)
  end
end

def values

Other tags:
    Api: - private

Other tags:
    Since: - 0.1.0
def values
  options[:values]
end