class Bade::AST::StringSerializer
Attributes
root[R]
@return [AST::Node, AST::Document]
Public Class Methods
new(root)
click to toggle source
@param [AST::Node, AST::Document] root
# File lib/bade/ast/string_serializer.rb, line 13 def initialize(root) @root = root end
Public Instance Methods
node_to_s(node, level)
click to toggle source
@param [Node] node @param [Fixnum] level
@return [String]
# File lib/bade/ast/string_serializer.rb, line 34 def node_to_s(node, level) type_s = node.type.inspect indent = ' ' * level children_s = '' if node.children.count > 0 children_s = "\n" + node.children.map { |n| node_to_s(n, level + 1) }.join("\n") + "\n#{indent}" end other = '' case node when TagNode other = node.name when KeyValueNode other = "#{node.name}:#{node.value}" when ValueNode, StaticTextNode escaped_sign = if node.escaped '& ' elsif node.escaped.nil? '&(nil) ' else '' end other = "#{escaped_sign}#{node.value}" when MixinCommonNode other = node.name when Node # nothing else raise "Unknown node class #{node.class} of type #{node.type} for serializing" end other = ' ' + other if other && !other.empty? "#{indent}(#{type_s}#{other}#{children_s})" end
to_s()
click to toggle source
# File lib/bade/ast/string_serializer.rb, line 17 def to_s case root when Node node_to_s(root, 0) when Document node_to_s(root.root, 0) else msg = "Root attribute passed into initializer must be subclass of #{Node} or #{Document}, is #{root.class}!" raise AttributeError, msg end end