Pseudo-formatters: one-time generated content
I'd like to discuss the idea - already suggested in the WakkaWiki community - of adding to Wikka a set of pseudo-formatters, taking care of one-time content generation. Whereas actual formatters interpret Wikka markup stored in the DB, pseudo-formatters only interpret some specific markup when a page is stored: the content is generated on-the-fly and stored in the database as ordinary Wikka content.
A couple of examples:
Short signature
:::
generates:
--
Long signature
::::
generates:
-- [2005-02-28 12:02]
Timestamp
::t::
generates:
[2005-02-28 12:02]
etc.
The code
The modifications required for this to work are quite silly. We just need to modify SavePage() in wikka.php, before the call to Query()
// one-time formatter: signature
if ($user) {
$longsignature = '-- '.$user.' [##'.date("Y-m-d H:i").'##]';
$shortsignature = '-- '.$user;
$body = preg_replace("/::::/",$longsignature,$body);
$body = preg_replace("/:::/",$shortsignature,$body);
}
// one-time formatter: timestamp
$timestamp = '[##'.date("Y-m-d H:i").'##]';
$body = preg_replace("/::t::/",$timestamp,$body);
if ($user) {
$longsignature = '-- '.$user.' [##'.date("Y-m-d H:i").'##]';
$shortsignature = '-- '.$user;
$body = preg_replace("/::::/",$longsignature,$body);
$body = preg_replace("/:::/",$shortsignature,$body);
}
// one-time formatter: timestamp
$timestamp = '[##'.date("Y-m-d H:i").'##]';
$body = preg_replace("/::t::/",$timestamp,$body);
A similar hack has to be done in the preview section of handlers/page/edit.php.
The timestamp markup is just an example, not something I would implement as such in Wikka (the format should be configurable).
Issues
As usual, what we need is a good markup (easy to remember, distinctive, expressive). If we choose to adopt :: as a tag for extensible markup, then the solution I propose here is not optimal.Your thoughts?
Related discussion
CategoryDevelopmentFormatters