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.
-
#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.
-
#desc ⇒ String
private
The option description.
-
#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 character 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.
81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 |
# File 'lib/command_kit/options/option.rb', line 81 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.
41 42 43 |
# File 'lib/command_kit/options/option.rb', line 41 def block @block 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).
112 113 114 |
# File 'lib/command_kit/options/option.rb', line 112 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.
175 176 177 |
# File 'lib/command_kit/options/option.rb', line 175 def default_value @value && @value.default_value end |
#desc ⇒ 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.
If #default_value returns a value, the description will contain the
Default: value the option will be initialized with.
The option description.
188 189 190 191 192 193 194 |
# File 'lib/command_kit/options/option.rb', line 188 def desc if (value = default_value) "#{@desc} (Default: #{value})" else @desc end 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.
121 122 123 |
# File 'lib/command_kit/options/option.rb', line 121 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 character between the option and option value.
130 131 132 133 134 135 136 |
# File 'lib/command_kit/options/option.rb', line 130 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.
164 165 166 |
# File 'lib/command_kit/options/option.rb', line 164 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.
144 145 146 |
# File 'lib/command_kit/options/option.rb', line 144 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.
153 154 155 |
# File 'lib/command_kit/options/option.rb', line 153 def value? !@value.nil? end |