class Herb::AST::ERBWhileNode

def initialize(type, location, errors, tag_opening, content, tag_closing, statements, end_node)

def initialize(type, location, errors, tag_opening, content, tag_closing, statements, end_node)
  super(type, location, errors)
  @tag_opening = tag_opening
  @content = content
  @tag_closing = tag_closing
  @statements = statements
  @end_node = end_node
end

def inspect

def inspect
  tree_inspect.rstrip.gsub(/\s+$/, "")
end

def to_hash

def to_hash
  super.merge({
    tag_opening: tag_opening,
    content: content,
    tag_closing: tag_closing,
    statements: statements,
    end_node: end_node,
  })
end

def tree_inspect(indent = 0)

def tree_inspect(indent = 0)
  output = +""
  output += "@ #{node_name} "
  output += location.tree_inspect
  output += "\n"
  output += inspect_errors(prefix: "│   ")
  output += "├── tag_opening: "
  output += tag_opening ? tag_opening.tree_inspect : "∅"
  output += "\n"
  output += "├── content: "
  output += content ? content.tree_inspect : "∅"
  output += "\n"
  output += "├── tag_closing: "
  output += tag_closing ? tag_closing.tree_inspect : "∅"
  output += "\n"
  output += "├── statements: "
  output += inspect_array(statements, prefix: "│   ")
  output += "└── end_node: "
  if end_node
    output += "\n"
    output += "    └── "
    output += end_node.tree_inspect(indent).gsub(/^/, "    " * (indent + 1)).lstrip.gsub(/^/, "    ").delete_prefix("    ")
  else
    output += "∅\n"
  end
  output += "\n"
  output.gsub(/^/, "    " * indent)
end