class LineParser::NodeStack

Attributes

default_node_class[R]
root_node_class[R]
current_node[R]
root[R]

Public Class Methods

new() click to toggle source
# File lib/log_line_parser/line_parser.rb, line 58
def initialize
  @root = self.class.root_node_class.new
  @default_node_class = self.class.default_node_class
  @current_node = @root
end
setup(root_node_class, default_node_class) click to toggle source
# File lib/log_line_parser/line_parser.rb, line 52
def setup(root_node_class, default_node_class)
  @root_node_class = root_node_class
  @default_node_class = default_node_class
end

Public Instance Methods

pop() click to toggle source
# File lib/log_line_parser/line_parser.rb, line 70
def pop
  popped = @current_node
  @current_node = @current_node.node_below
  popped.node_below = nil
  popped
end
push(token) click to toggle source
# File lib/log_line_parser/line_parser.rb, line 81
def push(token)
  if @current_node.kind_of? EscapeNode
    push_escaped_token(token)
  elsif @current_node.end_tag?(token)
    pop
  elsif subnode_class = @current_node.subnode_class(token)
    push_node(subnode_class.new)
  elsif @current_node.can_ignore?(token)
    nil
  else
    push_node(@default_node_class.new) if @current_node == @root
    push_token(token)
  end
end
push_escaped_token(token) click to toggle source
# File lib/log_line_parser/line_parser.rb, line 96
def push_escaped_token(token)
  part_to_be_escaped = @current_node.part_to_be_escaped(token)
  remaining_part = nil
  if part_to_be_escaped
    remaining_part = @current_node.remove_escaped_part(token)
    push_token(part_to_be_escaped)
  end
  pop
  push_token(remaining_part) if remaining_part
end
push_node(node) click to toggle source
# File lib/log_line_parser/line_parser.rb, line 64
def push_node(node)
  @current_node.push node
  node.node_below = @current_node
  @current_node = node
end
push_token(token) click to toggle source
# File lib/log_line_parser/line_parser.rb, line 77
def push_token(token)
  @current_node.push token
end