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