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