Class: GLI::Flag
- Inherits:
-
CommandLineOption
- Object
- CommandLineToken
- CommandLineOption
- GLI::Flag
- Defined in:
- lib/gli/flag.rb
Overview
Defines a flag, which is to say a switch that takes an argument
Instance Attribute Summary collapse
-
#argument_name ⇒ Object
readonly
Name of the argument that user configured.
-
#must_match ⇒ Object
readonly
Regexp that is used to see if the flag’s argument matches.
-
#type ⇒ Object
readonly
Type to which we want to cast the values.
Attributes inherited from CommandLineOption
Attributes inherited from CommandLineToken
#aliases, #description, #long_description, #name
Instance Method Summary collapse
-
#all_forms(joiner = ', ') ⇒ Object
Returns a string of all possible forms of this flag.
- #arguments_for_option_parser ⇒ Object
-
#default_value ⇒ Object
The default value for this flag.
-
#initialize(names, options) ⇒ Flag
constructor
Creates a new option.
-
#multiple? ⇒ Boolean
True if the flag may be used multiple times.
-
#required? ⇒ Boolean
True if this flag is required on the command line.
- #safe_default_value ⇒ Object
Methods inherited from CommandLineOption
Methods inherited from CommandLineToken
Constructor Details
#initialize(names, options) ⇒ Flag
Creates a new option
- names
-
Array of symbols or strings representing the names of this switch
- options
-
hash of options:
- :desc
-
the short description
- :long_desc
-
the long description
- :default_value
-
the default value of this option
- :arg_name
-
the name of the flag’s argument, default is “arg”
- :must_match
-
a regexp that the flag’s value must match
- :type
-
a class to convert the value to
- :required
-
if true, this flag must be specified on the command line
- :multiple
-
if true, flag may be used multiple times and values are stored in an array
- :mask
-
if true, the default value of this flag will not be output in the help. This is useful for password flags where you might not want to show it on the command-line.
31 32 33 34 35 36 37 38 39 |
# File 'lib/gli/flag.rb', line 31 def initialize(names,) super(names,) @argument_name = [:arg_name] || "arg" @must_match = [:must_match] @type = [:type] @mask = [:mask] @required = [:required] @multiple = [:multiple] end |
Instance Attribute Details
#argument_name ⇒ Object (readonly)
Name of the argument that user configured
14 15 16 |
# File 'lib/gli/flag.rb', line 14 def argument_name @argument_name end |
#must_match ⇒ Object (readonly)
Regexp that is used to see if the flag’s argument matches
8 9 10 |
# File 'lib/gli/flag.rb', line 8 def must_match @must_match end |
#type ⇒ Object (readonly)
Type to which we want to cast the values
11 12 13 |
# File 'lib/gli/flag.rb', line 11 def type @type end |
Instance Method Details
#all_forms(joiner = ', ') ⇒ Object
Returns a string of all possible forms of this flag. Mostly intended for printing to the user.
85 86 87 88 89 90 91 92 93 94 95 |
# File 'lib/gli/flag.rb', line 85 def all_forms(joiner=', ') forms = all_forms_a string = forms.join(joiner) if forms[-1] =~ /^\-\-/ string += '=' else string += ' ' end string += @argument_name return string end |
#arguments_for_option_parser ⇒ Object
75 76 77 78 79 80 |
# File 'lib/gli/flag.rb', line 75 def arguments_for_option_parser args = all_forms_a.map { |name| "#{name} VAL" } args << @must_match if @must_match args << @type if @type args end |
#default_value ⇒ Object
The default value for this flag. Uses the value passed if one is set; otherwise uses ‘[]` if the flag support multiple arguments and `nil` if it does not.
67 68 69 70 71 72 73 |
# File 'lib/gli/flag.rb', line 67 def default_value if @default_value @default_value elsif @multiple [] end end |
#multiple? ⇒ Boolean
True if the flag may be used multiple times.
47 48 49 |
# File 'lib/gli/flag.rb', line 47 def multiple? @multiple end |
#required? ⇒ Boolean
True if this flag is required on the command line
42 43 44 |
# File 'lib/gli/flag.rb', line 42 def required? @required end |
#safe_default_value ⇒ Object
51 52 53 54 55 56 57 58 59 60 61 62 |
# File 'lib/gli/flag.rb', line 51 def safe_default_value if @mask "********" else # This uses @default_value instead of the `default_value` method because # this method is only used for display, and for flags that may be passed # multiple times, we want to display whatever is set in the code as the # the default, or the string "none" rather than displaying an empty # array. @default_value end end |