diff --git a/src/core/operations/BifidCipherDecode.mjs b/src/core/operations/BifidCipherDecode.mjs deleted file mode 100644 index 29318a32..00000000 --- a/src/core/operations/BifidCipherDecode.mjs +++ /dev/null @@ -1,125 +0,0 @@ -/** - * @author Matt C [matt@artemisbot.uk] - * @copyright Crown Copyright 2018 - * @license Apache-2.0 - */ - -import Operation from "../Operation.mjs"; -import { genPolybiusSquare } from "../lib/Ciphers.mjs"; -import OperationError from "../errors/OperationError.mjs"; - -/** - * Bifid Cipher Decode operation - */ -class BifidCipherDecode extends Operation { - - /** - * BifidCipherDecode constructor - */ - constructor() { - super(); - - this.name = "Bifid Cipher Decode"; - this.module = "Ciphers"; - this.description = "The Bifid cipher is a cipher which uses a Polybius square in conjunction with transposition, which can be fairly difficult to decipher without knowing the alphabet keyword."; - this.infoURL = "https://wikipedia.org/wiki/Bifid_cipher"; - this.inputType = "string"; - this.outputType = "string"; - this.args = [ - { - "name": "Keyword", - "type": "string", - "value": "" - } - ]; - } - - /** - * @param {string} input - * @param {Object[]} args - * @returns {string} - * - * @throws {OperationError} if invalid key - */ - run(input, args) { - const keywordStr = args[0].toUpperCase().replace("J", "I"), - keyword = keywordStr.split("").unique(), - alpha = "ABCDEFGHIKLMNOPQRSTUVWXYZ", - structure = []; - - let output = "", - count = 0, - trans = ""; - - if (!/^[A-Z]+$/.test(keywordStr) && keyword.length > 0) - throw new OperationError("The key must consist only of letters in the English alphabet"); - - const polybius = genPolybiusSquare(keywordStr); - - input.replace("J", "I").split("").forEach((letter) => { - const alpInd = alpha.split("").indexOf(letter.toLocaleUpperCase()) >= 0; - let polInd; - - if (alpInd) { - for (let i = 0; i < 5; i++) { - polInd = polybius[i].indexOf(letter.toLocaleUpperCase()); - if (polInd >= 0) { - trans += `${i}${polInd}`; - } - } - - if (alpha.split("").indexOf(letter) >= 0) { - structure.push(true); - } else if (alpInd) { - structure.push(false); - } - } else { - structure.push(letter); - } - }); - - structure.forEach(pos => { - if (typeof pos === "boolean") { - const coords = [trans[count], trans[count+trans.length/2]]; - - output += pos ? - polybius[coords[0]][coords[1]] : - polybius[coords[0]][coords[1]].toLocaleLowerCase(); - count++; - } else { - output += pos; - } - }); - - return output; - } - - /** - * Highlight Bifid Cipher Decode - * - * @param {Object[]} pos - * @param {number} pos[].start - * @param {number} pos[].end - * @param {Object[]} args - * @returns {Object[]} pos - */ - highlight(pos, args) { - return pos; - } - - /** - * Highlight Bifid Cipher Decode in reverse - * - * @param {Object[]} pos - * @param {number} pos[].start - * @param {number} pos[].end - * @param {Object[]} args - * @returns {Object[]} pos - */ - highlightReverse(pos, args) { - return pos; - } - -} - -export default BifidCipherDecode;