Browse Source

Added signed feature to 'To Decimal'

n1474335 6 years ago
parent
commit
91fc2c28dc

+ 7 - 7
src/core/operations/FromDecimal.mjs

@@ -31,7 +31,7 @@ class FromDecimal extends Operation {
                 "value": DELIM_OPTIONS
             },
             {
-                "name": "Convert negatives",
+                "name": "Support signed values",
                 "type": "boolean",
                 "value": false
             }
@@ -40,32 +40,32 @@ class FromDecimal extends Operation {
             {
                 match: "^(?:\\d{1,2}|1\\d{2}|2[0-4]\\d|25[0-5])(?: (?:\\d{1,2}|1\\d{2}|2[0-4]\\d|25[0-5]))*$",
                 flags: "",
-                args: ["Space"]
+                args: ["Space", false]
             },
             {
                 match: "^(?:\\d{1,2}|1\\d{2}|2[0-4]\\d|25[0-5])(?:,(?:\\d{1,2}|1\\d{2}|2[0-4]\\d|25[0-5]))*$",
                 flags: "",
-                args: ["Comma"]
+                args: ["Comma", false]
             },
             {
                 match: "^(?:\\d{1,2}|1\\d{2}|2[0-4]\\d|25[0-5])(?:;(?:\\d{1,2}|1\\d{2}|2[0-4]\\d|25[0-5]))*$",
                 flags: "",
-                args: ["Semi-colon"]
+                args: ["Semi-colon", false]
             },
             {
                 match: "^(?:\\d{1,2}|1\\d{2}|2[0-4]\\d|25[0-5])(?::(?:\\d{1,2}|1\\d{2}|2[0-4]\\d|25[0-5]))*$",
                 flags: "",
-                args: ["Colon"]
+                args: ["Colon", false]
             },
             {
                 match: "^(?:\\d{1,2}|1\\d{2}|2[0-4]\\d|25[0-5])(?:\\n(?:\\d{1,2}|1\\d{2}|2[0-4]\\d|25[0-5]))*$",
                 flags: "",
-                args: ["Line feed"]
+                args: ["Line feed", false]
             },
             {
                 match: "^(?:\\d{1,2}|1\\d{2}|2[0-4]\\d|25[0-5])(?:\\r\\n(?:\\d{1,2}|1\\d{2}|2[0-4]\\d|25[0-5]))*$",
                 flags: "",
-                args: ["CRLF"]
+                args: ["CRLF", false]
             },
         ];
     }

+ 10 - 1
src/core/operations/ToDecimal.mjs

@@ -30,6 +30,11 @@ class ToDecimal extends Operation {
                 "name": "Delimiter",
                 "type": "option",
                 "value": DELIM_OPTIONS
+            },
+            {
+                "name": "Support signed values",
+                "type": "boolean",
+                "value": false
             }
         ];
     }
@@ -40,7 +45,11 @@ class ToDecimal extends Operation {
      * @returns {string}
      */
     run(input, args) {
-        const delim = Utils.charRep(args[0]);
+        const delim = Utils.charRep(args[0]),
+            signed = args[1];
+        if (signed) {
+            input = input.map(v => v > 0x7F ? v - 0xFF - 1 : v);
+        }
         return input.join(delim);
     }
 

+ 22 - 22
test/tests/operations/FromDecimal.mjs

@@ -8,26 +8,26 @@
 import TestRegister from "../../TestRegister";
 
 TestRegister.addTests([
-	{
-		name: "From Decimal",
-		input: "83 97 109 112 108 101 32 84 101 120 116",
-		expectedOutput: "Sample Text",
-		recipeConfig: [
-			{
-				op: "From Decimal",
-				args: ["Space", false]
-			},
-		],
-	},
-	{
-		name: "From Decimal with negatives",
-		input: "-130,-140,-152,-151,115,33,0,-1",
-		expectedOutput: "~this!\u0000\u00ff",
-		recipeConfig: [
-			{
-				op: "From Decimal",
-				args: ["Comma", true]
-			},
-		],
-	},
+    {
+        name: "From Decimal",
+        input: "83 97 109 112 108 101 32 84 101 120 116",
+        expectedOutput: "Sample Text",
+        recipeConfig: [
+            {
+                op: "From Decimal",
+                args: ["Space", false]
+            },
+        ],
+    },
+    {
+        name: "From Decimal with negatives",
+        input: "-130,-140,-152,-151,115,33,0,-1",
+        expectedOutput: "~this!\u0000\u00ff",
+        recipeConfig: [
+            {
+                op: "From Decimal",
+                args: ["Comma", true]
+            },
+        ],
+    },
 ]);