mediawiki image grammar.

This commit is contained in:
Ian Gulliver
2014-06-30 21:46:44 -07:00
parent 7affa466d4
commit f326683aaa
2 changed files with 26 additions and 0 deletions

View File

@@ -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('<nowiki>'),
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'),

16
test.js
View File

@@ -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 = [
'<p><imgtemp><src>http://www.example.com/foo</src>',
'<caption>Test image <i>with formatting</i></caption></imgtemp></p>'
].join('');
var context = new rr.Context(mediawiki, content);
var iterable = context.rules['wikidoc'].match(context);
assert.equal(iterable.next().value.nodes[0].innerHTML, expected);
});