From a3b4eafd737982b00c3983e81ebd8d539d4d9e9a Mon Sep 17 00:00:00 2001 From: Ian Gulliver Date: Mon, 30 Jun 2014 20:28:23 -0700 Subject: [PATCH] Fix some grammar problems in mediawiki --- grammars/mediawiki.js | 12 ++++++------ test.js | 22 +++++++++++++++++++--- 2 files changed, 25 insertions(+), 9 deletions(-) diff --git a/grammars/mediawiki.js b/grammars/mediawiki.js index b15aa7e..0cee575 100644 --- a/grammars/mediawiki.js +++ b/grammars/mediawiki.js @@ -81,7 +81,7 @@ var mediawiki = { 'list-pre': rr.Node('pre', rr.Sequence( rr.StartOfLine(), rr.Literal(' '), - rr.Ref('singleline-wikichunk'), + rr.SingleLineText(), rr.EndOfLine())), 'list-ulli1': rr.Node('ulli1', rr.Sequence( rr.StartOfLine(), @@ -203,7 +203,7 @@ var mediawiki = { 'special-nowikisingle': rr.Literal(''), - 'multiline-wikichunk': rr.Or( + 'multiline-wikichunk': rr.ZeroOrMore(rr.Or( rr.Ref('list-blockquote1'), rr.Ref('list-blockquote2'), rr.Ref('list-blockquote3'), @@ -240,9 +240,9 @@ var mediawiki = { rr.Ref('special-nowikisingle'), - rr.MultiLineText()), + rr.MultiLineText())), - 'singleline-wikichunk': rr.Or( + 'singleline-wikichunk': rr.ZeroOrMore(rr.Or( rr.Ref('singleline-bi'), rr.Ref('singleline-b'), rr.Ref('singleline-code'), @@ -258,10 +258,10 @@ var mediawiki = { rr.Ref('special-nowikisingle'), - rr.SingleLineText()), + rr.SingleLineText())), 'paragraph': rr.Node('p', rr.Sequence( - rr.ZeroOrMore(rr.Ref('multiline-wikichunk')), + rr.Ref('multiline-wikichunk'), rr.Or( rr.Sequence(rr.EndOfLine(), rr.Literal('\n')), rr.EndOfText()))), diff --git a/test.js b/test.js index 45e6833..fbfd9d2 100644 --- a/test.js +++ b/test.js @@ -48,8 +48,8 @@ QUnit.test('Base', function(assert) { '<u>this from being underlined</u>, or just try \n', '<pre>interrupting cow style.</pre>This is a ', "comment and \nshouldn't be visible
This is a ", - "blockquote

Header 2

Header 3 ''with ", - "italics''

Header 4

Header 5
Header 6

", + 'blockquote

Header 2

Header 3 with ', + 'italics

Header 4

Header 5
Header 6

', 'Item 1aItem 1bItem 2', 'Item 3Item 1cItem 1aItem 1b', 'Item 2Item 3Item 1c', @@ -63,5 +63,21 @@ QUnit.test('Base', function(assert) { var context = new rr.Context(mediawiki, content); var iterable = context.rules['wikidoc'].match(context); assert.equal(iterable.next().value.nodes[0].innerHTML, expected); - console.log(expected); +}); + +QUnit.test('singleline-wikichunk', function(assert) { + assert.expect(1); + var content = [ + "Regular line ''with italics''", + "=== Header 3 ''with italics'' ===" + ].join('\n'); + + var expected = [ + '

Regular line with italics', + '

Header 3 with italics

' + ].join(''); + + var context = new rr.Context(mediawiki, content); + var iterable = context.rules['wikidoc'].match(context); + assert.equal(iterable.next().value.nodes[0].innerHTML, expected); });