class Flag
Represents a single command-line flag.
A flag can be a simple boolean flag or a flag that accepts a value.
Definitions
def self.parse(text)
Parse a flag specification string into a flag instance.
Signature
-
parameter
text
String
The flag specification (e.g.,
-f <value>
or--flag
).-
returns
Flag
A flag instance (either
class Samovar::ValueFlag
orclass Samovar::BooleanFlag
).
Implementation
def self.parse(text)
if text =~ /(.*?)\s(\<.*?\>)/
ValueFlag.new(text, $1, $2)
elsif text =~ /--\[no\]-(.*?)$/
BooleanFlag.new(text, "--#{$1}")
else
ValueFlag.new(text, text, nil)
end
end
def initialize(text, prefix, alternatives = nil)
Initialize a new flag.
Signature
-
parameter
text
String
The full flag specification text.
-
parameter
prefix
String
The primary flag prefix (e.g.,
--flag
).-
parameter
alternatives
Array(String) | Nil
Alternative flag prefixes.
Implementation
def initialize(text, prefix, alternatives = nil)
@text = text
@prefix = prefix
@alternatives = alternatives
end
attr :text
The full flag specification text.
Signature
-
attribute
String
attr :prefix
The primary flag prefix.
Signature
-
attribute
String
attr :alternatives
Alternative flag prefixes.
Signature
-
attribute
Array(String) | Nil
def to_s
Generate a string representation for usage output.
Signature
-
returns
String
The flag text.
Implementation
def to_s
@text
end
def key
Generate a key name for this flag.
Signature
-
returns
Symbol
The key name.
Implementation
def key
@key ||= @prefix.sub(/^-*/, "").gsub("-", "_").to_sym
end
def boolean?
Whether this is a boolean flag.
Signature
-
returns
Boolean
False by default.
Implementation
def boolean?
false
end