class Samovar::One

def initialize(key, description, pattern: //, default: nil, required: false)

def initialize(key, description, pattern: //, default: nil, required: false)
	@key = key
	@description = description
	@pattern = pattern
	@default = default
	@required = required
end

def parse(input, parent = nil, default = nil)

def parse(input, parent = nil, default = nil)
	if input.first =~ @pattern
		input.shift
	elsif default ||= @default
		return default
	elsif @required
		raise MissingValueError.new(parent, self)
	end
end

def to_a

def to_a
	usage = [to_s, @description]
	
	if @default
		usage << "(default: #{@default.inspect})"
	elsif @required
		usage << "(required)"
	end
	
	return usage
end

def to_s

def to_s
	"<#{@key}>"
end