fixed macro reuse...

Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
Alex A. Naanou 2022-08-21 01:28:29 +03:00
parent f8e5b88a09
commit 561de44f54

View File

@ -954,11 +954,7 @@ object.Constructor('Page', BasePage, {
// XXX SORT sorting not implemented yet.... // XXX SORT sorting not implemented yet....
macro: Macro( macro: Macro(
['name', 'src', 'sort', 'text', 'join', 'else', ['strict', 'nonstrict']], ['name', 'src', 'sort', 'text', 'join', 'else', ['strict', 'nonstrict']],
// XXX GENERATOR...
async function*(args, body, state){ async function*(args, body, state){
/*/
async function(args, body, state){
//*/
var that = this var that = this
var name = args.name //?? args[0] var name = args.name //?? args[0]
var src = args.src var src = args.src
@ -976,6 +972,7 @@ object.Constructor('Page', BasePage, {
: text : text
var strict = args.strict var strict = args.strict
&& !args.nonstrict && !args.nonstrict
var join
var _getBlock = function(name){ var _getBlock = function(name){
var block = args[name] ? var block = args[name] ?
@ -1000,17 +997,21 @@ object.Constructor('Page', BasePage, {
if(name){ if(name){
name = await base.parse(name, state) name = await base.parse(name, state)
// define new named macro... // define new named macro...
if(text){ if(text.length != 0){
;(state.macros = state.macros ?? {})[name] = text // NOTE: we do not need to worry about saving
// stateful text here because it is only
// grouped and not expanded...
;(state.macros = state.macros ?? {})[name] = [text, _getBlock('join')]
// use existing macro... // use existing macro...
} else if(state.macros } else if(state.macros
&& name in state.macros){ && name in state.macros){
text = state.macros[name] } } [text, join] = state.macros[name] } }
if(src){ if(src){
src = await base.parse(src, state) src = await base.parse(src, state)
var join = _getBlock('join') join = _getBlock('join')
?? join
join = join join = join
&& await base.parse(join, state) && await base.parse(join, state)
@ -1590,6 +1591,16 @@ module.Test = {
<slot name="mixed-slot-content"> <slot name="mixed-slot-content">
<content/> Z <content/> Z
</slot> ` }, </slot> ` },
macros: {
text: object.doc`
<macro name="list" join="<br>">
- @include(./path)
</macro>
<macro name="list" src="/Test/*"/>
<br><br>
<macro name="list" src="/Test/*" join=",<br>"/>
`},
} }
var Settings = var Settings =