diff --git a/editions/tw5.com/tiddlers/wikitext/Variables, Macros and Subsitutions in WikiText.tid b/editions/tw5.com/tiddlers/wikitext/Variables, Macros and Subsitutions in WikiText.tid new file mode 100644 index 000000000..c89feace2 --- /dev/null +++ b/editions/tw5.com/tiddlers/wikitext/Variables, Macros and Subsitutions in WikiText.tid @@ -0,0 +1,53 @@ +caption: Variables, Parameters, Subsitutions +created: 20141018090608643 +modified: 20141018104201050 +tags: WikiText +title: Variables, Macros and Subsitutions in WikiText +type: text/vnd.tiddlywiki + +! Syntax for Attributes + +The syntax for the attributes of [[HTML elements|HTML in WikiText]] and [[widgets|Widgets in WikiText]]: + +* `"text"` or `'text'` - passed as a literal value +* `{{text reference}}` - [[transcludes|Transclusion in WikiText]] a text reference +* `<>` - transcludes a variable or macro invocation. + +! Syntax for Filter + +Using single brace `{...}` and `<...>` when referenced as operands in [[Filter expression|Introduction to Filters]]. + +* Text reference as `[search{$:/temp/search}]` or `[prefix{tiddlerA!!fieldname}]` +* Variable reference as `[search]` + +! Variables and Macros + +[[Variables|Variables in WikiText]] and [[macros|Macros in WikiText]] are indeed the same thing. Macros are just variables that have their parameters substituted before use. + +! Textual Substitution + +* `$parametername$` - for [[macor parameters|Macros in WikiText]] +``` +\define mysamplemacro(name:"Bugs Bunny",address:"Rabbit Hole Hill") +Hi, I'm $name$ and I live in $address$ +\end +``` + +* `$(variablename)$` - for variable substitutions ''within macros'' +``` +\define mysamplemacro2() +Hi, I'm $(name)$ and I live in $(address)$ +\end + +<$set name="name" value="Bugs Bunny"> +<$set name="address" value="Rabbit Hole Hill"> +<> + +``` +The differents between textual substitution and other syntax: + +* Textual substitution is performed before the macro is parsed, the values are inserted into the target. +* While the `<<...>>` syntax is a transclusion, where the "WikiText" is inserted and rendered separately. +* Textual substitution behaves as text. So that they can be combined with other text, and the usage should include all braces like : +** `filter="[prefix[$:/$(a)$/$(b)$]]"` or +** `<$reveal ... text="$(c)$"> `