class PseudoHiki::InlineParser
Attributes
token_pat[R]
Public Class Methods
new(str)
click to toggle source
Calls superclass method
TreeStack::new
# File lib/pseudohiki/inlineparser.rb, line 73 def initialize(str) @tokens = PseudoHiki.split_into_tokens(str, self.class.token_pat) super() end
parse(str)
click to toggle source
# File lib/pseudohiki/inlineparser.rb, line 105 def self.parse(str) new(str).parse.tree # parser = new(str) end
Public Instance Methods
convert_last_node_into_leaf()
click to toggle source
# File lib/pseudohiki/inlineparser.rb, line 78 def convert_last_node_into_leaf last_node = remove_current_node tag_head = NodeTypeToHead[last_node.class] push InlineLeaf.create(tag_head) last_node.each {|leaf| push_as_leaf leaf } end
node_in_ancestors?(node_class)
click to toggle source
# File lib/pseudohiki/inlineparser.rb, line 85 def node_in_ancestors?(node_class) not @stack.select {|node| node_class == node.class }.empty? end
parse()
click to toggle source
# File lib/pseudohiki/inlineparser.rb, line 96 def parse while token = @tokens.shift next if TAIL[token] and treated_as_node_end(token) next if HEAD[token] and push HEAD[token].new push InlineLeaf.create(token) end self end
treated_as_node_end(token)
click to toggle source
# File lib/pseudohiki/inlineparser.rb, line 89 def treated_as_node_end(token) return pop if current_node.class == TAIL[token] return nil unless node_in_ancestors?(TAIL[token]) convert_last_node_into_leaf until current_node.class == TAIL[token] pop end