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:



29
30
31
32
33
34
# File 'lib/eac_cli/definition/option.rb', line 29

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:



12
13
14
15
# File 'lib/eac_cli/definition/option.rb', line 12

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:



37
38
39
# File 'lib/eac_cli/definition/option.rb', line 37

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

#default_value?Boolean

Returns:

  • (Boolean)


42
43
44
# File 'lib/eac_cli/definition/option.rb', line 42

def default_value?
  options.key?(OPTION_DEFAULT)
end

#identifierSymbol

Returns:

  • (Symbol)

Raises:



48
49
50
51
52
53
54
# File 'lib/eac_cli/definition/option.rb', line 48

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)


57
58
59
# File 'lib/eac_cli/definition/option.rb', line 57

def show_on_usage?
  options[:usage]
end