mirror of
https://github.com/flynx/pWiki.git
synced 2025-12-17 08:31:38 +00:00
playing with the parser...
Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
parent
52cdbcc63d
commit
c60569e021
@ -259,7 +259,7 @@ Replaced with current page title.
|
|||||||
|
|
||||||
|
|
||||||
**`$INDEX`**
|
**`$INDEX`**
|
||||||
Replaced with current page index in pattern selection.
|
Replaced with current page index in pattern matching.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
83
macro.js
83
macro.js
@ -474,6 +474,7 @@ module = {
|
|||||||
// /SomePage/SomePage
|
// /SomePage/SomePage
|
||||||
// or any path matching:
|
// or any path matching:
|
||||||
// /\/(SomePage\/)+/
|
// /\/(SomePage\/)+/
|
||||||
|
// XXX slow when lots of pages need to be included...
|
||||||
parse: function(context, text, state, skip_post, pattern){
|
parse: function(context, text, state, skip_post, pattern){
|
||||||
var that = this
|
var that = this
|
||||||
|
|
||||||
@ -551,16 +552,22 @@ module = {
|
|||||||
// #text / comment node -> parse the @... macros...
|
// #text / comment node -> parse the @... macros...
|
||||||
if(e.nodeType == e.TEXT_NODE || e.nodeType == e.COMMENT_NODE){
|
if(e.nodeType == e.TEXT_NODE || e.nodeType == e.COMMENT_NODE){
|
||||||
// get actual element content...
|
// get actual element content...
|
||||||
var text = $('<div>').append($(e).clone()).html()
|
var text = e.nodeValue
|
||||||
|
|
||||||
// conditional comment...
|
// conditional comment...
|
||||||
if(e.nodeType == e.COMMENT_NODE
|
if(e.nodeType == e.COMMENT_NODE){
|
||||||
&& /^<!--\s*\[pWiki\[(.|\n)*\]\]\s*-->$/.test(text)){
|
text = /^<!--\s*\[pWiki\[(.|\n)*\]\]\s*-->$/.test(text) ?
|
||||||
text = text
|
text
|
||||||
.replace(/^<!--\s*\[pWiki\[/, '')
|
.replace(/^<!--\s*\[pWiki\[/, '')
|
||||||
.replace(/\]\]\s*-->$/, '')
|
.replace(/\]\]\s*-->$/, '')
|
||||||
|
: ('<!--'+ text +'-->')
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
var t = _parseText(context, text, macro)
|
||||||
|
text != t
|
||||||
|
&& $(e).replaceWith(t)
|
||||||
|
//*/
|
||||||
$(e).replaceWith(_parseText(context, text, macro))
|
$(e).replaceWith(_parseText(context, text, macro))
|
||||||
|
|
||||||
// node -> html-style + attrs...
|
// node -> html-style + attrs...
|
||||||
@ -627,38 +634,46 @@ module = {
|
|||||||
// filter stage...
|
// filter stage...
|
||||||
_filter(state.filters.concat(this.__filters__), this.filter)
|
_filter(state.filters.concat(this.__filters__), this.filter)
|
||||||
|
|
||||||
|
// XXX DEBUG...
|
||||||
|
var t = Date.now()
|
||||||
|
console.log('>>>', context.path())
|
||||||
|
|
||||||
// merge includes...
|
// merge includes...
|
||||||
parsed
|
parsed
|
||||||
.html(parsed.html().replace(include_marker, function(){
|
.html(parsed.html()
|
||||||
var page = state.include.shift()
|
.replace(include_marker, function(){
|
||||||
var elem = $(page.shift())
|
var page = state.include.shift()
|
||||||
page = page.pop()
|
var elem = $(page.shift())
|
||||||
var isolated = elem.attr('isolated') == 'true'
|
page = page.pop()
|
||||||
|
var isolated = elem.attr('isolated') == 'true'
|
||||||
|
|
||||||
var seen = state.seen.slice()
|
var seen = state.seen.slice()
|
||||||
if(seen.indexOf(page.path()) >= 0){
|
if(seen.indexOf(page.path()) >= 0){
|
||||||
return elem.html()
|
return elem.html()
|
||||||
}
|
}
|
||||||
seen.push(page.path())
|
seen.push(page.path())
|
||||||
|
|
||||||
return page.map(function(page){
|
return page.map(function(page){
|
||||||
return $('<div>')
|
return $('<div>')
|
||||||
.append(elem
|
.append(elem
|
||||||
.clone()
|
.clone()
|
||||||
.attr('src', page.path())
|
.attr('src', page.path())
|
||||||
.append(that
|
.append(that
|
||||||
.parse(page,
|
.parse(page,
|
||||||
page.raw(),
|
page.raw(),
|
||||||
{
|
{
|
||||||
//slots: !isolated ? state.slots : {},
|
//slots: !isolated ? state.slots : {},
|
||||||
templates: state.templates,
|
templates: state.templates,
|
||||||
seen: seen,
|
seen: seen,
|
||||||
},
|
},
|
||||||
!isolated)))
|
!isolated)))
|
||||||
//true)))
|
//true)))
|
||||||
.html()
|
.html()
|
||||||
}).join('\n')
|
}).join('\n')
|
||||||
}))
|
}))
|
||||||
|
|
||||||
|
// XXX DEBUG...
|
||||||
|
console.log('<<<', context.path(),'TIME:', Date.now() - t)
|
||||||
|
|
||||||
// post processing...
|
// post processing...
|
||||||
if(!skip_post){
|
if(!skip_post){
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user