class Console::Capture

A general sink which captures all events into a buffer.

def call(subject = nil, *arguments, severity: UNKNOWN, **options, &block)

def call(subject = nil, *arguments, severity: UNKNOWN, **options, &block)
	message = {
		time: ::Time.now.iso8601,
		severity: severity,
		**options,
	}
	
	if subject
		message[:subject] = subject
	end
	
	if arguments.any?
		message[:arguments] = arguments
	end
	
	if annotation = Fiber.current.annotation
		message[:annotation] = annotation
	end
	
	if block_given?
		if block.arity.zero?
			message[:message] = yield
		else
			buffer = StringIO.new
			yield buffer
			message[:message] = buffer.string
		end
	end
	
	@buffer << message
end

def clear

def clear
	@buffer.clear
end

def empty?

def empty?
	@buffer.empty?
end

def include?(pattern)

def include?(pattern)
	JSON.dump(@buffer).include?(pattern)
end

def initialize

def initialize
	@buffer = []
	@verbose = false
end

def last

def last
	@buffer.last
end

def verbose!(value = true)

def verbose!(value = true)
	@verbose = value
end

def verbose?

def verbose?
	@verbose
end