From f326683aaad27e84485a9875be9058ebccbd6c62 Mon Sep 17 00:00:00 2001 From: Ian Gulliver Date: Mon, 30 Jun 2014 21:46:44 -0700 Subject: [PATCH] mediawiki image grammar. --- grammars/mediawiki.js | 10 ++++++++++ test.js | 16 ++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/grammars/mediawiki.js b/grammars/mediawiki.js index 099e58e..4b06487 100644 --- a/grammars/mediawiki.js +++ b/grammars/mediawiki.js @@ -137,6 +137,15 @@ var mediawiki = { rr.Literal("''"), rr.Ref('multiline-wikichunk'), rr.Literal("''"))), + 'multiline-img': rr.Node('imgtemp', rr.Sequence( + rr.Literal('[[File:'), + rr.Node('src', rr.SingleLineText()), + rr.ZeroOrMore(rr.Sequence( + rr.Literal('|'), + rr.Node('option', rr.SingleLineText()))), + rr.Literal('|'), + rr.Node('caption', rr.Ref('multiline-wikichunk')), + rr.Literal(']]'))), 'multiline-nowiki': rr.Sequence( rr.Literal(''), rr.MultiLineText(), @@ -236,6 +245,7 @@ var mediawiki = { rr.Ref('list-ulli2'), rr.Ref('list-ulli3'), + rr.Ref('multiline-img'), // before a rr.Ref('multiline-a'), rr.Ref('multiline-bi'), // before b and i rr.Ref('multiline-b'), diff --git a/test.js b/test.js index 4b76718..beb76e1 100644 --- a/test.js +++ b/test.js @@ -97,3 +97,19 @@ QUnit.test('Link', function(assert) { var iterable = context.rules['wikidoc'].match(context); assert.equal(iterable.next().value.nodes[0].innerHTML, expected); }); + +QUnit.test('Image', function(assert) { + assert.expect(1); + var content = [ + "[[File:http://www.example.com/foo|Test image ''with formatting'']]" + ].join('\n'); + + var expected = [ + '

http://www.example.com/foo', + 'Test image with formatting

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