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.
-
#category ⇒ String?
readonly
private
The optional category to group the option under.
-
#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:, category: nil) {|(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:, category: nil) {|(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.
93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 |
# File 'lib/command_kit/options/option.rb', line 93 def initialize(name, short: nil, long: self.class.default_long_opt(name), equals: false, value: nil, desc: , category: nil, &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 @category = category @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.
43 44 45 |
# File 'lib/command_kit/options/option.rb', line 43 def block @block end |
#category ⇒ 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 optional category to group the option under.
50 51 52 |
# File 'lib/command_kit/options/option.rb', line 50 def category @category 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.
33 34 35 |
# File 'lib/command_kit/options/option.rb', line 33 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.
23 24 25 |
# File 'lib/command_kit/options/option.rb', line 23 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.
28 29 30 |
# File 'lib/command_kit/options/option.rb', line 28 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.
38 39 40 |
# File 'lib/command_kit/options/option.rb', line 38 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
).
126 127 128 |
# File 'lib/command_kit/options/option.rb', line 126 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.
193 194 195 |
# File 'lib/command_kit/options/option.rb', line 193 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.
206 207 208 209 210 211 212 213 214 215 216 217 218 219 |
# File 'lib/command_kit/options/option.rb', line 206 def desc if (value = default_value) default_text = "(Default: #{value})" case @desc when Array @desc + [default_text] else "#{@desc} #{default_text}" end 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
.
135 136 137 |
# File 'lib/command_kit/options/option.rb', line 135 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.
144 145 146 147 148 149 150 |
# File 'lib/command_kit/options/option.rb', line 144 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.
182 183 184 |
# File 'lib/command_kit/options/option.rb', line 182 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.
158 159 160 161 162 163 164 |
# File 'lib/command_kit/options/option.rb', line 158 def usage if equals? && (@value && @value.optional?) [*@short, "#{@long}[#{separator}#{@value && @value.usage}]"] else [*@short, "#{@long}#{separator}#{@value && @value.usage}"] end 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.
171 172 173 |
# File 'lib/command_kit/options/option.rb', line 171 def value? !@value.nil? end |