SamovarSourceSamovarOutputUsageFormatter

class UsageFormatter

Formats and prints usage information to a terminal.

Uses the mapping gem to handle different output object types with custom formatting rules.

Nested

Definitions

def self.print(rows, output)

Print usage information to the output.

Signature

parameter rows Rows

The rows to format and print.

parameter output IO

The output stream to print to.

yields {|formatter| ...}

Optional block to customize the formatter.

Implementation

def self.print(rows, output)
	formatter = self.new(output)
	
	yield formatter if block_given?
	
	formatter.print(rows)
end

def print(rows, first: @first)

Print the formatted usage output.

Implementation

def print(rows, first: @first)
	@first = first
	map(rows)
end

def initialize(output)

Initialize a new usage formatter.

Signature

parameter rows Rows

The rows to format.

parameter output IO

The output stream to print to.

Implementation

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