This proposal is based on the discussion on [[Talk.Creole 0.4]].

==Rationale==

There is a need to support arbitrary data in Creole text, for at least two purposes:
* Modules (plugins) which allow a user to insert the result of the plugin into the page's contents.
* [[http://en.wikipedia.org/wiki/Literate_programming|Literate programming]]

A fixed syntax for parameters should be avoided in Creole specification, because it is difficult to anticipate the requirements for data type, character set with escape sequences, etc. However, a simple mechanism which permits each plugin to recognize its data and to ignore other ones is important.

==New syntax==

===Block placeholder===

{{{
<<< org.domain.application
arbitrary data
on multiple lines
>>>
}}}

There must not be any space before {{{<<<}}} (see inline placeholder below). Spaces between {{{<<<}}} and the reversed domain name are ignored; nothing (except for spaces which are ignored) may follow the reversed domain name until the end of line.

===Inline placeholder===

{{{
context where Creole markup can appear <<< org.domain.application
arbitrary data
on multiple lines
>>>
more text
}}}

The plugin is expected to put the result (whatever it is) inline, without any line break before or after it. To begin a new paragraph with a plugin, begin with a space.