From e207825d21017a69f90a817aa028d2f29f7673be Mon Sep 17 00:00:00 2001 From: Owens94819 <> Date: Mon, 11 Jul 2011 01:36:15 +0100 Subject: [PATCH] new module added ("var", "function") --- modules/all.js | 67 ++++++++++++++++++++++++++++++++++++++++++++- modules/function.js | 46 +++++++++++++++++++++++++++++++ modules/print.js | 1 - modules/var.js | 27 ++++++++++++++++++ 4 files changed, 139 insertions(+), 2 deletions(-) create mode 100644 modules/function.js create mode 100644 modules/var.js diff --git a/modules/all.js b/modules/all.js index 9a13b04..71c3bbd 100644 --- a/modules/all.js +++ b/modules/all.js @@ -5,7 +5,8 @@ var KEYWORD = 0xC; var FUNCTION = 0xD; var FKEYWORD = 0xE; - + var MKEYWORD = 0xF; + /** use-effect √ **/ __core__.createModule([ { @@ -730,4 +731,68 @@ }, ]); + /** var √ **/ + __core__.createModule([ + { + keyword: "var", + callback: function (param, currentProcess, core) { + var exec = currentProcess && currentProcess.eval || core.eval + param = __core__.parseParameter(param).parameter[0].trim(); + param = param.split(/(^[a-zA-Z ]+\=)/); + param.shift() + if (param[0]) { + try { + exec("var " + param[0] + "(" + param[1] + ")") + } catch (err) { + console.error("var:", param.join(""), err + ""); + } + } + param = void 0; + }, + type: MKEYWORD, + }, + ]); + + /** function √ **/ + __core__.createModule([ + { + keyword: "function", + callback: function (e, node, exec) { + var param = __core__.parseParameter(e).parameter[0]; + try { + + var name = ""; + for (var i = 0; i < param.length; i++) { + if (param[i] === ",") { + break + } + name += param[i] + } + + param = param.substring(i + 1) + name = exec(name) + param = exec("[" + param + "]") + var foo = window[name] + + name = "" + if (typeof foo === "function") { + for (var i = 0; i < param.length; i++) { + name += "param[" + i + "]"; + !(i + 1 === param.length) && (name += ", ") + } + name = eval("foo(exec, " + name + ")") + } + if (name) { + node.putChild(name) + } + name = void 0; + } catch (err) { + console.error("function:", e, err + ""); + } + e = void 0; + param = void 0; + }, + type: METHOD, + }, + ]); })() \ No newline at end of file diff --git a/modules/function.js b/modules/function.js new file mode 100644 index 0000000..6febfb5 --- /dev/null +++ b/modules/function.js @@ -0,0 +1,46 @@ +(function () { + var __core__ = XJSX.__XJSXCORE__(); + var METHOD = 0xB; + /** function √ **/ + __core__.createModule([ + { + keyword: "function", + callback: function (e, node, exec) { + var param = __core__.parseParameter(e).parameter[0]; + try { + + var name = ""; + for (var i = 0; i < param.length; i++) { + if (param[i]===",") { + break + } + name += param[i] + } + + param = param.substring(i+1) + name=exec(name) + param = exec("["+param+"]") + var foo = window[name] + + name="" + if (typeof foo === "function") { + for (var i = 0; i < param.length; i++) { + name+="param["+i+"]"; + !(i+1===param.length)&&(name+=", ") + } + name = eval("foo(exec, "+name+")") + } + if (name) { + node.putChild(name) + } + name=void 0; + } catch (err) { + console.error("function:", e, err + ""); + } + e = void 0; + param = void 0; + }, + type: METHOD, + }, + ]); +})() \ No newline at end of file diff --git a/modules/print.js b/modules/print.js index 8520ebb..fe3547a 100644 --- a/modules/print.js +++ b/modules/print.js @@ -1,7 +1,6 @@ (function() { var __core__=XJSX.__XJSXCORE__(); var METHOD = 0xB; - /** print √ **/ __core__.createModule([ { diff --git a/modules/var.js b/modules/var.js new file mode 100644 index 0000000..ffbe31e --- /dev/null +++ b/modules/var.js @@ -0,0 +1,27 @@ +(function () { + var __core__ = XJSX.__XJSXCORE__(); + var MKEYWORD = 0xF; + /** var √ **/ + __core__.createModule([ + { + keyword: "var", + callback: function (param, currentProcess, core) { + var exec = currentProcess && currentProcess.eval || core.eval + param = __core__.parseParameter(param).parameter[0].trim(); + param = param.split(/(^[a-zA-Z ]+)\=/); + param.shift() + // console.log(param); + if (param[0]) { + try { + exec("var " + param[0] + "=(" + param[1] + ")") + // exec(exec(param[1]), param[0]) + } catch (err) { + console.error("var:", param.join(""), err + ""); + } + } + param= void 0; + }, + type: MKEYWORD, + }, + ]); +})() \ No newline at end of file