فهرست منبع

Merge branch 'feature/remove-letter-accents' of https://github.com/klaxon1/CyberChef into klaxon1-feature/remove-letter-accents

n1474335 6 سال پیش
والد
کامیت
b301d16cb2
4فایلهای تغییر یافته به همراه67 افزوده شده و 0 حذف شده
  1. 1 0
      src/core/config/Categories.json
  2. 42 0
      src/core/operations/RemoveLetterAccents.mjs
  3. 1 0
      test/index.mjs
  4. 23 0
      test/tests/operations/RemoveLetterAccents.mjs

+ 1 - 0
src/core/config/Categories.json

@@ -168,6 +168,7 @@
         "ops": [
             "Encode text",
             "Decode text",
+            "Remove Letter Accents",
             "Unescape Unicode Characters"
         ]
     },

+ 42 - 0
src/core/operations/RemoveLetterAccents.mjs

@@ -0,0 +1,42 @@
+/**
+ * @author Klaxon [klaxon@veyr.com]
+ * @copyright Crown Copyright 2018
+ * @license Apache-2.0
+ */
+
+import Operation from "../Operation";
+
+/**
+ * Remove Letter Accents operation
+ */
+class RemoveLetterAccents extends Operation {
+
+    /**
+     * RemoveLetterAccents constructor
+     */
+    constructor() {
+        super();
+
+        this.name = "Remove Letter Accents";
+        this.module = "Default";
+        this.description = "Replaces accented characters with their latin character equivalent.";
+        this.infoURL = "";
+        this.inputType = "string";
+        this.outputType = "string";
+        this.args = [
+        ];
+    }
+
+    /**
+     * @param {string} input
+     * @param {Object[]} args
+     * @returns {string}
+     */
+    run(input, args) {
+        //reference: https://stackoverflow.com/questions/990904/remove-accents-diacritics-in-a-string-in-javascript/37511463
+        return input.normalize("NFD").replace(/[\u0300-\u036f]/g, "");
+    }
+
+}
+
+export default RemoveLetterAccents;

+ 1 - 0
test/index.mjs

@@ -63,6 +63,7 @@ import "./tests/operations/ParseIPRange";
 import "./tests/operations/PowerSet";
 import "./tests/operations/Regex";
 import "./tests/operations/Register";
+import "./tests/operations/RemoveLetterAccents";
 import "./tests/operations/Rotate";
 import "./tests/operations/SeqUtils";
 import "./tests/operations/SetDifference";

+ 23 - 0
test/tests/operations/RemoveLetterAccents.mjs

@@ -0,0 +1,23 @@
+
+/**
+ * Remove Letter Accents tests.
+ *
+ * @author Klaxon [klaxon@veyr.com]
+ * @copyright Crown Copyright 2017
+ * @license Apache-2.0
+ */
+import TestRegister from "../../TestRegister";
+
+TestRegister.addTests([
+    {
+        name: "Remove Letter Accents",
+        input: "\xe0, \xe8, \xec, \xf2, \xf9  \xc0, \xc8, \xcc, \xd2, \xd9\n\xe1, \xe9, \xed, \xf3, \xfa, \xfd \xc1, \xc9, \xcd, \xd3, \xda, \xdd\n\xe2, \xea, \xee, \xf4, \xfb \xc2, \xca, \xce, \xd4, \xdb\n\xe3, \xf1, \xf5 \xc3, \xd1, \xd5\n\xe4, \xeb, \xef, \xf6, \xfc, \xff \xc4, \xcb, \xcf, \xd6, \xdc, \u0178\n\xe5, \xc5",
+        expectedOutput: "a, e, i, o, u  A, E, I, O, U\na, e, i, o, u, y A, E, I, O, U, Y\na, e, i, o, u A, E, I, O, U\na, n, o A, N, O\na, e, i, o, u, y A, E, I, O, U, Y\na, A",
+        recipeConfig: [
+            {
+                "op": "Remove Letter Accents",
+                "args": []
+            },
+        ],
+    },
+]);