From 4b22a409e74e8c8398fb53b0b6c941ad8e5fb69f Mon Sep 17 00:00:00 2001 From: n1474335 Date: Tue, 15 Aug 2017 17:29:48 +0000 Subject: [PATCH] Tidied up string escape operations --- src/core/config/Categories.js | 4 ++-- src/core/config/OperationConfig.js | 8 ++++---- src/core/operations/StrUtils.js | 14 ++++++++++---- 3 files changed, 16 insertions(+), 10 deletions(-) diff --git a/src/core/config/Categories.js b/src/core/config/Categories.js index dd858ea4..270c1e1e 100755 --- a/src/core/config/Categories.js +++ b/src/core/config/Categories.js @@ -187,8 +187,8 @@ const Categories = [ "Parse UNIX file permissions", "Swap endianness", "Parse colour code", - "Escape String", - "Unescape String", + "Escape string", + "Unescape string", ] }, { diff --git a/src/core/config/OperationConfig.js b/src/core/config/OperationConfig.js index d6a12845..40571293 100755 --- a/src/core/config/OperationConfig.js +++ b/src/core/config/OperationConfig.js @@ -3263,15 +3263,15 @@ const OperationConfig = { } ] }, - "Escape String": { - description: "Escapes a string so that it can be embedded in another. For example, Don't stop me now becomes Don\\'t stop me now.", + "Escape string": { + description: "Escapes special characters in a string so that they do not cause conflicts. For example, Don't stop me now becomes Don\\'t stop me now.", run: StrUtils.runEscape, inputType: "string", outputType: "string", args: [] }, - "Unescape String": { - description: "Unescapes a string that was embedded inside another so that it can be used in it's own right. For example, Don\\'t stop me now becomes Don't stop me now.", + "Unescape string": { + description: "Unescapes characters in a string that have been escaped. For example, Don\\'t stop me now becomes Don't stop me now.", run: StrUtils.runUnescape, inputType: "string", outputType: "string", diff --git a/src/core/operations/StrUtils.js b/src/core/operations/StrUtils.js index 5d0c0a43..21b19e8a 100755 --- a/src/core/operations/StrUtils.js +++ b/src/core/operations/StrUtils.js @@ -448,6 +448,7 @@ const StrUtils = { return outputs.join(sampleDelim); }, + /** * @constant * @default @@ -464,7 +465,7 @@ const StrUtils = { ], /** - * Escapes a string for embedding in another string. + * Escape string operation. * * @author Vel0x [dalemy@microsoft.com] * @@ -483,8 +484,9 @@ const StrUtils = { return StrUtils._replaceByKeys(input, "unescaped", "escaped"); }, + /** - * Unescapes a string that was part of another string + * Unescape string operation. * * @author Vel0x [dalemy@microsoft.com] * @@ -503,9 +505,10 @@ const StrUtils = { return StrUtils._replaceByKeys(input, "escaped", "unescaped"); }, + /** * Replaces all matching tokens in ESCAPE_REPLACEMENTS with the correction. The - * ordering is determined by the pattern_key and the replacement_key. + * ordering is determined by the patternKey and the replacementKey. * * @author Vel0x [dalemy@microsoft.com] * @author Matt C [matt@artemisbot.uk] @@ -517,7 +520,10 @@ const StrUtils = { */ _replaceByKeys: function(input, patternKey, replacementKey) { let output = input; - if (patternKey === "escaped") output = Utils.parseEscapedChars(input); // I've wrapped this to catch the \\x encoded characters + + // Catch the \\x encoded characters + if (patternKey === "escaped") output = Utils.parseEscapedChars(input); + StrUtils.ESCAPE_REPLACEMENTS.forEach(replacement => { output = output.split(replacement[patternKey]).join(replacement[replacementKey]); });