1
0
mirror of synced 2024-11-28 16:40:49 +01:00
This commit is contained in:
n1474335 2022-07-08 15:04:09 +01:00
commit b71e3241be
2 changed files with 40 additions and 6 deletions

View File

@ -1,3 +1,5 @@
import Utils from "../Utils.mjs";
/** /**
* Base85 resources. * Base85 resources.
* *
@ -32,13 +34,12 @@ export const ALPHABET_OPTIONS = [
* @returns {string} * @returns {string}
*/ */
export function alphabetName(alphabet) { export function alphabetName(alphabet) {
alphabet = alphabet.replace(/'/g, "'"); alphabet = escape(alphabet);
alphabet = alphabet.replace(/"/g, """);
alphabet = alphabet.replace(/\\/g, "\");
let name; let name;
ALPHABET_OPTIONS.forEach(function(a) { ALPHABET_OPTIONS.forEach(function(a) {
if (escape(alphabet) === escape(a.value)) name = a.name; const expanded = Utils.expandAlphRange(a.value).join("");
if (alphabet === escape(expanded)) name = a.name;
}); });
return name; return name;

View File

@ -38,6 +38,35 @@ class FromBase85 extends Operation {
value: true value: true
}, },
]; ];
this.checks = [
{
pattern:
"^\\s*(?:<~)?" + // Optional whitespace and starting marker
"[\\s!-uz]*" + // Any amount of base85 characters and whitespace
"[!-uz]{15}" + // At least 15 continoues base85 characters without whitespace
"[\\s!-uz]*" + // Any amount of base85 characters and whitespace
"(?:~>)?\\s*$", // Optional ending marker and whitespace
args: ["!-u"],
},
{
pattern:
"^" +
"[\\s0-9a-zA-Z.\\-:+=^!/*?&<>()[\\]{}@%$#]*" +
"[0-9a-zA-Z.\\-:+=^!/*?&<>()[\\]{}@%$#]{15}" + // At least 15 continoues base85 characters without whitespace
"[\\s0-9a-zA-Z.\\-:+=^!/*?&<>()[\\]{}@%$#]*" +
"$",
args: ["0-9a-zA-Z.\\-:+=^!/*?&<>()[]{}@%$#"],
},
{
pattern:
"^" +
"[\\s0-9A-Za-z!#$%&()*+\\-;<=>?@^_`{|}~]*" +
"[0-9A-Za-z!#$%&()*+\\-;<=>?@^_`{|}~]{15}" + // At least 15 continoues base85 characters without whitespace
"[\\s0-9A-Za-z!#$%&()*+\\-;<=>?@^_`{|}~]*" +
"$",
args: ["0-9A-Za-z!#$%&()*+\\-;<=>?@^_`{|}~"],
},
];
} }
/** /**
@ -64,8 +93,12 @@ class FromBase85 extends Operation {
if (input.length === 0) return []; if (input.length === 0) return [];
input = input.replace(/\s+/g, "");
if (encoding === "Standard") {
const matches = input.match(/<~(.+?)~>/); const matches = input.match(/<~(.+?)~>/);
if (matches !== null) input = matches[1]; if (matches !== null) input = matches[1];
}
let i = 0; let i = 0;
let block, blockBytes; let block, blockBytes;