Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**lambda(codeOrNodefunction)*/
- Variant codeOrNodefn = param(1);
- treenode callback;
- if (codeOrNodefn.type == VAR_TYPE_NODE) {
- // a node function
- callback = codeOrNodefn;
- return callback;
- } else if (codeOrNodefn.type == VAR_TYPE_STRING) {
- // create a temporary node and create a nodefunction there
- string code = codeOrNodefn;
- Array autovars = code.match(/([^%])%([1-9])/g);
- if (autovars.length > 0) {
- string preambula = "int __argc = 1;\n";
- for (int i = 1; i <= 10; i++) {
- preambula += ("var __autovar" + numtostring(i) + " = param(__argc++);\n");
- }
- code = code.replace(/([^%])%([1-9])/g, "$1__autovar$2");
- code = preambula + "\n" + code;
- }
- code = code.replace(/%%/g, "%");
- treenode project = node("MAIN:/project");
- treenode exec = assertsubnode(project, "exec");
- treenode lambdas = assertsubnode(exec, "lambdas");
- callback = nodeinsertinto(lambdas);
- nodeadddata(callback, DATATYPE_STRING);
- sets(callback, code);
- switch_flexscript(callback, 1);
- buildnodeflexscript(callback);
- return callback;
- } else {
- return NULL;
- }
- /**purgelambda([int lastN])*/
- int n = 1;
- if (parqty() >= 1) {
- n = param(1);
- }
- treenode project = node("MAIN:/project");
- treenode exec = assertsubnode(project, "exec");
- treenode lambdas = assertsubnode(exec, "lambdas");
- if (n > 0) {
- int m = content(lambdas);
- n = min(n, m);
- for (int i = m; i >= (m - n) && i >= 1; i--) {
- destroyobject(lambdas.subnodes[i]);
- }
- } else if (n < 0) {
- clearcontents(lambdas);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement