class Samovar::Output::UsageFormatter

Uses the ‘mapping` gem to handle different output object types with custom formatting rules.
Formats and prints usage information to a terminal.

def self.print(rows, output)

@yields {|formatter| ...} Optional block to customize the formatter.
@parameter output [IO] The output stream to print to.
@parameter rows [Rows] The rows to format and print.

Print usage information to the output.
def self.print(rows, output)
	formatter = self.new(output)
	
	yield formatter if block_given?
	
	formatter.print(rows)
end

def initialize(output)

@parameter output [IO] The output stream to print to.
@parameter rows [Rows] The rows to format.

Initialize a new usage formatter.
def initialize(output)
	@output = output
	@width = 80
	@first = true
	
	@terminal = Console::Terminal.for(@output)
	@terminal[:header] = @terminal.style(nil, nil, :bright)
	@terminal[:description] = @terminal.style(:blue)
	@terminal[:error] = @terminal.style(:red)
end

def print(rows, first: @first)

Print the formatted usage output.
def print(rows, first: @first)
	@first = first
	map(rows)
end