From 6c269dd204e09ceb55af9058380485a167852630 Mon Sep 17 00:00:00 2001 From: Andris Rubenis Date: Fri, 2 Dec 2016 19:06:13 +0200 Subject: [PATCH] Added operation: "JavaScript" Operation "JavaScript" is added under category "Utils" and it adds option to write JS code to manipulate data. --- src/js/config/Categories.js | 1 + src/js/config/OperationConfig.js | 16 +++++++++++++++- src/js/operations/StrUtils.js | 20 ++++++++++++++++++++ 3 files changed, 36 insertions(+), 1 deletion(-) diff --git a/src/js/config/Categories.js b/src/js/config/Categories.js index 02c2b1f5..6246faa3 100755 --- a/src/js/config/Categories.js +++ b/src/js/config/Categories.js @@ -162,6 +162,7 @@ var Categories = [ "Parse UNIX file permissions", "Swap endianness", "Parse colour code", + "JavaScript", ] }, { diff --git a/src/js/config/OperationConfig.js b/src/js/config/OperationConfig.js index f011a0b2..ab67d029 100755 --- a/src/js/config/OperationConfig.js +++ b/src/js/config/OperationConfig.js @@ -2782,5 +2782,19 @@ var OperationConfig = { input_type: "string", output_type: "string", args: [] - } + }, + "JavaScript": { + description: "Script in JavaScript", + run: StrUtils.run_javascript, + manual_bake: true, + input_type: "string", + output_type: "string", + args: [ + { + name: "@param {string} input, @returns {string}", + type: "text", + value: "return input;" + }, + ] + }, }; \ No newline at end of file diff --git a/src/js/operations/StrUtils.js b/src/js/operations/StrUtils.js index f2bf3706..22e9eddd 100755 --- a/src/js/operations/StrUtils.js +++ b/src/js/operations/StrUtils.js @@ -508,5 +508,25 @@ var StrUtils = { return output; }, + + + /** + * Script JS. + * + * @param {string} input + * @param {Object[]} args + * @returns {string} + */ + run_javascript: function (input, args) { + try { + /*jshint -W061 */ + var fn = Function("input", args); + /*jshint +W061 */ + return fn(input); + } + catch (err) { + return "JavaScript error: " + err.message; + } + }, };