Class: Sus::Output::Structured

Inherits:
Null
  • Object
show all
Defined in:
lib/sus/output/structured.rb

Constant Summary

Constants included from Messages

Messages::FAILED_PREFIX, Messages::PASSED_PREFIX

Instance Attribute Summary

Attributes inherited from Null

#options

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Null

#append, #buffered, #indent, #indented, #outdent, #puts, #write

Methods included from Messages

#assert, #error, #error_prefix, #fail_prefix, #inform_prefix, #pass_prefix, #skip_prefix

Constructor Details

#initialize(io, identity = nil) ⇒ Structured

Returns a new instance of Structured.



16
17
18
19
# File 'lib/sus/output/structured.rb', line 16

def initialize(io, identity = nil)
	@io = io
	@identity = identity
end

Class Method Details

.bufferedObject



12
13
14
# File 'lib/sus/output/structured.rb', line 12

def self.buffered(...)
	Buffered.new(self.new(...))
end

Instance Method Details

#inform(message, identity) ⇒ Object



25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/sus/output/structured.rb', line 25

def inform(message, identity)
	unless message.is_a?(String)
		message = message.inspect
	end
	
	@io.puts(JSON.generate({
		inform: @identity,
		message: {
			text: message,
			location: identity&.to_location,
		}
	}))
	
	@io.flush
end

#skip(reason, identity) ⇒ Object



21
22
23
# File 'lib/sus/output/structured.rb', line 21

def skip(reason, identity)
	inform(reason.to_s, identity)
end