Class: Gem::SafeMarshal::Visitors::StreamPrinter

Inherits:
Visitor
  • Object
show all
Defined in:
lib/rubygems/safe_marshal/visitors/stream_printer.rb

Instance Method Summary collapse

Constructor Details

#initialize(io, indent: "") ⇒ StreamPrinter

Returns a new instance of StreamPrinter.



8
9
10
11
12
# File 'lib/rubygems/safe_marshal/visitors/stream_printer.rb', line 8

def initialize(io, indent: "")
  @io = io
  @indent = indent
  @level = 0
end

Instance Method Details

#visit(target) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/rubygems/safe_marshal/visitors/stream_printer.rb', line 14

def visit(target)
  @io.write("#{@indent * @level}#{target.class}")
  target.instance_variables.each do |ivar|
    value = target.instance_variable_get(ivar)
    next if Elements::Element === value || Array === value
    @io.write(" #{ivar}=#{value.inspect}")
  end
  @io.write("\n")
  begin
    @level += 1
    super
  ensure
    @level -= 1
  end
end