Guest User

Untitled

a guest
Dec 21st, 2021
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #!/usr/bin/env node
  2.  
  3. const process = require("process");
  4.  
  5. const decode = (str) => {
  6.   return new TextDecoder().decode(
  7.     new Uint8Array(
  8.       str
  9.         .replace(/(\d+[ПУК|СРЕНЬК]{3,6})/g, (m) => {
  10.           const count = parseInt(m.replace(/[ПУК|СРЕНЬК]/g, ""), 10);
  11.           return m.replace(count, "").repeat(count);
  12.         })
  13.         .replace(/ПУК/g, "0")
  14.         .replace(/СРЕНЬК/g, "1")
  15.         .replace(/-/g, "")
  16.         .match(/.{1,8}/g)
  17.         .map((c) => parseInt(c, 2))
  18.     )
  19.   );
  20. };
  21.  
  22. const encode = (str) => {
  23.   return new TextEncoder()
  24.     .encode(str)
  25.     .reduce((s, b) => s + b.toString(2).padStart(8, "0"), "")
  26.     .replace(/(.)\1+/g, (m, c) => m.length + c)
  27.     .replace(/0/g, "ПУК-")
  28.     .replace(/1/g, "СРЕНЬК-")
  29.     .slice(0, -1);
  30. };
  31.  
  32. const action = process.argv[2];
  33. const str = process.argv[3] || "";
  34.  
  35. switch (action) {
  36.   case "-d":
  37.   case "--decode":
  38.     console.log(decode(str));
  39.     break;
  40.   case "-e":
  41.   case "--encode":
  42.     console.log(encode(str));
  43.     break;
  44.   default:
  45.     console.log(
  46.       '\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 - тут все мои друзья"'
  47.     );
  48. }
  49.  
Advertisement
Add Comment
Please, Sign In to add comment