From b11a659f0c752fee303f77faef3158f057726c52 Mon Sep 17 00:00:00 2001 From: Ian Gulliver Date: Sun, 3 Aug 2014 11:04:52 -0700 Subject: [PATCH] Allow distinguishing tag names in badpenny. --- static/grammars/badpenny.js | 9 ++++++--- static/test.js | 12 +++++++----- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/static/grammars/badpenny.js b/static/grammars/badpenny.js index 86865b9..3807439 100644 --- a/static/grammars/badpenny.js +++ b/static/grammars/badpenny.js @@ -7,7 +7,7 @@ badpenny = rr.Parser({ rr.Literal('}}')), rr.Sequence( rr.Literal('{{('), - rr.SavedLiteral('tagname'), + rr.Node('name', rr.SingleLineText()), rr.Literal('}}'), rr.MultiLineText(), rr.Literal('{{)'), @@ -22,7 +22,7 @@ badpenny = rr.Parser({ rr.Literal('}}')), rr.Sequence( rr.Literal('{{['), - rr.SavedLiteral('tagname'), + rr.Node('name', rr.SingleLineText()), rr.Literal('}}'), rr.MultiLineText(), rr.Literal('{{]'), @@ -31,7 +31,7 @@ badpenny = rr.Parser({ 'value': rr.Node('value', rr.Sequence( rr.Literal('{{'), - rr.SingleLineText(), + rr.Node('name', rr.SingleLineText()), rr.Literal('}}'))), 'chunk': rr.Or( @@ -44,4 +44,7 @@ badpenny = rr.Parser({ rr.ZeroOrMore(rr.Ref('chunk')), rr.EndOfText())) }, [ + rr.ChildToAttribute('container', 'name'), + rr.ChildToAttribute('repeated', 'name'), + rr.ChildToAttribute('value', 'name') ]); diff --git a/static/test.js b/static/test.js index d83f135..c520e6d 100644 --- a/static/test.js +++ b/static/test.js @@ -114,14 +114,16 @@ QUnit.test('Base', function(assert) { assert.expect(1); var content = [ 'foo{{value1}}bar', - 'foo{{(container}}contents{{)nottheend}}more contents{{)container}}bar', - 'foo{{[repeated}}testing{{]notthis}}{{)repeated}}zig{{]repeated}}bar' + 'foo{{(container1}}contents{{)nottheend}}more contents{{)container1}}bar', + 'foo{{[repeated1}}testing{{]notthis}}{{)repeated1}}zig{{]repeated1}}bar' ].join('\n'); var expected = [ - 'foovalue1bar\n', - 'foocontents{{)nottheend}}more contentsbar\n', - 'footesting{{]notthis}}{{)repeated}}zigbar' + 'foobar\n', + 'foocontents{{)nottheend}}more contents', + 'bar\n', + 'footesting{{]notthis}}{{)repeated1}}zig', + 'bar' ].join(''); assert.equal(badpenny.parseFromString(content).innerHTML, expected);