Files
recentrunes/grammars/mediawiki.js

287 lines
8.8 KiB
JavaScript

var mediawiki = {
'list-blockquote1': rr.Node('blockquote', rr.Sequence(
rr.StartOfLine(),
rr.Literal(': '),
rr.Ref('singleline-wikichunk'),
rr.EndOfLine())),
'list-blockquote2': rr.Node('blockquote2', rr.Sequence(
rr.StartOfLine(),
rr.Literal(':: '),
rr.Ref('singleline-wikichunk'),
rr.EndOfLine())),
'list-blockquote3': rr.Node('blockquote3', rr.Sequence(
rr.StartOfLine(),
rr.Literal('::: '),
rr.Ref('singleline-wikichunk'),
rr.EndOfLine())),
'list-blockquote4': rr.Node('blockquote4', rr.Sequence(
rr.StartOfLine(),
rr.Literal(':::: '),
rr.Ref('singleline-wikichunk'),
rr.EndOfLine())),
'list-blockquote5': rr.Node('blockquote5', rr.Sequence(
rr.StartOfLine(),
rr.Literal('::::: '),
rr.Ref('singleline-wikichunk'),
rr.EndOfLine())),
'list-def': rr.Node('def', rr.Sequence(
rr.StartOfLine(),
rr.Literal(';'),
rr.Ref('singleline-wikichunk'),
rr.EndOfLine())),
'list-h2': rr.Node('h2', rr.Sequence(
rr.StartOfLine(),
rr.Literal('== '),
rr.Ref('singleline-wikichunk'),
rr.Literal(' =='),
rr.EndOfLine())),
'list-h3': rr.Node('h3', rr.Sequence(
rr.StartOfLine(),
rr.Literal('=== '),
rr.Ref('singleline-wikichunk'),
rr.Literal(' ==='),
rr.EndOfLine())),
'list-h4': rr.Node('h4', rr.Sequence(
rr.StartOfLine(),
rr.Literal('==== '),
rr.Ref('singleline-wikichunk'),
rr.Literal(' ===='),
rr.EndOfLine())),
'list-h5': rr.Node('h5', rr.Sequence(
rr.StartOfLine(),
rr.Literal('===== '),
rr.Ref('singleline-wikichunk'),
rr.Literal(' ====='),
rr.EndOfLine())),
'list-h6': rr.Node('h6', rr.Sequence(
rr.StartOfLine(),
rr.Literal('====== '),
rr.Ref('singleline-wikichunk'),
rr.Literal(' ======'),
rr.EndOfLine())),
'list-hr': rr.Node('hr', rr.Sequence(
rr.StartOfLine(),
rr.Literal('----'),
rr.EndOfLine())),
'list-olli1': rr.Node('olli1', rr.Sequence(
rr.StartOfLine(),
rr.Literal('# '),
rr.Ref('singleline-wikichunk'),
rr.EndOfLine())),
'list-olli2': rr.Node('olli2', rr.Sequence(
rr.StartOfLine(),
rr.Literal('## '),
rr.Ref('singleline-wikichunk'),
rr.EndOfLine())),
'list-olli3': rr.Node('olli3', rr.Sequence(
rr.StartOfLine(),
rr.Literal('### '),
rr.Ref('singleline-wikichunk'),
rr.EndOfLine())),
'list-pre': rr.Node('pre', rr.Sequence(
rr.StartOfLine(),
rr.Literal(' '),
rr.SingleLineText(),
rr.EndOfLine())),
'list-ulli1': rr.Node('ulli1', rr.Sequence(
rr.StartOfLine(),
rr.Literal('* '),
rr.Ref('singleline-wikichunk'),
rr.EndOfLine())),
'list-ulli2': rr.Node('ulli2', rr.Sequence(
rr.StartOfLine(),
rr.Literal('** '),
rr.Ref('singleline-wikichunk'),
rr.EndOfLine())),
'list-ulli3': rr.Node('ulli3', rr.Sequence(
rr.StartOfLine(),
rr.Literal('*** '),
rr.Ref('singleline-wikichunk'),
rr.EndOfLine())),
'multiline-a': rr.Node('a', rr.Sequence(
rr.Literal('[['),
rr.Node('href', rr.SingleLineText()),
rr.Literal('|'),
rr.Ref('multiline-wikichunk'),
rr.Literal(']]'))),
'multiline-b': rr.Node('b', rr.Sequence(
rr.Literal("'''"),
rr.Ref('multiline-wikichunk'),
rr.Literal("'''"))),
'multiline-bi': rr.Node('bi', rr.Sequence(
rr.Literal("'''''"),
rr.Ref('multiline-wikichunk'),
rr.Literal("'''''"))),
'multiline-blockquote': rr.Node('blockquote', rr.Sequence(
rr.Literal('<blockquote>'),
rr.Ref('multiline-wikichunk'),
rr.Literal('</blockquote>'))),
'multiline-code': rr.Node('code', rr.Sequence(
rr.Literal('<code>'),
rr.Ref('multiline-wikichunk'),
rr.Literal('</code>'))),
'multiline-comment': rr.Node('comment', rr.Sequence(
rr.Literal('<!-- '),
rr.MultiLineText(),
rr.Literal(' -->'))),
'multiline-del1': rr.Node('del', rr.Sequence(
rr.Literal('<del>'),
rr.Ref('multiline-wikichunk'),
rr.Literal('</del>'))),
'multiline-del2': rr.Node('del', rr.Sequence(
rr.Literal('<strike>'),
rr.Ref('multiline-wikichunk'),
rr.Literal('</strike>'))),
'multiline-i': rr.Node('i', rr.Sequence(
rr.Literal("''"),
rr.Ref('multiline-wikichunk'),
rr.Literal("''"))),
'multiline-nowiki': rr.Sequence(
rr.Literal('<nowiki>'),
rr.MultiLineText(),
rr.Literal('</nowiki>')),
'multiline-pre': rr.Node('pre', rr.Sequence(
rr.Literal('<pre>'),
rr.MultiLineText(),
rr.Literal('</pre>'))),
'multiline-tt': rr.Node('tt', rr.Sequence(
rr.Literal('<tt>'),
rr.Ref('multiline-wikichunk'),
rr.Literal('</tt>'))),
'multiline-u1': rr.Node('u', rr.Sequence(
rr.Literal('<u>'),
rr.Ref('multiline-wikichunk'),
rr.Literal('</u>'))),
'multiline-u2': rr.Node('u', rr.Sequence(
rr.Literal('<ins>'),
rr.Ref('multiline-wikichunk'),
rr.Literal('</ins>'))),
'singleline-a': rr.Node('a', rr.Sequence(
rr.Literal('[['),
rr.Node('href', rr.SingleLineText()),
rr.Literal('|'),
rr.Ref('singleline-wikichunk'),
rr.Literal(']]'))),
'singleline-b': rr.Node('b', rr.Sequence(
rr.Literal("'''"),
rr.Ref('singleline-wikichunk'),
rr.Literal("'''"))),
'singleline-bi': rr.Node('bi', rr.Sequence(
rr.Literal("'''''"),
rr.Ref('singleline-wikichunk'),
rr.Literal("'''''"))),
'singleline-code': rr.Node('code', rr.Sequence(
rr.Literal('<code>'),
rr.Ref('singleline-wikichunk'),
rr.Literal('</code>'))),
'singleline-comment': rr.Node('comment', rr.Sequence(
rr.Literal('<!-- '),
rr.SingleLineText(),
rr.Literal(' -->'))),
'singleline-del1': rr.Node('del', rr.Sequence(
rr.Literal('<del>'),
rr.Ref('singleline-wikichunk'),
rr.Literal('</del>'))),
'singleline-del2': rr.Node('del', rr.Sequence(
rr.Literal('<strike>'),
rr.Ref('singleline-wikichunk'),
rr.Literal('</strike>'))),
'singleline-i': rr.Node('i', rr.Sequence(
rr.Literal("''"),
rr.Ref('singleline-wikichunk'),
rr.Literal("''"))),
'singleline-nowiki': rr.Sequence(
rr.Literal('<nowiki>'),
rr.MultiLineText(),
rr.Literal('</nowiki>')),
'singleline-pre': rr.Node('pre', rr.Sequence(
rr.Literal('<pre>'),
rr.SingleLineText(),
rr.Literal('</pre>'))),
'singleline-tt': rr.Node('tt', rr.Sequence(
rr.Literal('<tt>'),
rr.Ref('singleline-wikichunk'),
rr.Literal('</tt>'))),
'singleline-u1': rr.Node('u', rr.Sequence(
rr.Literal('<u>'),
rr.Ref('singleline-wikichunk'),
rr.Literal('</u>'))),
'singleline-u2': rr.Node('u', rr.Sequence(
rr.Literal('<ins>'),
rr.Ref('singleline-wikichunk'),
rr.Literal('</ins>'))),
'special-nowikisingle': rr.Literal('<nowiki/>'),
'multiline-wikichunk': rr.ZeroOrMore(rr.Or(
rr.Ref('list-blockquote1'),
rr.Ref('list-blockquote2'),
rr.Ref('list-blockquote3'),
rr.Ref('list-blockquote4'),
rr.Ref('list-blockquote5'),
rr.Ref('list-def'),
rr.Ref('list-h2'),
rr.Ref('list-h3'),
rr.Ref('list-h4'),
rr.Ref('list-h5'),
rr.Ref('list-h6'),
rr.Ref('list-hr'),
rr.Ref('list-olli1'),
rr.Ref('list-olli2'),
rr.Ref('list-olli3'),
rr.Ref('list-pre'),
rr.Ref('list-ulli1'),
rr.Ref('list-ulli2'),
rr.Ref('list-ulli3'),
rr.Ref('multiline-a'),
rr.Ref('multiline-bi'), // before b and i
rr.Ref('multiline-b'),
rr.Ref('multiline-blockquote'),
rr.Ref('multiline-code'),
rr.Ref('multiline-comment'),
rr.Ref('multiline-del1'),
rr.Ref('multiline-del2'),
rr.Ref('multiline-i'),
rr.Ref('multiline-nowiki'),
rr.Ref('multiline-pre'),
rr.Ref('multiline-tt'),
rr.Ref('multiline-u1'),
rr.Ref('multiline-u2'),
rr.Ref('special-nowikisingle'),
rr.MultiLineText())),
'singleline-wikichunk': rr.ZeroOrMore(rr.Or(
rr.Ref('singleline-a'),
rr.Ref('singleline-bi'), // before b and i
rr.Ref('singleline-b'),
rr.Ref('singleline-code'),
rr.Ref('singleline-comment'),
rr.Ref('singleline-del1'),
rr.Ref('singleline-del2'),
rr.Ref('singleline-i'),
rr.Ref('singleline-nowiki'),
rr.Ref('singleline-pre'),
rr.Ref('singleline-tt'),
rr.Ref('singleline-u1'),
rr.Ref('singleline-u2'),
rr.Ref('special-nowikisingle'),
rr.SingleLineText())),
'paragraph': rr.Node('p', rr.Sequence(
rr.Ref('multiline-wikichunk'),
rr.Or(
rr.Sequence(rr.EndOfLine(), rr.Literal('\n')),
rr.EndOfText()))),
'wikidoc': rr.Node('wikidoc', rr.Sequence(
rr.ZeroOrMore(rr.Ref('paragraph')),
rr.EndOfText()))
};