class Cri::OptionDefinition

The definition of an option.

Attributes

argument[R]
block[R]
default[R]
desc[R]
hidden[R]
long[R]
multiple[R]
short[R]
transform[R]

Public Class Methods

new(params = {}) click to toggle source
# File lib/cri/option_definition.rb, line 16
def initialize(params = {})
  @short     = params.fetch(:short)
  @long      = params.fetch(:long)
  @desc      = params.fetch(:desc)
  @argument  = params.fetch(:argument)
  @multiple  = params.fetch(:multiple)
  @block     = params.fetch(:block)
  @hidden    = params.fetch(:hidden)
  @default   = params.fetch(:default)
  @transform = params.fetch(:transform)

  if @short.nil? && @long.nil?
    raise ArgumentError, 'short and long options cannot both be nil'
  end

  if @default && @argument == :forbidden
    raise ArgumentError, 'a default value cannot be specified for flag options'
  end

  @default = false if @argument == :forbidden
end

Public Instance Methods

formatted_name() click to toggle source
# File lib/cri/option_definition.rb, line 52
def formatted_name
  @long ? '--' + @long : '-' + @short
end
to_h() click to toggle source
# File lib/cri/option_definition.rb, line 38
def to_h
  {
    short: @short,
    long: @long,
    desc: @desc,
    argument: @argument,
    multiple: @multiple,
    block: @block,
    hidden: @hidden,
    default: @default,
    transform: @transform,
  }
end