Skip to content

Commit

Permalink
Added decode option
Browse files Browse the repository at this point in the history
  • Loading branch information
Cynser committed Dec 17, 2018
1 parent 3f7059a commit dacb3ef
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 7 deletions.
27 changes: 22 additions & 5 deletions src/core/operations/TextEncodingBruteForce.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,13 @@ class TextEncodingBruteForce extends Operation {
this.infoURL = "https://wikipedia.org/wiki/Character_encoding";
this.inputType = "string";
this.outputType = "string";
this.args = [];
this.args = [
{
name: "Mode",
type: "option",
value: ["Encode", "Decode"]
}
];
}

/**
Expand All @@ -36,12 +42,23 @@ class TextEncodingBruteForce extends Operation {
*/
run(input, args) {
const output = [],
charSets = Object.keys(IO_FORMAT);
charSets = Object.keys(IO_FORMAT),
mode = args[0];

for (let i = 0; i < charSets.length; i++) {
let currentEncoding = Utils.printable(charSets[i] + ": ", false);
currentEncoding += cptable.utils.encode(IO_FORMAT[charSets[i]], input);
output.push(currentEncoding);
let currentEncoding = charSets[i] + ": ";

try {
if (mode === "Decode") {
currentEncoding += cptable.utils.decode(IO_FORMAT[charSets[i]], input);
} else {
currentEncoding += cptable.utils.encode(IO_FORMAT[charSets[i]], input);
}
} catch (err) {
currentEncoding += "Could not decode.";
}

output.push(Utils.printable(currentEncoding, true));
}

return output.join("\n");
Expand Down
15 changes: 13 additions & 2 deletions test/tests/operations/TextEncodingBruteForce.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,24 @@ import TestRegister from "../../TestRegister";

TestRegister.addTests([
{
name: "Text Encoding Brute Force",
name: "Text Encoding Brute Force - Encode",
input: "Булкі праз ляніва сабаку.",
expectedMatch: /Windows-1251 Cyrillic \(1251\): Булкі праз ляніва сабаку\./,
recipeConfig: [
{
op: "Text Encoding Brute Force",
args: [],
args: ["Encode"],
},
],
},
{
name: "Text Encoding Brute Force - Decode",
input: "Áóëê³ ïðàç ëÿí³âà ñàáàêó.",
expectedMatch: /Windows-1251 Cyrillic \(1251\): Булкі праз ляніва сабаку\./,
recipeConfig: [
{
op: "Text Encoding Brute Force",
args: ["Decode"],
},
],
}
Expand Down

0 comments on commit dacb3ef

Please sign in to comment.