What this macro does is create an internal link that, when clicked, vanishes and is replaced with whatever is between the << replace >> and << endreplace >> tags. This could be useful if (just for starters) you want to have a passage that can be modified by clicking specific details inside it.
version.extensions['replaceMacro'] = {major:1, minor:0, revision:0};
macros['replace'] = {
handler: function (g, e, f, b) {
var h = insertElement(null, "div", null, "replacement");
var k = b.source.indexOf('>>', b.matchStart) + 2;
var a = b.source.slice(k);
var d = -1;
var c = '';
var l = 0;
for(var i = 0; i < a.length; i++) {
if(a.substr(i, 14) == '<>') {
if(l == 0) {
d = k + i + 14;
break;
}
else {
l--;
c += a.charAt(i);
}
}
else {
if(a.substr(i, 9) == '<
Here is a usage example: You see <<replace "a half-eaten cake">> a plate of crumbs <<endreplace>>
Some notes:
* For those writing CSS: the < a > tag of the link has the class names "internalLink" and "replaceLink". It is immediately followed with a < span > tag with a class name of "replacement" and the style "display:none". Clicking the link removes it and changes the span's display style to "inline".
* Code inside << replace >> tags is only executed when you click the link.
Attachment | Size |
---|---|
TwineMacro-ReplaceTest.html | 186.33 KB |