class PrisonParser::Node
Attributes
allow_inline[RW]
label[R]
nodes[R]
properties[R]
Public Class Methods
new(label=nil)
click to toggle source
# File lib/prison_parser/node.rb, line 9 def initialize(label=nil) @label = label @nodes = Hash.new @properties = Hash.new @allow_inline = true end
Public Instance Methods
add_property(key, value)
click to toggle source
ReadKey, PushProperty
# File lib/prison_parser/node.rb, line 44 def add_property(key, value) return if key == "BEGIN" || key == "END" if properties[key] if properties[key].is_a?(Array) @properties[key] << value else @properties[key] = [properties[key], value] end else @properties[key] = value end end
allow_inline?()
click to toggle source
# File lib/prison_parser/node.rb, line 31 def allow_inline? @allow_inline end
create_node(node_label)
click to toggle source
# File lib/prison_parser/node.rb, line 57 def create_node(node_label) node = Node.new(node_label) if nodes.has_key?(node_label) if nodes[node_label].is_a?(Array) @nodes[node_label] << node else @nodes[node_label] = [nodes[node_label], node] end else @nodes[node_label] = node end node end
finished_reading_node(node)
click to toggle source
# File lib/prison_parser/node.rb, line 71 def finished_reading_node(node) # do nothing end
inspect()
click to toggle source
# File lib/prison_parser/node.rb, line 35 def inspect str = StringIO.new("") str.write "<#{label} " str.write properties.entries.map { |e|"#{e[0]}=\"#{e[1]}\"" }.join(", ") str.write ">" str.string end
method_missing(name, *args, &block)
click to toggle source
Calls superclass method
# File lib/prison_parser/node.rb, line 16 def method_missing(name, *args, &block) # Look in Nodes # Look in properties # if ends with ?, cast property to boolean # else SUPER if nodes.has_key?(name.to_s) nodes[name.to_s] elsif properties.has_key?(name.to_s) properties[name.to_s] else super end end
write_nodes(writer)
click to toggle source
WRITING
# File lib/prison_parser/node.rb, line 78 def write_nodes(writer) nodes.values.each do |node| if node.is_a?(Array) node.map { |n| writer.write_node(n) } else writer.write_node(node) end end end
write_properties(writer)
click to toggle source
# File lib/prison_parser/node.rb, line 88 def write_properties(writer) properties.each_pair do |k,value| if value.is_a?(Array) value.map { |v| writer.write_property(k, v) } else writer.write_property(k, value) end end end