SamovarSourceSamovarFlag

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 or class 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