Class: EacCli::Definition::Option Abstract

Inherits:
OptionOrPositional show all
Defined in:
lib/eac_cli/definition/option.rb,
lib/eac_cli/definition/option/initialize_args_parser.rb

Overview

This class is abstract.

Direct Known Subclasses

ArgumentOption, BooleanOption

Defined Under Namespace

Classes: InitializeArgsParser

Constant Summary collapse

DEFAULT_REQUIRED =
false

Constants inherited from OptionOrPositional

EacCli::Definition::OptionOrPositional::OPTION_LIST

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from OptionOrPositional

#optional?, #raise, #repeat?, #required?, #to_s

Constructor Details

#initialize(short, long, description, options = {}) ⇒ Object

Parameters:

  • short (String)
  • long (String)
  • description (String)
  • options (Hash<Symbol, Object>) (defaults to: {})

Raises:



32
33
34
35
36
37
# File 'lib/eac_cli/definition/option.rb', line 32

common_constructor :short, :long, :description, :options, default: [{}] do
  validate
  self.options = ::EacCli::Definition::Option.lists.option.hash_keys_validate!(
    options.symbolize_keys
  )
end

Class Method Details

.from_args(args) ⇒ EacCli::Definition::Option

Parameters:

  • args (Enumerable<String>)

Returns:



15
16
17
18
# File 'lib/eac_cli/definition/option.rb', line 15

def from_args(args)
  p = ::EacCli::Definition::Option::InitializeArgsParser.new(args)
  new(p.short, p.long, p.description, p.options)
end

Instance Method Details

#default_valueObject

Returns:



40
41
42
# File 'lib/eac_cli/definition/option.rb', line 40

def default_value
  default_value? ? options[OPTION_DEFAULT] : default_default_value
end

#default_value?Boolean

Returns:

  • (Boolean)


45
46
47
# File 'lib/eac_cli/definition/option.rb', line 45

def default_value?
  options.key?(OPTION_DEFAULT)
end

#identifierSymbol

Returns:

  • (Symbol)

Raises:



51
52
53
54
55
56
57
# File 'lib/eac_cli/definition/option.rb', line 51

def identifier
  [long, short].each do |v|
    v.to_s.if_present { |vv| return vv.variableize.to_sym }
  end

  raise('No short or long option to build identifier')
end

#show_on_usage?Boolean

Returns:

  • (Boolean)


60
61
62
# File 'lib/eac_cli/definition/option.rb', line 60

def show_on_usage?
  options[:usage]
end