mirror of
https://github.com/flynx/pWiki.git
synced 2025-10-30 10:30: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
44
pwiki2.js
44
pwiki2.js
@ -841,29 +841,18 @@ object.Constructor('Page', BasePage, {
|
|||||||
// | -<filter> <filter-spec>
|
// | -<filter> <filter-spec>
|
||||||
//
|
//
|
||||||
// XXX support .NO_FILTERS ...
|
// XXX support .NO_FILTERS ...
|
||||||
// XXX not working on the test page...
|
|
||||||
filter: function*(args, body, state){
|
filter: function*(args, body, state){
|
||||||
var filters = state.filters =
|
var filters = state.filters =
|
||||||
state.filters
|
state.filters ?? []
|
||||||
?? []
|
// separate local filters...
|
||||||
// local filters...
|
|
||||||
if(body){
|
if(body){
|
||||||
var parent_filters = state.filters
|
var outer_filters = filters
|
||||||
filters = state.filters =
|
filters = state.filters =
|
||||||
[parent_filters] }
|
[outer_filters] }
|
||||||
// populate filters...
|
|
||||||
Object.values(args)
|
// merge in new filters...
|
||||||
.forEach(function(filter){
|
filters.splice(filters.length, 0, ...Object.values(args))
|
||||||
// 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) })
|
|
||||||
// local filters...
|
// local filters...
|
||||||
if(body){
|
if(body){
|
||||||
// isolate from parent...
|
// isolate from parent...
|
||||||
@ -871,22 +860,21 @@ object.Constructor('Page', BasePage, {
|
|||||||
&& state.filters[0] instanceof Array
|
&& state.filters[0] instanceof Array
|
||||||
&& state.filters.shift()
|
&& state.filters.shift()
|
||||||
|
|
||||||
// serialize the block for later processing...
|
// expand the body...
|
||||||
var data = [...this.__parser__.expand(this, body, state)]
|
var ast = [...this.__parser__.expand(this, body, state)]
|
||||||
filters = state.filters
|
filters = state.filters
|
||||||
|
|
||||||
// restore global filters...
|
state.filters = outer_filters
|
||||||
state.filters = parent_filters
|
|
||||||
|
|
||||||
// post handler...
|
// parse the body after we are done expanding...
|
||||||
yield function(state){
|
yield function(state){
|
||||||
|
var outer_filters = state.filters
|
||||||
state.filters = this.__parser__.normalizeFilters(filters)
|
state.filters = this.__parser__.normalizeFilters(filters)
|
||||||
var res = [...this.__parser__.parse(this, data, state)]
|
var res = [...this.__parser__.parse(this, ast, state)]
|
||||||
.flat()
|
.flat()
|
||||||
.join('')
|
.join('')
|
||||||
state.filters = filters
|
state.filters = outer_filters
|
||||||
return { data: res } } }
|
return { data: res } } } },
|
||||||
return },
|
|
||||||
//
|
//
|
||||||
// @include(<path>)
|
// @include(<path>)
|
||||||
//
|
//
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user