11const NunjucksLib = require ( "nunjucks" ) ;
22const TemplateEngine = require ( "./TemplateEngine" ) ;
3- const config = require ( "../Config" ) ;
43
54class Nunjucks extends TemplateEngine {
65 constructor ( name , inputDir ) {
@@ -69,18 +68,25 @@ class Nunjucks extends TemplateEngine {
6968 this . tags = [ shortcodeName ] ;
7069
7170 this . parse = function ( parser , nodes , lexer ) {
72- var tok = parser . nextToken ( ) ;
71+ let args ;
72+ let tok = parser . nextToken ( ) ;
7373
74- var args = parser . parseSignature ( null , true ) ;
75- parser . advanceAfterBlockEnd ( tok . value ) ;
74+ args = parser . parseSignature ( true , true ) ;
75+
76+ // Nunjucks bug with non-paired custom tags bug still exists even
77+ // though this issue is closed. Works fine for paired.
78+ // https://github.com/mozilla/nunjucks/issues/158
79+ if ( args . children . length === 0 ) {
80+ args . addChild ( new nodes . Literal ( 0 , 0 , "" ) ) ;
81+ }
7682
83+ parser . advanceAfterBlockEnd ( tok . value ) ;
7784 return new nodes . CallExtensionAsync ( this , "run" , args ) ;
7885 } ;
7986
8087 this . run = function ( ...args ) {
8188 let callback = args . pop ( ) ;
8289 let [ context , ...argArray ] = args ;
83-
8490 let ret = new nunjucksEngine . runtime . SafeString (
8591 shortcodeFn ( ...argArray )
8692 ) ;
@@ -98,7 +104,7 @@ class Nunjucks extends TemplateEngine {
98104 this . parse = function ( parser , nodes , lexer ) {
99105 var tok = parser . nextToken ( ) ;
100106
101- var args = parser . parseSignature ( null , true ) ;
107+ var args = parser . parseSignature ( true , true ) ;
102108 parser . advanceAfterBlockEnd ( tok . value ) ;
103109
104110 var body = parser . parseUntilBlocks ( "end" + shortcodeName ) ;
@@ -111,7 +117,6 @@ class Nunjucks extends TemplateEngine {
111117 let callback = args . pop ( ) ;
112118 let body = args . pop ( ) ;
113119 let [ context , ...argArray ] = args ;
114-
115120 let ret = new nunjucksEngine . runtime . SafeString (
116121 shortcodeFn ( body ( ) , ...argArray )
117122 ) ;
0 commit comments