mirror of
https://github.com/flynx/pWiki.git
synced 2025-10-29 10:00:08 +00:00
bugfix...
Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
parent
3d3b76d914
commit
0f7be9d6b8
@ -44,6 +44,8 @@ module.store = {
|
||||
}
|
||||
//*/
|
||||
|
||||
console.log('---', page.Config)
|
||||
|
||||
module.setup =
|
||||
Promise.all([
|
||||
// static stores...
|
||||
|
||||
@ -541,40 +541,46 @@ module.BaseParser = {
|
||||
ast = typeof(ast) != 'object' ?
|
||||
this.expand(page, ast, state)
|
||||
: ast
|
||||
// XXX .awaitOrRun(..) will check inside the array for promises, do
|
||||
// XXX .awaitOrRun(..) will check inside the input array for promises, do
|
||||
// we need to do this???
|
||||
ast = Promise.awaitOrRun(
|
||||
ast,
|
||||
function(ast){
|
||||
var async_content = false
|
||||
return ast
|
||||
// XXX in case of @filter(..) can be a function that
|
||||
// returns a promise...
|
||||
// ...on a sync action this promise does not get a
|
||||
// chance to resolve, and thus its value is lost...
|
||||
// ...should this be fixed here or in filter???
|
||||
// fixing it here -- mark and wrap ast in
|
||||
// Promise's .all(..), .iter(..) or .seqiter(..)
|
||||
// ...I'm leaning to fixing this in @filter(..)
|
||||
.map(function(e){
|
||||
// expand delayed sections...
|
||||
e = typeof(e) == 'function' ?
|
||||
e.call(page, state)
|
||||
: e
|
||||
// promise...
|
||||
if(e instanceof Promise){
|
||||
async_content = true
|
||||
return e
|
||||
// expand arrays...
|
||||
if(e instanceof Array
|
||||
} else if(e instanceof Array
|
||||
|| e instanceof types.Generator){
|
||||
return that.resolve(page, e, state)
|
||||
// data -- unwrap content...
|
||||
} else if(e instanceof Object && 'data' in e){
|
||||
return Promise.awaitOrRun(
|
||||
var res = Promise.awaitOrRun(
|
||||
that.resolve(page, e.data, state),
|
||||
function(e){
|
||||
return { data: e } })
|
||||
res instanceof Promise
|
||||
&& (async_content = true)
|
||||
return res
|
||||
// skipped items...
|
||||
} else if(e instanceof Object && e.skip){
|
||||
return []
|
||||
} else {
|
||||
return [e] } })
|
||||
// NOTE: if we still have promises in the ast, wrap the
|
||||
// whole thing in a promise...
|
||||
.run(function(){
|
||||
return async_content ?
|
||||
Promise.iter(this)
|
||||
: this })
|
||||
.flat() })
|
||||
return ast instanceof Promise ?
|
||||
// keep the API consistently array-like...
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user