diff --git a/packages/pug-lexer/index.js b/packages/pug-lexer/index.js index 07afac50e..abf987a06 100644 --- a/packages/pug-lexer/index.js +++ b/packages/pug-lexer/index.js @@ -545,6 +545,7 @@ Lexer.prototype = { interpolated: true, startingLine: this.lineno, startingColumn: this.colno, + plugins: this.plugins, }); var interpolated; try { diff --git a/packages/pug/test/plugins.test.js b/packages/pug/test/plugins.test.js new file mode 100644 index 000000000..21447bc90 --- /dev/null +++ b/packages/pug/test/plugins.test.js @@ -0,0 +1,18 @@ +const pug = require('../'); + +test('#3295 - lexer plugins should be used in tag interpolation', () => { + const lex = { + advance(lexer) { + if ('~' === lexer.input.charAt(0)) { + lexer.tokens.push(lexer.tok('text', 'twiddle-dee-dee')); + lexer.consume(1); + lexer.incrementColumn(1); + return true; + } + }, + }; + const input = 'p Look at #[~]'; + const expected = '

Look at twiddle-dee-dee

'; + const output = pug.render(input, {plugins: [{lex}]}); + expect(output).toEqual(expected); +});