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)$"> `