Class: Ecrire::Markdown::Parsers::List

Inherits:
Base
  • Object
show all
Defined in:
lib/ecrire/markdown/parsers/list.rb

Constant Summary collapse

UL =
/^(-\s)(.+)?$/i
OL =
/^(\d+\.\s)(.+)?$/i

Instance Method Summary collapse

Methods inherited from Base

#initialize, parse!

Constructor Details

This class inherits a constructor from Ecrire::Markdown::Parsers::Base

Instance Method Details

#list!(match, tag) ⇒ Object



20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/ecrire/markdown/parsers/list.rb', line 20

def list!(match, tag)
  previous_node = @document.nodes[@index - 1]
  if previous_node.nil? || !previous_node.instance_of?(tag)
    @node = tag.new(match[2])
    @document.nodes[@index] = @node
  else
    @index -= 1
    @document.nodes.delete(@node)
    previous_node.append(match[2])
    @node = previous_node
  end
end

#parse!Object



6
7
8
9
10
11
12
13
14
15
16
17
18
# File 'lib/ecrire/markdown/parsers/list.rb', line 6

def parse!

  unless @node.instance_of?(Ecrire::Markdown::Node)
    return @node
  end

  if match = UL.match(@node.content)
    list! match, Ecrire::Markdown::Nodes::UnorderedList
  elsif match = OL.match(@node.content)
    list! match, Ecrire::Markdown::Nodes::OrderedList
  end
  return @node
end