Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env node
- const process = require("process");
- const decode = (str) => {
- return new TextDecoder().decode(
- new Uint8Array(
- str
- .replace(/(\d+[ПУК|СРЕНЬК]{3,6})/g, (m) => {
- const count = parseInt(m.replace(/[ПУК|СРЕНЬК]/g, ""), 10);
- return m.replace(count, "").repeat(count);
- })
- .replace(/ПУК/g, "0")
- .replace(/СРЕНЬК/g, "1")
- .replace(/-/g, "")
- .match(/.{1,8}/g)
- .map((c) => parseInt(c, 2))
- )
- );
- };
- const encode = (str) => {
- return new TextEncoder()
- .encode(str)
- .reduce((s, b) => s + b.toString(2).padStart(8, "0"), "")
- .replace(/(.)\1+/g, (m, c) => m.length + c)
- .replace(/0/g, "ПУК-")
- .replace(/1/g, "СРЕНЬК-")
- .slice(0, -1);
- };
- const action = process.argv[2];
- const str = process.argv[3] || "";
- switch (action) {
- case "-d":
- case "--decode":
- console.log(decode(str));
- break;
- case "-e":
- case "--encode":
- console.log(encode(str));
- break;
- default:
- console.log(
- '\033[1m\033[31m[ПУК-СРЕНЬК]\033[0m 2ch Edition\033[0m\n\n\033[1mОПИСАНИЕ\033[0m\n\tСредство для бинарного кодирования/декодирования текста весьма\n\tсвоеобразным образом.\n\n\033[1mКАК ИСПОЛЬЗОВАТЬ\033[0m\n\tpuk.js [\033[4mОПЦИЯ\033[0m] [\033[4mСТРОКА\033[0m]\n\n\033[1mОПЦИИ\033[0m\n\t\033[1m-d, --decode\033[0m\n\t\tрасшифровать строку\n\n\t\033[1m-e, --encode\033[0m\n\t\tзашифровать строку\n\n\033[1mПРИМЕРЫ ИСПОЛЬЗОВАНИЯ\033[0m\n\tpuk.js -d "2ПУК-2СРЕНЬК-2ПУК-СРЕНЬК-ПУК"\n\tpuk.js --decode "2ПУК-2СРЕНЬК-2ПУК-СРЕНЬК-ПУК"\n\n\tpuk.js -e "2ch - тут все мои друзья"\n\tpuk.js --encode "2ch - тут все мои друзья"'
- );
- }
Advertisement
Add Comment
Please, Sign In to add comment