Advertisement
Guest User

Untitled

a guest
Nov 2nd, 2016
157
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.26 KB | None | 0 0
  1. const EventEmitter = require('events');
  2.  
  3. exports = new EventEmitter();
  4.  
  5. var t = {};
  6.  
  7. exports.containsMat = function (text) {
  8. return t.containsMat(text);
  9. };
  10.  
  11. exports.antimat = t;
  12.  
  13. t.badPatterns = [
  14. "^(о|а)н(о|а)нист.*",
  15. "^лошар.*",
  16. "^к(а|о)злина$",
  17. "^к(о|а)зел$",
  18. "^сволоч(ь|ъ|и|уга|ам|ами).*",
  19. "^лох[уеыаоэяию].*",
  20. ".*урод(ы|у|ам|ина|ины).*",
  21. ".*бля(т|д).*", ".*гандо.*",
  22. "^м(а|о)нд(а|о).*",
  23. ".*сперма.*",
  24. ".*[уеыаоэяию]еб$",
  25. "^сучк(а|у|и|е|ой|ай).*",
  26. "^придур(ок|ки).*",
  27. "^д(е|и)би(л|лы).*",
  28. "^сос(ать|и|ешь|у)$",
  29. "^залуп.*",
  30. "^муд(е|ил|о|а|я|еб).*",
  31. ".*шалав(а|ы|ам|е|ами).*",
  32. ".*пр(а|о)ст(и|е)т(у|е)тк(а|и|ам|е|ами).*",
  33. ".*шлюх(а|и|ам|е|ами).*",
  34. ".*ху(й|и|я|е|л(и|е)).*",
  35. ".*п(и|е|ы)зд.*",
  36. "^бл(я|т|д).*",
  37. "(с|сц)ук(а|о|и|у).*",
  38. "^еб.*",
  39. ".*(д(о|а)лб(о|а)|разъ|разь|за|вы|по)ебы*.*",
  40. ".*пид(а|о|е)р.*",
  41. ".*хер.*"
  42. ];
  43.  
  44. t.goodPatterns = [
  45. ".*психу.*",
  46. ".*к(о|а)манд.*",
  47. ".*истр(е|и)блять.*",
  48. ".*л(о|а)х(о|а)трон.*",
  49. ".*(о|а)ск(о|а)рблять.*",
  50. "хул(е|и)ган",
  51. ".*м(а|о)нд(а|о)рин.*",
  52. ".*р(а|о)ссл(а|о)блять.*",
  53. ".*п(о|а)тр(е|и)блять.*",
  54. ".*@.*\\.(ру|сом|нет)$"
  55. ];
  56.  
  57. t.goodWords = [
  58. "дезмонда",
  59. "застрахуйте",
  60. "одномандатный",
  61. "подстрахуй",
  62. "психуй"
  63. ];
  64.  
  65. t.letters = {
  66. "a": "а",
  67. "b": "в",
  68. "c": "с",
  69. "e": "е",
  70. "f": "ф",
  71. "g": "д",
  72. "h": "н",
  73. "i": "и",
  74. "k": "к",
  75. "l": "л",
  76. "m": "м",
  77. "n": "н",
  78. "o": "о",
  79. "p": "р",
  80. "r": "р",
  81. "s": "с",
  82. "t": "т",
  83. "u": "у",
  84. "v": "в",
  85. "x": "х",
  86. "y": "у",
  87. "w": "ш",
  88. "z": "з",
  89. "ё": "е",
  90. "6": "б",
  91. "9": "д"
  92. };
  93.  
  94. t.containsMat = function (text) {
  95.  
  96. text = t.cleanBadSymbols(text.toLowerCase());
  97.  
  98. var words = text.split(" ");
  99.  
  100. for (var i = 0; i < words.length; i++) {
  101.  
  102. var word = t.convertEngToRus(words[i]);
  103.  
  104. if (t.isInGoodWords(word) && t.isInGoodPatterns(word))
  105. continue;
  106.  
  107. if (t.isInBadPatterns(word))
  108. return true;
  109. }
  110.  
  111. if (t.containsMatInSpaceWords(words))
  112. return true;
  113.  
  114. return false;
  115. };
  116.  
  117. t.convertEngToRus = function (word) {
  118. for (var j = 0; j < word.length; j++) {
  119. for (var key in t.letters) {
  120. if (word.charAt(j) == key)
  121. word = word.substring(0, j) + t.letters[key] + word.substring(j + 1, word.length)
  122. }
  123. }
  124.  
  125. return word;
  126. };
  127.  
  128. t.cleanBadSymbols = function (text) {
  129. return text.replace(/[^a-zA-Zа-яА-Яё0-9\s]/g, "");
  130. };
  131.  
  132. t.isInGoodWords = function (word) {
  133.  
  134. for (var i = 0; i < t.goodWords.length; i++) {
  135. if (word == t.goodWords[i])
  136. return true;
  137. }
  138.  
  139. return false;
  140. };
  141.  
  142. t.isInGoodPatterns = function (word) {
  143.  
  144. for (var i = 0; i < t.goodPatterns.length; i++) {
  145. var pattern = new RegExp(t.goodPatterns[i]);
  146. if (pattern.test(word))
  147. return true;
  148. }
  149.  
  150. return false;
  151. };
  152.  
  153. t.isInBadPatterns = function (word) {
  154.  
  155. for (var i = 0; i < t.badPatterns.length; i++) {
  156. var pattern = new RegExp(t.badPatterns[i]);
  157. if (pattern.test(word))
  158. return true;
  159. }
  160.  
  161. return false;
  162. };
  163.  
  164. t.containsMatInSpaceWords = function (words) {
  165. var spaceWords = t.findSpaceWords(words);
  166.  
  167. for (var i = 0; i < spaceWords.length; i++) {
  168.  
  169. var word = t.convertEngToRus(spaceWords[i]);
  170.  
  171. if (t.isInBadPatterns(word))
  172. return true;
  173. }
  174.  
  175. return false;
  176. };
  177.  
  178. t.findSpaceWords = function (words) {
  179.  
  180. var out = [];
  181. var spaceWord = "";
  182.  
  183. for(var i=0; i < words.length; i++ ){
  184. var word = words[i];
  185.  
  186. if(word.length <= 3){
  187. spaceWord += word;
  188. continue;
  189. }
  190.  
  191. if(spaceWord.length >= 3){
  192. out.push(spaceWord);
  193. spaceWord = "";
  194. }
  195. }
  196.  
  197. return out;
  198. };
  199.  
  200. t.addBadPattern = function (pattern) {
  201. t.badPatterns.push(pattern);
  202. };
  203.  
  204. t.addGoodPattern = function (pattern) {
  205. t.goodPatterns.push(pattern);
  206. };
  207.  
  208. t.addGoodWord = function (pattern) {
  209. t.goodWords.push(pattern);
  210. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement