Class: CommandKit::Options::Option Private
- Inherits:
-
Object
- Object
- CommandKit::Options::Option
- Defined in:
- lib/command_kit/options/option.rb
Overview
This class is part of a private API. You should avoid using this class if possible, as it may be removed or be changed in the future.
Represents a defined option.
Instance Attribute Summary collapse
-
#block ⇒ Proc?
readonly
private
The optional block that will receive the parsed option value.
-
#desc ⇒ String
readonly
private
The option description.
-
#long ⇒ String
readonly
private
The option's long-flag.
-
#name ⇒ Symbol
readonly
private
The option's name.
-
#short ⇒ String?
readonly
private
The option's optional short-flag.
-
#value ⇒ OptionValue?
readonly
private
The option value's type.
Class Method Summary collapse
-
.default_long_opt(name) ⇒ String
private
The default long option (ex:
--long-opt
) for the given option name (ex::long_opt
).
Instance Method Summary collapse
-
#default_value ⇒ Object?
private
The option value's default value.
-
#equals? ⇒ Boolean
private
Specifies if the option is of the form
--opt=VALUE
. -
#initialize(name, short: nil, long: self.class.default_long_opt(name), equals: false, value: nil, desc:) {|(value)| ... } ⇒ Option
constructor
private
Initializes the option.
-
#separator ⇒ '=', ...
private
The separator characer between the option and option value.
-
#type ⇒ Class?
private
The option value's type.
-
#usage ⇒ Array<String>
private
Usage strings for the option.
-
#value? ⇒ Boolean
private
Determines if the option has a value.
Constructor Details
#initialize(name, short: nil, long: self.class.default_long_opt(name), equals: false, value: nil, desc:) {|(value)| ... } ⇒ Option
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Initializes the option.
86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 |
# File 'lib/command_kit/options/option.rb', line 86 def initialize(name, short: nil, long: self.class.default_long_opt(name), equals: false, value: nil, desc: , &block) @name = name @short = short @long = long @equals = equals @value = case value when Hash then OptionValue.new(**value) when true then OptionValue.new() when false, nil then nil else raise(TypeError,"value: keyword must be Hash, true, false, or nil") end @desc = desc @block = block end |
Instance Attribute Details
#block ⇒ Proc? (readonly)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
The optional block that will receive the parsed option value.
46 47 48 |
# File 'lib/command_kit/options/option.rb', line 46 def block @block end |
#desc ⇒ String (readonly)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
If #default_value returns a value, the description will contain the
Default:
value the option will be initialized with.
The option description.
41 42 43 |
# File 'lib/command_kit/options/option.rb', line 41 def desc @desc end |
#long ⇒ String (readonly)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
The option's long-flag.
31 32 33 |
# File 'lib/command_kit/options/option.rb', line 31 def long @long end |
#name ⇒ Symbol (readonly)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
The option's name.
21 22 23 |
# File 'lib/command_kit/options/option.rb', line 21 def name @name end |
#short ⇒ String? (readonly)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
The option's optional short-flag.
26 27 28 |
# File 'lib/command_kit/options/option.rb', line 26 def short @short end |
#value ⇒ OptionValue? (readonly)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
The option value's type.
36 37 38 |
# File 'lib/command_kit/options/option.rb', line 36 def value @value end |
Class Method Details
.default_long_opt(name) ⇒ String
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
The default long option (ex: --long-opt
) for the given option name
(ex: :long_opt
).
117 118 119 |
# File 'lib/command_kit/options/option.rb', line 117 def self.default_long_opt(name) "--#{Inflector.dasherize(name)}" end |
Instance Method Details
#default_value ⇒ Object?
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
The option value's default value.
180 181 182 |
# File 'lib/command_kit/options/option.rb', line 180 def default_value @value && @value.default_value end |
#equals? ⇒ Boolean
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Specifies if the option is of the form --opt=VALUE
.
126 127 128 |
# File 'lib/command_kit/options/option.rb', line 126 def equals? @equals end |
#separator ⇒ '=', ...
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
The separator characer between the option and option value.
135 136 137 138 139 140 141 |
# File 'lib/command_kit/options/option.rb', line 135 def separator if @value if equals? then '=' else ' ' end end end |
#type ⇒ Class?
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
The option value's type.
169 170 171 |
# File 'lib/command_kit/options/option.rb', line 169 def type @value && @value.type end |
#usage ⇒ Array<String>
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Usage strings for the option.
149 150 151 |
# File 'lib/command_kit/options/option.rb', line 149 def usage [*@short, "#{@long}#{separator}#{@value && @value.usage}"] end |
#value? ⇒ Boolean
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Determines if the option has a value.
158 159 160 |
# File 'lib/command_kit/options/option.rb', line 158 def value? !@value.nil? end |