class Grokdown::Document
Attributes
nodes[R]
Public Class Methods
new(markdown, options: %i[DEFAULT], extensions: %i[table tasklist strikethrough autolink])
click to toggle source
# File lib/grokdown/document.rb, line 8 def initialize(markdown, options: %i[DEFAULT], extensions: %i[table tasklist strikethrough autolink]) @walk = [] @nodes = [] CommonMarker.render_doc(markdown,options,extensions).reduce(self) do |doc, node| decorated_node = case node when Matching Matching.for(node).build(node) else NeverConsumes.new(node) end doc.push decorated_node end end
Public Instance Methods
each(&block)
click to toggle source
# File lib/grokdown/document.rb, line 51 def each(&block) @nodes.each(&block) end
push(node)
click to toggle source
# File lib/grokdown/document.rb, line 24 def push(node) case node when Matching _push(node) when Array node.each do |n| _push(n) end else _push(node) end self end
walk(&block)
click to toggle source
# File lib/grokdown/document.rb, line 55 def walk(&block) @walk.each(&block) end
Private Instance Methods
_push(node)
click to toggle source
# File lib/grokdown/document.rb, line 38 def _push(node) if accepts = @walk.reverse.find {|i| i.consumes?(node) } accepts.consume(node) else @nodes.push(node) end @walk.push(node) end