1 |
|
2 |
|
3 |
|
4 |
|
5 | var jade = require('jade');
|
6 | var inherits = require('util').inherits;
|
7 | var Lexer = require('./lexer');
|
8 |
|
9 | module.exports = Parser;
|
10 |
|
11 | function Parser(str, filename, options) {
|
12 | jade.Parser.apply(this, arguments);
|
13 | this.lexer = new Lexer(this.input, filename);
|
14 | }
|
15 | inherits(Parser, jade.Parser);
|
16 |
|
17 | Parser.prototype.parseExpr = function() {
|
18 | if (this.peek().type !== 'yield') return jade.Parser.prototype.parseExpr.apply(this, arguments);
|
19 | var tok = this.expect('yield');
|
20 | return {
|
21 | type: 'Yield',
|
22 | val: tok.val,
|
23 | line: tok.line,
|
24 | args: tok.args
|
25 | };
|
26 | };
|
27 |
|
28 | Parser.prototype.parseBlock = function() {
|
29 | var tok = this.peek();
|
30 | var block = jade.Parser.prototype.parseBlock.apply(this, arguments);
|
31 | delete this.blocks[block.name];
|
32 | block.args = tok.args;
|
33 | return block;
|
34 | };
|