diff --git a/pwiki/page.js b/pwiki/page.js
index 78dddb7..6a15101 100755
--- a/pwiki/page.js
+++ b/pwiki/page.js
@@ -954,11 +954,7 @@ object.Constructor('Page', BasePage, {
// XXX SORT sorting not implemented yet....
macro: Macro(
['name', 'src', 'sort', 'text', 'join', 'else', ['strict', 'nonstrict']],
- // XXX GENERATOR...
async function*(args, body, state){
- /*/
- async function(args, body, state){
- //*/
var that = this
var name = args.name //?? args[0]
var src = args.src
@@ -976,6 +972,7 @@ object.Constructor('Page', BasePage, {
: text
var strict = args.strict
&& !args.nonstrict
+ var join
var _getBlock = function(name){
var block = args[name] ?
@@ -1000,17 +997,21 @@ object.Constructor('Page', BasePage, {
if(name){
name = await base.parse(name, state)
// define new named macro...
- if(text){
- ;(state.macros = state.macros ?? {})[name] = text
+ if(text.length != 0){
+ // 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...
} else if(state.macros
&& name in state.macros){
- text = state.macros[name] } }
+ [text, join] = state.macros[name] } }
if(src){
src = await base.parse(src, state)
- var join = _getBlock('join')
+ join = _getBlock('join')
+ ?? join
join = join
&& await base.parse(join, state)
@@ -1590,6 +1591,16 @@ module.Test = {
Z
` },
+ macros: {
+ text: object.doc`
+
+ - @include(./path)
+
+
+
+
+
+ `},
}
var Settings =