[pmwiki-users] Markup Processing Order
The Editor
editor at fast.st
Sun Aug 20 10:44:31 CDT 2006
Hi all,
Just discovered a serious glitch in the FAST Data Project recipe.
Urgent help needed!
I have a markup (:data Group.Name:) which pulls all the data fields
off a given wiki page and sets them as page variables. Currently the
processing order is set to
'<{$var}'
It works perfect for normal uses. The problem is, for some
applications I need this:
(:data Group.{$Name}:)
When I actually got around to trying some of these applications I
discovered it processes the data markup before translating $Name--thus
giving me error messages as it tries to fread from literal:
Group.{$Name}.
I tried setting it to
'>{$var}'
thinking this would then set all the variables just after {$Name}--and
it does gets rid of all the error messages--but too late to do
anything with the page variables! That is, they show up blank,
because the function is run after all the $var's have already been
translated. I guess it's a problem of the chicken or the egg.
Can someone offer a suggestion to help me through this perplexing
dilemna? The only solution that presents itself to me is to somehow
modify stdmarkup so it runs some page variables early ($Name, $Group,
etc.), and the rest later, in two steps. Or perhaps adding a second
step just after $vars called $data with a code like $$Name to
distinguish from $Name, etc. Anything... Hate to tamper with the
scripts but this is mission critical for me... Thanks!
Cheers,
Caveman
PS. Here is the data retrieval function if it might help anyone:
# Directive to retrieve data from another page
Markup('fastdata', '<{$var}', '/\(:data(.*?):\)/ei', "ReadData('$1')");
# Function called by directive to retrieve form data
function ReadData($l) {
global $WorkDir, $FmtPV;
$datapage = substr($l, 1);
if ($dr = fopen("$WorkDir/$datapage", "rb")){
$pc = fread($dr, filesize("$WorkDir/$datapage"));
fclose($dr);
$dc = explode("(:comment data:) %0a%0a", $pc);
$db = explode(" %0a%0a", $dc[1]);
$i = 0;
while ($i < count($db)-1) {
$dv = explode ("=", $db[$i]);
$FmtPV["$$dv[0]"] = stripslashes("$dv[1]");
$i = $i + 1;
}
return;
}
return "data not found";
}
More information about the pmwiki-users
mailing list