Gab.ai Better Censor words

wildcard support [%] for Gab.ai censor words

  1. // ==UserScript==
  2. // @name Gab.ai Better Censor words
  3. // @namespace https://gab.ai/Jeremy20_9
  4. // @version 0.3
  5. // @description wildcard support [%] for Gab.ai censor words
  6. // @author Jeremiah 20:9
  7. // @match https://gab.ai/self-censor*
  8. // @match https://gab.ai/*
  9. // @grant none
  10. // ==/UserScript==
  11.  
  12. var list = null;
  13. if(window.location.href.indexOf("https://gab.ai/self-censor") == 0)
  14. {
  15. //----- SELF CENSOR PAGE ------------------------------------------
  16. $(document).ready(function(){
  17. list = $("ul.censor-list--word")[0];
  18. list.addEventListener('DOMSubtreeModified', handleListPopulate);
  19. setTimeout(handleListPopulate, 500);
  20. });
  21. }
  22. else
  23. {
  24. //----- OTHER PAGES -----------------------------------------------
  25. $(document).ready(function(){
  26. var cwords = localStorage.getItem("gab-censored-words");
  27. if(!cwords)
  28. return;
  29.  
  30. cwords = JSON.parse(cwords);
  31.  
  32. if(cwords.length == 0)
  33. return;
  34.  
  35. list = $("#home-post-list,#user-post-list")[0];
  36. if(!list)
  37. return;
  38. list.addEventListener('DOMSubtreeModified', handleUserPosts);
  39. });
  40. }
  41. function handleUserPosts()
  42. {
  43. var cwords = localStorage.getItem("gab-censored-words");
  44. cwords = JSON.parse(cwords);
  45. var posts = $("div.post").not(".post--load");
  46. var plist = (userpostlist == undefined || userpostlist.posts.length == 0) ? postlist : userpostlist;
  47. if(posts.length < 2 || plist == undefined || plist.posts.length == 0)
  48. return;
  49.  
  50. for(var c in cwords)
  51. {
  52. var regex = new RegExp(cwords[c], "gmi");
  53. for(var p = 0; p < plist.posts.length; p++)
  54. {
  55. if(regex.test(plist.posts[p].post.body))
  56. {
  57. plist.posts.splice(p,1);
  58. p--;
  59. }
  60. }
  61. }
  62. }
  63. function handleListPopulate()
  64. {
  65. var censorwords = [];
  66.  
  67. if(!censorPreferences.words)
  68. return;
  69.  
  70. for(var w in censorPreferences.words)
  71. {
  72. var word = censorPreferences.words[w];
  73. word = "(^|\\b)" + word.replace("%", "[\\w]*") + "\\b";
  74. censorwords.push(word);
  75. }
  76.  
  77. list.removeEventListener('DOMSubtreeModified', handleListPopulate);
  78. localStorage.setItem("gab-censored-words", JSON.stringify(censorwords));
  79. }