ConsoleSourceConsoleOutputDefault

module Default

Default output format selection.

Definitions

def self.new(stream, env: ENV, **options)

Create a new output format based on the given stream.

Signature

parameter io IO

The output stream.

parameter env Hash

Environment variables (defaults to ENV for testing).

parameter options Hash

Additional options to customize the output.

returns Console::Output::Terminal | Console::Output::Serialized

The output instance, depending on whether the io is a terminal or not.

Implementation

def self.new(stream, env: ENV, **options)
	stream ||= $stderr
	
	if stream.tty? || mail?(env)
		output = Terminal.new(stream, **options)
	else
		output = Serialized.new(stream, **options)
	end
	
	return output
end

def self.mail?(env = ENV)

Detect if we're running in a cron job or mail context where human-readable output is preferred. Cron jobs often have MAILTO set and lack TERM, or have minimal TERM values.

Implementation

def self.mail?(env = ENV)
	# Check for common cron environment indicators
	return true if env.key?("MAILTO") && !env["MAILTO"].empty?
	
	false
end