foreach (roll option): Difference between revisions
Jump to navigation
Jump to search
Bone White (talk | contribs) m (→Examples: forgot to add <br> to output_seperator in examples.) |
Bone White (talk | contribs) m (Added example for using with a String Property List) |
||
Line 4: | Line 4: | ||
Iterates over the contents of a string list in the format "''item1, item2, item3''" | Iterates over the contents of a string list in the format "''item1, item2, item3''" | ||
Can also be used with JSON arrays and JSON objects. | Can also be used easily with JSON arrays and JSON objects. | ||
String Property Lists can be processed with a couple of extra functions. | |||
====Usage==== | ====Usage==== | ||
Line 32: | Line 33: | ||
(Note that using foreach with a JSON object will result in only the keys being returned as vars). | (Note that using foreach with a JSON object will result in only the keys being returned as vars). | ||
<source lang="mtmacro" line> | <source lang="mtmacro" line> | ||
[h: enemyList = json.set("","Orcs", "Bob, Dave", "Goblins", "Graham", "Ogres", "Philip, Emanual", "Trolls", "Ig, Og, Ug"] | [h: enemyList = json.set("","Orcs", "Bob, Dave", "Goblins", "Graham", "Ogres", "Philip, Emanual", "Trolls", "Ig, Og, Ug")] | ||
[FOREACH (enemy, enemyList, "<br>"): "You really hate " + enemy] | [FOREACH (enemy, enemyList, "<br>"): "You really hate " + enemy] | ||
</source> | </source> | ||
Line 56: | Line 57: | ||
output: | output: | ||
Orcs then Goblins then Ogres then Trolls | Orcs then Goblins then Ogres then Trolls | ||
====String Property List Example==== | |||
<source lang="mtmacro" line> | |||
[h: enemyStrProp = json.toStrProp(json.set("","Orcs", "Bob, Dave", "Goblins", "Graham", "Ogres", "Philip, Emanual", "Trolls", "Ig, Og, Ug"))] | |||
[FOREACH(enemy, enemyStrProp, "<br>", ";"), code: | |||
{ | |||
[h: enemyList = stringToList(enemy, "=")] | |||
[h: name = listGet(enemyList, 0)] | |||
[h: value = listDelete(enemyList, 0)] | |||
[r: "You really hate " + name + " who are " + value] | |||
} | |||
] | |||
</source> | |||
output: | |||
You really hate Orcs who are Bob, Dave | |||
You really hate Goblins who are Graham | |||
You really hate Ogres who are Philip, Emanual | |||
You really hate Trolls who are Ig, Og, Ug | |||
===See Also=== | ===See Also=== | ||
{{func|json.append}}, {{func|json.set}}, {{roll|code}}, {{func|stringToList}}, {{func|listGet}}, {{func|listDelete}} | |||
[[Category:Roll Option]] | [[Category:Roll Option]] | ||
[[Category:Looping Roll Option]] | [[Category:Looping Roll Option]] |
Revision as of 22:13, 23 November 2011
FOREACH Option
Introduced: Version 1.3.b46
Iterates over the contents of a string list in the format "item1, item2, item3" Can also be used easily with JSON arrays and JSON objects. String Property Lists can be processed with a couple of extra functions.
Usage
[FOREACH(var, list): body]
[FOREACH(var, list, output_separator): body]
[FOREACH(var, list, output_separator, list_separator): body]
output_seperator default value is null
list_seperator default value is ","
Examples
String List Example
[h: enemyList="Orcs, Goblins, Ogres, Trolls"]
[FOREACH(enemy, enemyList, "<br>"): "You really hate " + enemy]
JSON Array Example
[h: enemyList = json.append("","Orcs, Goblins, Ogres, Trolls")]
[FOREACH (enemy, enemyList, "<br>"): "You really hate " + enemy]
JSON Object Example
(Note that using foreach with a JSON object will result in only the keys being returned as vars).
[h: enemyList = json.set("","Orcs", "Bob, Dave", "Goblins", "Graham", "Ogres", "Philip, Emanual", "Trolls", "Ig, Og, Ug")]
[FOREACH (enemy, enemyList, "<br>"): "You really hate " + enemy]
All the above will output:
You really hate Orcs You really hate Goblins You really hate Ogres You really hate Trolls
Using with [code():] and output_seperator
To use roll options with your FOREACH loop, you will need to use [code():] roll option. In this example I have separated the results with the string " then ".
[h: enemyList="Orcs; Goblins; Ogres; Trolls"]
[FOREACH(enemy, enemyList, " then ", ";"), CODE:
{
[r: enemy]
}
]
output:
Orcs then Goblins then Ogres then Trolls
String Property List Example
[h: enemyStrProp = json.toStrProp(json.set("","Orcs", "Bob, Dave", "Goblins", "Graham", "Ogres", "Philip, Emanual", "Trolls", "Ig, Og, Ug"))]
[FOREACH(enemy, enemyStrProp, "<br>", ";"), code:
{
[h: enemyList = stringToList(enemy, "=")]
[h: name = listGet(enemyList, 0)]
[h: value = listDelete(enemyList, 0)]
[r: "You really hate " + name + " who are " + value]
}
]
output:
You really hate Orcs who are Bob, Dave You really hate Goblins who are Graham You really hate Ogres who are Philip, Emanual You really hate Trolls who are Ig, Og, Ug
See Also
json.append(), json.set(), [code():], stringToList(), listGet(), listDelete()