2019-03-02 15:00:42 +01:00
|
|
|
/**
|
2019-09-04 17:13:05 +01:00
|
|
|
* Bacon Cipher resources.
|
2019-03-02 15:00:42 +01:00
|
|
|
*
|
2019-03-03 17:20:54 +01:00
|
|
|
* @author Karsten Silkenbäumer [github.com/kassi]
|
2019-03-02 15:00:42 +01:00
|
|
|
* @copyright Karsten Silkenbäumer 2019
|
|
|
|
* @license Apache-2.0
|
|
|
|
*/
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Bacon definitions.
|
|
|
|
*/
|
2019-03-02 17:55:03 +01:00
|
|
|
export const BACON_ALPHABETS = {
|
|
|
|
"Standard (I=J and U=V)": {
|
|
|
|
alphabet: "ABCDEFGHIKLMNOPQRSTUWXYZ",
|
|
|
|
codes: [0, 1, 2, 3, 4, 5, 6, 7, 8, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 19, 20, 21, 22, 23]
|
|
|
|
},
|
|
|
|
"Complete": {
|
|
|
|
alphabet: "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
|
|
|
|
}
|
|
|
|
};
|
2019-03-02 15:00:42 +01:00
|
|
|
export const BACON_TRANSLATION_01 = "0/1";
|
|
|
|
export const BACON_TRANSLATION_AB = "A/B";
|
|
|
|
export const BACON_TRANSLATION_CASE = "Case";
|
|
|
|
export const BACON_TRANSLATION_AMNZ = "A-M/N-Z first letter";
|
|
|
|
export const BACON_TRANSLATIONS = [
|
|
|
|
BACON_TRANSLATION_01,
|
|
|
|
BACON_TRANSLATION_AB,
|
|
|
|
BACON_TRANSLATION_CASE,
|
|
|
|
BACON_TRANSLATION_AMNZ,
|
|
|
|
];
|
2019-03-02 17:33:17 +01:00
|
|
|
export const BACON_TRANSLATIONS_FOR_ENCODING = [
|
|
|
|
BACON_TRANSLATION_01,
|
|
|
|
BACON_TRANSLATION_AB
|
|
|
|
];
|
2019-03-02 15:00:42 +01:00
|
|
|
export const BACON_CLEARER_MAP = {
|
2019-09-04 17:13:05 +01:00
|
|
|
[BACON_TRANSLATION_01]: /[^01]/g,
|
|
|
|
[BACON_TRANSLATION_AB]: /[^ABab]/g,
|
|
|
|
[BACON_TRANSLATION_CASE]: /[^A-Za-z]/g,
|
2019-03-02 15:00:42 +01:00
|
|
|
};
|
|
|
|
export const BACON_NORMALIZE_MAP = {
|
2019-09-04 17:13:05 +01:00
|
|
|
[BACON_TRANSLATION_AB]: {
|
2019-03-02 15:00:42 +01:00
|
|
|
"A": "0",
|
|
|
|
"B": "1",
|
|
|
|
"a": "0",
|
|
|
|
"b": "1"
|
|
|
|
},
|
|
|
|
};
|
2019-03-02 17:33:17 +01:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Swaps zeros to ones and ones to zeros.
|
|
|
|
*
|
|
|
|
* @param {string} data
|
|
|
|
* @returns {string}
|
|
|
|
*
|
|
|
|
* @example
|
|
|
|
* // returns "11001 01010"
|
|
|
|
* swapZeroAndOne("00110 10101");
|
|
|
|
*/
|
|
|
|
export function swapZeroAndOne(string) {
|
|
|
|
return string.replace(/[01]/g, function (c) {
|
|
|
|
return {
|
|
|
|
"0": "1",
|
|
|
|
"1": "0"
|
|
|
|
}[c];
|
|
|
|
});
|
|
|
|
}
|