autoSpurdo

Convert text on every page into spurdo

  1. // ==UserScript==
  2. // @name autoSpurdo
  3. // @description Convert text on every page into spurdo
  4. // @namespace installgen2
  5. // @include *
  6. // @version 7
  7. // @grant none
  8. // ==/UserScript==
  9. (function() {
  10. // Return a random ebin face
  11. var ebinFaces = [":D", ":DD", ":DDD", ":-D", "XD", "XXD", "XDD", "XXDD", "xD", "xDD", ":dd"];
  12. function getEbinFace() {
  13. return ebinFaces[Math.floor(Math.random() * ebinFaces.length)];
  14. }
  15.  
  16. // define replacements
  17. var spurdoReplacements = [
  18. ["wh", "w"],
  19. ["th", "d"],
  20.  
  21. ["af", "ab"],
  22. ["ap", "ab"],
  23. ["ca", "ga"],
  24. ["ck", "gg"],
  25. ["co", "go"],
  26. ["ev", "eb"],
  27. ["ex", "egz"],
  28. ["et", "ed"],
  29. ["iv", "ib"],
  30. ["it", "id"],
  31. ["ke", "ge"],
  32. ["nt", "nd"],
  33. ["op", "ob"],
  34. ["ot", "od"],
  35. ["po", "bo"],
  36. ["pe", "be"],
  37. ["pi", "bi"],
  38. ["up", "ub"],
  39. ["va", "ba"],
  40.  
  41. ["ck", "gg"],
  42. ["cr", "gr"],
  43. ["kn", "gn"],
  44. ["lt", "ld"],
  45. ["mm", "m"],
  46. ["nt", "dn"],
  47. ["pr", "br"],
  48. ["ts", "dz"],
  49. ["tr", "dr"],
  50.  
  51. ["bs", "bz"],
  52. ["ds", "dz"],
  53. ["es", "es"],
  54. ["fs", "fz"],
  55. ["gs", "gz"],
  56. [" is", " iz"],
  57. ["ls", "lz"],
  58. ["ms", "mz"],
  59. ["ns", "nz"],
  60. ["rs", "rz"],
  61. ["ss", "sz"],
  62. ["ts", "tz"],
  63. ["us", "uz"],
  64. ["ws", "wz"],
  65. ["ys", "yz"],
  66.  
  67. ["alk", "olk"],
  68. ["ing", "ign"],
  69.  
  70. ["ic", "ig"],
  71. ["ng", "nk"],
  72.  
  73. ["kek", "geg"],
  74. ["epic", "ebin"],
  75. ["some", "sum"],
  76. ["meme", "maymay"],
  77. ];
  78.  
  79. walk(document.body);
  80. function walk(node) {
  81. // I stole this function from here:
  82. // http://is.gd/mwZp7E
  83. var child,
  84. next;
  85.  
  86. switch (node.nodeType) {
  87. case 1: // Element
  88. case 11: // Document fragment
  89. child = node.firstChild;
  90.  
  91. while (child) {
  92. next = child.nextSibling;
  93. walk(child);
  94. child = next;
  95. }
  96. break;
  97. case 3: // Text node
  98. node.nodeValue = toSpurdo(node.nodeValue);
  99. break;
  100. }
  101. }
  102.  
  103. function toSpurdo(string) {
  104. // Convert to lowercase
  105. string = string.toLowerCase();
  106.  
  107. // apply replacements
  108. spurdoReplacements.forEach(function(filter) {
  109. var replaceFrom = new RegExp(filter[0], "gm"),
  110. replaceTo = filter[1];
  111.  
  112. string = string.replace(replaceFrom, replaceTo);
  113. });
  114.  
  115. // Replace "," and "." with ebin faces
  116. while (string.match(/\.|,(?=\s|$|\.)/m)) {
  117. string = string.replace(/\.|,(?=\s|$|\.)/m, " " + getEbinFace());
  118. }
  119.  
  120. // return spurdo'd text
  121. return string;
  122. }
  123. })();