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
textString The flag specification (e.g.,
-f <value>or--flag).-
returns
Flag A flag instance (either
class Samovar::ValueFlagorclass 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
textString The full flag specification text.
-
parameter
prefixString The primary flag prefix (e.g.,
--flag).-
parameter
alternativesArray(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