Class: Markbridge::Parsers::MediaWiki::Parser

Inherits:
Object
  • Object
show all
Defined in:
lib/markbridge/parsers/media_wiki/parser.rb

Overview

Parses MediaWiki wikitext into an AST.

Supports:

  • Bold (”‘), italic (”), bold italic (””’)

  • Headings (= through ======)

  • Unordered lists (* / ** / ***)

  • Ordered lists (# / ## / ###)

  • Horizontal rules (—-)

  • Internal links ([[target]] / [[target|display]])

  • External links ([url text])

  • Preformatted text (lines starting with a space)

  • Tables ({| … |})

  • HTML tags: <nowiki>, <code>, <pre>,
    , <s>, <del>, <u>, <ins>, <sup>, <sub>

Examples:

Basic usage

parser = Markbridge::Parsers::MediaWiki::Parser.new
ast = parser.parse("'''bold''' and ''italic''")

Instance Method Summary collapse

Constructor Details

#initializeParser

Returns a new instance of Parser.



24
25
26
27
28
# File 'lib/markbridge/parsers/media_wiki/parser.rb', line 24

def initialize
  @document = nil
  @inline_parser = nil
  @list_stack = []
end

Instance Method Details

#parse(input) ⇒ AST::Document

Parse MediaWiki wikitext into an AST Document.

Parameters:

  • input (String)

    MediaWiki source

Returns:



34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/markbridge/parsers/media_wiki/parser.rb', line 34

def parse(input)
  normalized = normalize_line_endings(input)
  lines = normalized.split("\n", -1)

  @document = AST::Document.new
  @inline_parser = InlineParser.new
  @list_stack = []

  process_lines(lines)
  close_open_lists
  @document
end