From 231f8b6a4d47ff5024daa571b238398fe4a2dbda Mon Sep 17 00:00:00 2001 From: Frank van de Pol Date: Tue, 24 Dec 2013 20:02:30 +0100 Subject: [PATCH] undo my changes to the Change node; revert to original undo the local changes to the Change node to get back aligned with the master tree --- nodes/core/logic/15-change.html | 25 ++++++++++++------------- nodes/core/logic/15-change.js | 19 ++++++++++++------- 2 files changed, 24 insertions(+), 20 deletions(-) diff --git a/nodes/core/logic/15-change.html b/nodes/core/logic/15-change.html index b1ad880d8..9d8ad6652 100644 --- a/nodes/core/logic/15-change.html +++ b/nodes/core/logic/15-change.html @@ -34,6 +34,11 @@ +
+ + + +

@@ -56,19 +61,9 @@ defaults: { action: {value:"change",required:true}, property: {value:"payload"}, - from: {value:"",validate: function(v) { - if (this.action == "change") { - try { - var re = new RegExp(this.from, "g"); - return true; - } catch(err) { - RED.notify("Error: "+err.message,"error"); - return false; - } - } - return true; - }}, + from: {value:""}, to: {value:""}, + reg: {value:false}, name: {value:""} }, inputs: 1, @@ -81,6 +76,7 @@ return this.name ? "node_label_italic" : ""; }, oneditprepare: function() { + if (this.reg === null) { $("#node-input-reg").prop('checked', true); } $("#node-input-action").change( function() { var a = $("#node-input-action").val(); if (a === "replace") { @@ -89,6 +85,7 @@ $("#node-input-t").html("with value"); $("#node-from-row").hide(); $("#node-to-row").show(); + $("#node-reg-row").hide(); $("#node-tip").html("Tip: expects a new property name and either a fixed value OR the full name of another msg.property eg: msg.sentiment.score"); } if (a === "delete") { @@ -97,6 +94,7 @@ //$("#node-input-t").html("to"); $("#node-from-row").hide(); $("#node-to-row").hide(); + $("#node-reg-row").hide(); $("#node-tip").html("Tip: deletes the named property and all sub-properties"); } if (a === "change") { @@ -105,7 +103,8 @@ $("#node-input-t").html("replace with"); $("#node-from-row").show(); $("#node-to-row").show(); - $("#node-tip").html("Tip: if it contains can be a regex, likewise replace with can accept regex results. Only works on strings."); + $("#node-reg-row").show(); + $("#node-tip").html("Tip: If contains is a regex, you must escape any special characters. Likewise replace with can accept regex results. Only works on strings."); } //if (a === "replace") { // $("#node-input-todo").html("called"); diff --git a/nodes/core/logic/15-change.js b/nodes/core/logic/15-change.js index 5f518987f..8922bde20 100644 --- a/nodes/core/logic/15-change.js +++ b/nodes/core/logic/15-change.js @@ -22,6 +22,7 @@ function ChangeNode(n) { this.property = n.property || ""; this.from = n.from || " "; this.to = n.to || " "; + this.reg = (n.reg === null || n.reg); var node = this; var makeNew = function( stem, path, value ) { @@ -35,13 +36,17 @@ function ChangeNode(n) { this.on('input', function (msg) { if (node.action == "change") { - try { - node.re = new RegExp(this.from, "g"); - if (typeof msg[node.property] === "string") { - msg[node.property] = (msg[node.property]).replace(node.re, node.to); - } - } catch(err) { - this.error(err.message); + var from = node.from; + if (node.reg === false) { + from = from.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"); + } + try { + node.re = new RegExp(from, "g"); + } catch (e) { + node.error("Invalid regex: "+from); + } + if (typeof msg[node.property] === "string") { + msg[node.property] = (msg[node.property]).replace(node.re, node.to); } } //else if (node.action == "replace") {