Draco18s

AI Language Gibberify

Apr 24th, 2021
877
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. let allLanguages = ["🦊","🐦","🐉"];
  2.  
  3. function gibberify(output, knownlang) {
  4.   if (!state.dictionary) { buildDictionary(); }
  5.   for(let l in allLanguages) {
  6.     let lang = allLanguages[l];
  7.     if(!knownlang.includes(lang)) {
  8.       let regex = new RegExp('"'+lang+'.*?\."','gm');
  9.       if(output.match(regex)) {
  10.         output = output.replace(regex, x => {
  11.           return generateGibberish(x, lang);
  12.         });
  13.       }
  14.     }
  15.   }
  16.   return output;
  17. }
  18.  
  19. function knownlangs() {
  20.   let known = [];//["🐉"];
  21.   for(let e = 0; e < worldInfo.length; e++) {
  22.     if(worldInfo[e].keys.toLowerCase() == "known-languages") {
  23.       let str = worldInfo[e].entry.split("\n");
  24.       for(let l=0;l<str.length;l++) {
  25.         console.log(str[l]);
  26.         if(str[l].includes("#")) continue;
  27.         known.push(str[l]);
  28.         if(!allLanguages.includes(str[l]))
  29.           allLanguages.push(str[l]);
  30.       }
  31.     }
  32.   }
  33.   console.log(known);
  34.   return known;
  35. }
  36.  
  37. function ungibberify(context, knownlang) {
  38.   //console.log("A");
  39.   if (!state.dictionary) { buildDictionary(); }
  40.   for(let l in allLanguages) {
  41.     let lang = allLanguages[l];
  42.     let regex = new RegExp('"'+lang+'.*?\."','gm');
  43.     if(context.match(regex)) {
  44.       context = context.replace(regex, x => {
  45.         let ret2 = degibber(x, lang);
  46.         //console.log("Replacing " + x + " with " + ret2);
  47.         return ret2;
  48.       });
  49.     }
  50.   }
  51.   return context;
  52. }
  53.  
  54. function generateGibberish(input, lang) {
  55.   const pattern = /\w*(?!\w)/g;
  56.   return input.replace(pattern, x => {
  57.     if(state.dictionary[lang][x.toLowerCase()]) return fixCase(x, state.dictionary[lang][x.toLowerCase()]);
  58.     let ret = randomString(x, x.length);
  59.     state.dictionary[lang][x.toLowerCase()] = ret.toLowerCase();
  60.     state.dictionary[lang][ret.toLowerCase()] = x.toLowerCase();
  61.     return ret;
  62.   });
  63. }
  64.  
  65. function degibber(input, lang) {
  66.   const pattern = /\w*(?!\w)/g;
  67.   return input.replace(pattern, x => {
  68.     if(x.length < 1) return x;
  69.     //console.log("B: " + x);
  70.     if(state.dictionary[lang][x.toLowerCase()]+"" == "undefined") return x;
  71.     //console.log("C: " + state.dictionary[lang][x.toLowerCase()]);
  72.     if(state.dictionary[lang][x.toLowerCase()]) return fixCase(x, state.dictionary[lang][x.toLowerCase()]);
  73.     return x;
  74.   });
  75. }
  76.  
  77. const vowels = ["a","a","a","a","e","e","e","e","e","i","i","i","o","o","o","u"];
  78. const consonnants = ["b","c","d","d","f","g","h","h","h","k","l","l","l","m","n","n","n","p","r","r","r","s","s","s","t","t","t","t","v","w","y"];
  79.  
  80. function randomString(str, length) {
  81.   let ret = "";
  82.   for(let l=0;l<length;l++) {
  83.     var r;
  84.     if(l % 3 == 0) {
  85.       r = Math.floor(Math.random()*vowels.length);
  86.       ret += str.charAt(l) == str.charAt(l).toUpperCase() ? vowels[r].toUpperCase() : vowels[r];
  87.     }
  88.     else {
  89.       r = Math.floor(Math.random()*consonnants.length);
  90.       ret += str.charAt(l) == str.charAt(l).toUpperCase() ? consonnants[r].toUpperCase() : consonnants[r];
  91.     }
  92.   }
  93.   return ret;
  94. }
  95.  
  96. function fixCase(a, b) {
  97.   var r = "";
  98.   for(let v = 0; v < a.length; v++) {
  99.     let av = a.charAt(v);
  100.     r += av == av.toLowerCase() ? b.charAt(v) : b.charAt(v).toUpperCase();
  101.   }
  102.   return r;
  103. }
  104.  
  105. function buildDictionary() {
  106.   state.dictionary = {};
  107.   for(let l in allLanguages) {
  108.     let lang = allLanguages[l];
  109.     state.dictionary[lang] = {};
  110.   }
  111. }
Advertisement
Add Comment
Please, Sign In to add comment