class PrisonParser::Utils::Writer
Constants
- INDENT_STR
Attributes
stream[R]
Public Class Methods
new(stream=nil)
click to toggle source
# File lib/prison_parser/utils/writer.rb, line 9 def initialize(stream=nil) @stream = stream || StringIO.new("") @inline = false @inline_stack = [] @indent = 0 end
Public Instance Methods
node_inline?(node)
click to toggle source
# File lib/prison_parser/utils/writer.rb, line 82 def node_inline?(node) node.nodes.size == 0 && node.properties.size < 13 && node.allow_inline? end
quote?(value)
click to toggle source
# File lib/prison_parser/utils/writer.rb, line 86 def quote?(value) !value.index(' ').nil? end
write(data)
click to toggle source
# File lib/prison_parser/utils/writer.rb, line 90 def write(data) stream.write data end
write_indent(indent = nil)
click to toggle source
# File lib/prison_parser/utils/writer.rb, line 50 def write_indent(indent = nil) indent ||= @indent return if indent <= 0 write INDENT_STR*indent end
write_node(node)
click to toggle source
# File lib/prison_parser/utils/writer.rb, line 22 def write_node(node) return nil if node.nil? @inline_stack.push(@inline) @inline = node_inline?(node) write_indent @indent += 1 write "BEGIN " write_value node.label if @inline write " " else write "\n" end write_node_data(node) @indent -= 1 write_indent unless @inline write "END\n" @inline = @inline_stack.pop self end
write_node_data(node)
click to toggle source
# File lib/prison_parser/utils/writer.rb, line 69 def write_node_data(node) node.write_properties(self) node.write_nodes(self) end
write_prison(prison)
click to toggle source
# File lib/prison_parser/utils/writer.rb, line 16 def write_prison(prison) write "\n" write_node_data(prison) self end
write_property(key, value)
click to toggle source
# File lib/prison_parser/utils/writer.rb, line 56 def write_property(key, value) return if value.nil? write_indent unless @inline write_value key write " " write_value value write (@inline ? " " : "\n") end
write_value(value)
click to toggle source
# File lib/prison_parser/utils/writer.rb, line 74 def write_value(value) if quote?(value) write "\"#{value}\"" else write value end end