From 93d47630b8ae8fff8b102503963afd31e5511e77 Mon Sep 17 00:00:00 2001 From: "windhamwong@nva-hk.com" Date: Thu, 13 Jul 2017 08:42:38 +0100 Subject: [PATCH] char() operation now supports multiple values inside bracket. i.e. CHAR(45,120,49,45,81,45) --- src/core/operations/ByteRepr.js | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/src/core/operations/ByteRepr.js b/src/core/operations/ByteRepr.js index 1c877898..eeef5e5f 100755 --- a/src/core/operations/ByteRepr.js +++ b/src/core/operations/ByteRepr.js @@ -53,8 +53,8 @@ const ByteRepr = { const delim = args[0] || "Space"; return Utils.fromHex(input, delim, 2); }, - - + + /** * From 0xHex operation. * @@ -63,7 +63,7 @@ const ByteRepr = { * @returns {byteArray} */ runFrom0xHex: function(input, args) { - var data = input.replace(/0x([0-9a-f]{2,})/ig, + var data = input.replace(/0x([0-9a-f]{2,})/ig, function(match, p1) { if (p1) { return Utils.byteArrayToChars(Utils.fromHex(p1)); @@ -71,8 +71,8 @@ const ByteRepr = { }); return data; }, - - + + /** * From char(hex) operation. * @@ -81,13 +81,16 @@ const ByteRepr = { * @returns {byteArray} */ runFromCharHex: function(input, args) { - var data = input.replace(/cha?r\((\d{1,3})\)/ig, - function(match, p1) { - if (p1) { - return Utils.byteArrayToChars([parseInt(p1)]); - }; - }); - return data; + var re = /cha?r\((((\d{1,3})(,\s?)?)+)\)/ig; + var inner_re = /(\d{1,3}),?/g; + var match, inner_match; + var result = ""; + while ((match = re.exec(input)) != null) { + while ((inner_match = inner_re.exec(match[1])) != null) { + result += Utils.byteArrayToChars([parseInt(inner_match[1])]); + } + } + return input.replace(re, result); },