User Tools

Site Tools



This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
harlowe:macro_syntax [2017/06/20 02:02]
l created
harlowe:macro_syntax [2017/06/20 02:03]
Line 1: Line 1:
-In Harlowe, macros are called by writing the name, a colon, and some data values to provide it, all in parentheses. For instance, you call the [[harlowe:print|(print:​)]] +#​redirect ​harlowe:macro_markup
-macro like so: ''​%%(print:​ 54)%%''​. In this example, ''​%%print%%''​ is the macro'​s name, and ''​%%54%%''​ is the value. +
- +
-The name of the macro is case-insensitive,​ dash-insensitive and underscore-insensitive. This means that +
-any combination of case, dashes and underscores in the name will be ignored. You can, for instance, write +
-''​%%(go-to:​)%%''​ as ''​%%(goto:​)%%'',​ ''​%%(Goto:​)%%'',​ ''​%%(GOTO:​)%%'',​ ''​%%(GoTo:​)%%'',​ ''​%%(Go_To:​)%%'',​ ''​%%(Got--o:​)%%'',​ ''​%%(-_-_g-o-t-o:​)%%'',​ or +
-any other combination or variation. +
- +
-You can provide any type of data values to a macro call - numbers, strings, booleans, and so forth. These +
-can be in any form, as well - ''​%%"​Red"​ + "​belly"​%%''​ is an expression that produces a single string, "​Redbelly",​ +
-and can be used anywhere that the joined string can be used. Variables, too, can be used with macros, if +
-their contents matches what the macro expects. So, if ''​%%$var%%''​ contains the string "​Redbelly",​ then ''​%%(print:​ $var)%%'',​ +
-''​%%(print:​ "​Redbelly"​)%%''​ and ''​%%(print:​ "​Red"​ + "​belly"​)%%''​ are exactly the same. +
- +
-Furthermore,​ each macro call produces a value itself - [[harlowe:​num|(num:​)]],​ for instance, produces a number, [[harlowe:​a|(a:​)]] an array - so +
-they too can be nested inside other macro calls. ''​%%(if:​ (num:"​5"​) > 2)%%''​ nests the [[harlowe:​num|(num:​)]] macro inside the [[harlowe:​if|(if:​)]] macro. +
- +
-If a macro can or should be given multiple values, separate them with commas. You can give the ''​%%(a:​)%%''​ macro +
-three numbers like so: ''​%%(a:​ 2, 3, 4)%%''​. The final value may have a comma after it, or it may not - ''​%%(a:​ 2, 3, 4,​)%%''​ +
-is equally valid. Also, if you have a data value that's an array, string or dataset, you can "​spread out" all +
-of its values into the macro call by using the ''​%%...%%''​ operator: ''​%%(either:​ ...$array)%%''​ will act as if every value in +
-$array was placed in the [[harlowe:​either|(either:​)]] macro call separately.+
harlowe/macro_syntax.txt · Last modified: 2017/10/09 20:39 (external edit)