Parser 2011/Stage 3: Expansion
This page is obsolete. It is being retained for archival purposes. It may document extensions or features that are obsolete and/or no longer supported. Do not rely on the information here being up-to-date. |
Parser functions
[edit]Template expansion
[edit]very prelim :D
The page:
{{Hello|greet=Alice}} |
[ { type: 'template', name: 'Hello', params: { 'greet': "Alice" } } ] |
The Template:Hello page:
Howdy {{{greet|stranger}}}! |
[ 'Howdy ', { type: 'param', name: 'greet', default: 'stranger' }, '!' ] |
Now we can expand the lot into something like:
[ { type: 'expanded-template', name: 'Hello', params: { 'greet': 'Alice' } content: [ 'Howdy ', { type: 'expanded-param' 'content': [ 'Alice', ], }, '!' ] } ] |
(Or should the content nodes just include a reference to the template param? or?)
Rendering attachment
[edit]It's not uncommon to have structures in wikitext, especially when templates are involved, where separate 'start' and 'end' points cross some hierarchical lines. For instance:
{{start-fancy-table}} {{a-table-row|some stuff}} {{a-table-row|other stuff}} |- |extra stuff |manually added {{end-fancy-table}}
This gives us a structure something like:
template: start-fancy-table table tr, th, /th, th, /th, /tr template: a-table-row tr, td, /td, td, /td, /tr template: a-table-row tr, td, /td, td, /td, /tr tr, td, td template: end-fancy-table tr, td, /td, td, /td, /tr /table
Depending on the actual template structure, the various bits may all appear on different 'levels'. HTML would generally whinge at this sort of structure directly translated. :)
When rendering this to output or showing an editor, it's necessary to go through the output and pair up matching open/close pairs for these things so proper output nesting can be created.