Class: Sus::Output::Buffered

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

Constant Summary collapse

INDENT =
[:indent].freeze
OUTDENT =
[:outdent].freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(tee = nil) ⇒ Buffered

Returns a new instance of Buffered.



13
14
15
16
# File 'lib/sus/output/buffered.rb', line 13

def initialize(tee = nil)
	@chunks = Array.new
	@tee = tee
end

Instance Attribute Details

#chunksObject (readonly)

Returns the value of attribute chunks.



18
19
20
# File 'lib/sus/output/buffered.rb', line 18

def chunks
  @chunks
end

#teeObject (readonly)

Returns the value of attribute tee.



19
20
21
# File 'lib/sus/output/buffered.rb', line 19

def tee
  @tee
end

Instance Method Details

#append(buffer) ⇒ Object



37
38
39
40
# File 'lib/sus/output/buffered.rb', line 37

def append(buffer)
	@chunks.concat(buffer.chunks)
	@tee&.append(buffer)
end

#assert(*arguments) ⇒ Object



79
80
81
82
# File 'lib/sus/output/buffered.rb', line 79

def assert(*arguments)
	@chunks << [:assert, *arguments]
	@tee&.assert(*arguments)
end

#bufferedObject



29
30
31
# File 'lib/sus/output/buffered.rb', line 29

def buffered
	self.class.new(self)
end

#each(&block) ⇒ Object



33
34
35
# File 'lib/sus/output/buffered.rb', line 33

def each(&block)
	@chunks.each(&block)
end

#error(*arguments) ⇒ Object



89
90
91
92
# File 'lib/sus/output/buffered.rb', line 89

def error(*arguments)
	@chunks << [:error, *arguments]
	@tee&.error(*arguments)
end

#indentObject



50
51
52
53
# File 'lib/sus/output/buffered.rb', line 50

def indent
	@chunks << INDENT
	@tee&.indent
end

#indentedObject



62
63
64
65
66
67
# File 'lib/sus/output/buffered.rb', line 62

def indented
	self.indent
	yield
ensure
	self.outdent
end

#inform(*arguments) ⇒ Object



94
95
96
97
# File 'lib/sus/output/buffered.rb', line 94

def inform(*arguments)
	@chunks << [:inform, *arguments]
	@tee&.inform(*arguments)
end

#inspectObject



21
22
23
24
25
26
27
# File 'lib/sus/output/buffered.rb', line 21

def inspect
	if @tee
		"\#<#{self.class.name} #{@chunks.size} chunks -> #{@tee.class}>"
	else
		"\#<#{self.class.name} #{@chunks.size} chunks>"
	end
end

#outdentObject



57
58
59
60
# File 'lib/sus/output/buffered.rb', line 57

def outdent
	@chunks << OUTDENT
	@tee&.outdent
end

#puts(*arguments) ⇒ Object



74
75
76
77
# File 'lib/sus/output/buffered.rb', line 74

def puts(*arguments)
	@chunks << [:puts, *arguments]
	@tee&.puts(*arguments)
end

#skip(*arguments) ⇒ Object



84
85
86
87
# File 'lib/sus/output/buffered.rb', line 84

def skip(*arguments)
	@chunks << [:skip, *arguments]
	@tee&.skip(*arguments)
end

#stringObject



42
43
44
45
46
# File 'lib/sus/output/buffered.rb', line 42

def string
	io = StringIO.new
	Text.new(io).append(@chunks)
	return io.string
end

#write(*arguments) ⇒ Object



69
70
71
72
# File 'lib/sus/output/buffered.rb', line 69

def write(*arguments)
	@chunks << [:write, *arguments]
	@tee&.write(*arguments)
end