From 4a8d868e9098a6981cf4dddae74a2cceec6b26eb Mon Sep 17 00:00:00 2001 From: Fabrice Weinberg Date: Sun, 4 Dec 2016 17:13:54 +0100 Subject: [PATCH] Parse {{yield}} as YieldTag --- compiler/parse/state/mustache.js | 13 +++++++++++++ compiler/parse/state/yield.js | 11 +++++++++++ test/parser/yield/input.html | 1 + test/parser/yield/output.json | 14 ++++++++++++++ 4 files changed, 39 insertions(+) create mode 100644 compiler/parse/state/yield.js create mode 100644 test/parser/yield/input.html create mode 100644 test/parser/yield/output.json diff --git a/compiler/parse/state/mustache.js b/compiler/parse/state/mustache.js index e412b1043f..b27e694608 100644 --- a/compiler/parse/state/mustache.js +++ b/compiler/parse/state/mustache.js @@ -177,6 +177,19 @@ export default function mustache ( parser ) { parser.stack.push( block ); } + // {{yield}} + else if ( parser.eat( 'yield' ) ) { + + parser.allowWhitespace(); + parser.eat( '}}', true ); + + parser.current().children.push({ + start, + end: parser.index, + type: 'YieldTag' + }); + } + else { const expression = readExpression( parser ); diff --git a/compiler/parse/state/yield.js b/compiler/parse/state/yield.js new file mode 100644 index 0000000000..a85c877271 --- /dev/null +++ b/compiler/parse/state/yield.js @@ -0,0 +1,11 @@ +export default function _yield ( parser ) { + const start = parser.index; + + parser.current().children.push({ + start, + end: parser.index, + type: 'YieldTag' + }); + + return null; +} diff --git a/test/parser/yield/input.html b/test/parser/yield/input.html new file mode 100644 index 0000000000..889d9eeadc --- /dev/null +++ b/test/parser/yield/input.html @@ -0,0 +1 @@ +{{yield}} diff --git a/test/parser/yield/output.json b/test/parser/yield/output.json new file mode 100644 index 0000000000..227da6561f --- /dev/null +++ b/test/parser/yield/output.json @@ -0,0 +1,14 @@ +{ + "html": { + "start": 0, + "end": 9, + "type": "Fragment", + "children": [ + { + "start": 0, + "end": 9, + "type": "YieldTag" + } + ] + } +}