mirror of
https://github.com/flynx/pWiki.git
synced 2025-10-29 10:00:08 +00:00
filter macro now cleaned up and working...
Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
parent
ca62396ef0
commit
c0644dcd30
46
pwiki2.js
46
pwiki2.js
@ -841,29 +841,18 @@ object.Constructor('Page', BasePage, {
|
||||
// | -<filter> <filter-spec>
|
||||
//
|
||||
// XXX support .NO_FILTERS ...
|
||||
// XXX not working on the test page...
|
||||
filter: function*(args, body, state){
|
||||
var filters = state.filters =
|
||||
state.filters
|
||||
?? []
|
||||
// local filters...
|
||||
state.filters ?? []
|
||||
// separate local filters...
|
||||
if(body){
|
||||
var parent_filters = state.filters
|
||||
filters = state.filters =
|
||||
[parent_filters] }
|
||||
// populate filters...
|
||||
Object.values(args)
|
||||
.forEach(function(filter){
|
||||
// clear disabled filters...
|
||||
// NOTE: '-<filter>' has precedence over '<filter>'...
|
||||
if(filter[0] == '-'
|
||||
&& filters.includes(filter.slice(1))){
|
||||
filters.splice(filters.indexOf(filter.slice(1)), 1) }
|
||||
// only add once...
|
||||
!filters.includes(filter)
|
||||
&& (filter[0] == '-'
|
||||
|| !filters.includes('-'+filter))
|
||||
&& filters.push(filter) })
|
||||
var outer_filters = filters
|
||||
filters = state.filters =
|
||||
[outer_filters] }
|
||||
|
||||
// merge in new filters...
|
||||
filters.splice(filters.length, 0, ...Object.values(args))
|
||||
|
||||
// local filters...
|
||||
if(body){
|
||||
// isolate from parent...
|
||||
@ -871,22 +860,21 @@ object.Constructor('Page', BasePage, {
|
||||
&& state.filters[0] instanceof Array
|
||||
&& state.filters.shift()
|
||||
|
||||
// serialize the block for later processing...
|
||||
var data = [...this.__parser__.expand(this, body, state)]
|
||||
// expand the body...
|
||||
var ast = [...this.__parser__.expand(this, body, state)]
|
||||
filters = state.filters
|
||||
|
||||
// restore global filters...
|
||||
state.filters = parent_filters
|
||||
state.filters = outer_filters
|
||||
|
||||
// post handler...
|
||||
// parse the body after we are done expanding...
|
||||
yield function(state){
|
||||
var outer_filters = state.filters
|
||||
state.filters = this.__parser__.normalizeFilters(filters)
|
||||
var res = [...this.__parser__.parse(this, data, state)]
|
||||
var res = [...this.__parser__.parse(this, ast, state)]
|
||||
.flat()
|
||||
.join('')
|
||||
state.filters = filters
|
||||
return { data: res } } }
|
||||
return },
|
||||
state.filters = outer_filters
|
||||
return { data: res } } } },
|
||||
//
|
||||
// @include(<path>)
|
||||
//
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user