For "magic words" that are processed at render-time, I would suggest to use the same syntax as for macros (whatever that may be) like <<CurrentDate>>. Effectively, these just become macros, there is no need for a separate syntax.
For "magic words" that are processed at save-time, a character could be added in front, e.g. ~<<CurrentDate>>. Reusing the escape character (tilde) here would degrade nicely if, for some reason, save-time processing didn't happen (i.e., it would just render as "<<CurrentDate>>").
If angle brackets were not used for the save-time case, (i.e, ~CurrentDate instead of ~<<CurrentDate>>), there would be no easy way to include arguments like ~<<CurrentTimePlugin format='yyyy.MM.dd'>>.
-- StephenDay, 2008-Mai-13
The mail below was forwarded to me. I'll put it online, will refactor it later
-- ChristophSauer, 2008-Mai-06 13:41 (CEST)
> Hi,
>
> I edit at Wikipedia, where I'm a long standing user with a lot of
> experience of the markup and its few limitations. I have to say, very
> nice work on Creole - I'll be watching it.
>
> I have a couple of suggestions for markup that are limitations in
> MediaWiki, perhaps simple to provide in Creole, to consider. What the
> mediawiki software designers call "magic words" - that is, data
> substituted at edit time (~~~~ as signature, ~~~~~ as date) or at
> render time (so-called {{MAGICWORDS}} ) are poorly provided in the syntax.
>
> Without complicating, may I suggest a structure in the creole schema
> to handle "such arbitrary words as the wiki designer/creole user
> might wish to create"?
>
> Syntax would be a single char prefix , hence <char><a-z><non-a-z
> terminator>
>
> For example:
>
> ~date ~sig ~serverload ~sitemanager ~myname ~arbitraryword
>
> ~~date would then render as "~date"
>
> Without formally defining any "expected" words in the markup, the
> existence of a structure by which a creole user could add their own
> arbitrary words to the syntax would be nice.
>
> This is a significant item missing from the current specification,
> when I look over it.
>
>
> PRACTICAL IMPLEMENTATION:
>
> A wiki designer using creole provides a means for the creole renderer
> to get a value for an arbitrary "word". For example: foo (word,
> is_saving)
>
> Is_saving is a Boolean flag whether the value is being sought because
> an edit is being saved (1) or because markup is being rendered (0).
> Such words are replaced with whatever foo() returns, prior to other
> rendering operations.
>
> Example:
>
> Foo ("name", ?) returns the name of the logged in user. So saving a
> text of the form "blah. ~sig" will be replaced by "blah. <username>" before saving.
>
> Foo ("numberofpages",1) is replaced by "~numberofpages" and foo
> ("numberofpages",0) replaced by a count of the number of pages. So on
> saving the word is preserved, and on rendering is replaced by a page count.
>
> Foo ("sitemanageraddress",1) is replaced by "~ sitemanageraddress"
> and foo
> ("sitemanageraddress",0) replaced by a fixed string "johndoe@gmail.com"
> which is modified when the current site manager address changes. On
> saving the ~ sitemanageraddress is preserved, and on rendering
> replaced by the correct current email address.
>
> Best,
>
> FT2


.