Я пытаюсь следовать учебному пособию на sweet.js (https://www.sweetjs.org/doc/tutorial)), и я попытался написать простой макрос, который должен быть расширен до 'console.log (...) с двумя параметрами, которые у меня есть к макросу.
syntax HELLO = function (ctx) {
let first = ctx.next().value
let second = ctx.next().value
return
#`console.log("Hello " + ${first} + ", Hello " + ${second} + "!")`
}
// render
console.log('This line should be left alone by sjs')
HELLO ('AA', 'BB')
Я ожидаю, что макрос расширится до console.log("Hello AA, Hello BB !")
, но получит синтаксическую ошибку
d:\projects\Node\sweet>sjs --no-babel new.macro
C:\Users\127958\AppData\Roaming\npm\node_modules\@sweet-js\cli\node_modules\@sweet-js\core\dist\load-syntax.js:64
throw new Error('replacement values for syntax template must not be null or undefined');
^
Error: replacement values for syntax template must not be null or undefined
at sanitizeReplacementValues (C:\Users\127958\AppData\Roaming\npm\node_modules\@sweet-js\cli\node_modules\@sweet-js\core\dist\load-syntax.js:64:11)
Хотя он работает только с одним параметром. Но даже тогда мне нужно использоватьоператор сцепления внутри console.log, поэтому
return #`console.log("Hello " + ${first})`
расширяется до
console.log("Hello " + "AA");
, но
return #`console.log("Hello ${first}")`
, расширяется до
console.log("Hello ${first}");
в чем проблема.
есть идеи?