zaarly-swearjar 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
data/lib/config/en.yml CHANGED
@@ -1,22 +1,21 @@
1
- regex:
2
- 'hard ons?\b': ["sexual"]
3
- 'jerk off\b': ["sexual"]
4
- 'pissed off\b': ["inappropriate"]
5
- 'sand nigger': ["discriminatory"]
6
- simple:
1
+ default:
2
+ "anal": ["sexual"]
7
3
  "anus": ["sexual"]
8
4
  "arse": ["insult"]
9
5
  "arsehole": ["insult"]
10
- "ass": ["sexual", "insult"]
6
+ "ass": ["sexual, :insult"]
7
+ "asses": ["sexual"]
11
8
  "ass-hat": ["insult"]
12
9
  "ass-pirate": ["discriminatory"]
13
10
  "assbag": ["insult"]
14
11
  "assbandit": ["discriminatory"]
15
12
  "assbanger": ["discriminatory"]
16
13
  "assbite": ["insult"]
17
- "assclown": ["sexual"]
14
+ "assclown": ["insult"]
15
+ "asscheeks": ["sexual"]
18
16
  "asscock": ["insult"]
19
17
  "asscracker": ["sexual"]
18
+ "asses": ["sexual"]
20
19
  "assface": ["sexual"]
21
20
  "assfuck": ["sexual"]
22
21
  "assfucker": ["discriminatory"]
@@ -24,6 +23,7 @@ simple:
24
23
  "asshat": ["sexual"]
25
24
  "asshead": ["insult"]
26
25
  "asshole": ["insult"]
26
+ "assholes": ["insult"]
27
27
  "asshopper": ["discriminatory"]
28
28
  "assjacker": ["discriminatory"]
29
29
  "asslick": ["insult"]
@@ -49,16 +49,20 @@ simple:
49
49
  "bitch": ["insult"]
50
50
  "bitchass": ["insult"]
51
51
  "bitcher": ["insult"]
52
+ "bitchers": ["insult"]
53
+ "bitches": ["insult"]
52
54
  "bitchin": ["inappropriate"]
53
55
  "bitching": ["inappropriate"]
54
- "bitchtit": ["discriminatory"]
56
+ "bitchtits": ["discriminatory"]
55
57
  "bitchy": ["insult"]
56
58
  "blow job": ["sexual"]
57
59
  "blowjob": ["sexual"]
60
+ "blowjobs": ["sexual"]
58
61
  "bollocks": ["sexual"]
59
62
  "bollox": ["sexual"]
60
63
  "boner": ["sexual"]
61
64
  "brotherfucker": ["discriminatory"]
65
+ "bukkake": ["sexual"]
62
66
  "bullshit": ["inappropriate"]
63
67
  "bullshit": ["inappropriate"]
64
68
  "bumblefuck": ["discriminatory"]
@@ -77,7 +81,7 @@ simple:
77
81
  "clitfuck": ["sexual"]
78
82
  "clusterfuck": ["inappropriate"]
79
83
  "cock": ["sexual"]
80
- "cockass": "Jerk"
84
+ "cockass": ["insult"]
81
85
  "cockbite": ["insult"]
82
86
  "cockburger": ["insult"]
83
87
  "cockface": ["insult"]
@@ -92,50 +96,57 @@ simple:
92
96
  "cockmuncher": ["discriminatory"]
93
97
  "cocknose": ["insult"]
94
98
  "cocknugget": ["insult"]
99
+ "cocks": ["sexual"]
95
100
  "cockshit": ["insult"]
96
101
  "cocksmith": ["discriminatory"]
97
102
  "cocksmoker": ["discriminatory"]
98
103
  "cocksuck": ["sexual"]
99
104
  "cocksucked": ["sexual"]
100
- "cocksucker": ["discriminatory", "sexual"]
101
- "cocksucking": ["sexual", "discriminatory"]
102
- "cocksucks": ["sexual", "discriminatory"]
105
+ "cocksucker": ["discriminatory, :sexual"]
106
+ "cocksuckers": ["discriminatory, :sexual"]
107
+ "cocksucking": ["sexual, :discriminatory"]
108
+ "cocksucks": ["sexual, :discriminatory"]
103
109
  "coochie": ["sexual"]
104
110
  "coochy": ["sexual"]
105
111
  "coon": ["discriminatory"]
106
112
  "cooter": ["sexual"]
107
113
  "cracker": ["discriminatory"]
108
114
  "cum": ["sexual"]
115
+ "cumming": ["sexual"]
109
116
  "cumbubble": ["insult"]
110
117
  "cumdumpster": ["sexual"]
111
118
  "cumguzzler": ["discriminatory"]
112
119
  "cumjockey": ["discriminatory"]
113
120
  "cummer": ["sexual"]
114
121
  "cumming": ["sexual"]
122
+ "cums": ["sexual"]
115
123
  "cumshot": ["sexual"]
116
- "cumslut": ["sexual", "insult"]
124
+ "cumslut": ["sexual, :insult"]
117
125
  "cumtart": ["insult"]
118
126
  "cunillingus": ["sexual"]
119
127
  "cunnie": ["sexual"]
120
128
  "cunnilingus": ["sexual"]
121
- "cunnilingus": ["sexual"]
122
- "cunt": ["insult", "sexual"]
129
+ "cunt": ["insult, :sexual"]
123
130
  "cuntface": ["insult"]
124
131
  "cunthole": ["sexual"]
125
132
  "cuntlick": ["sexual"]
126
- "cuntlicker": ["sexual", "discriminatory"]
133
+ "cuntlicker": ["sexual, :discriminatory"]
127
134
  "cuntlicking": ["sexual"]
128
135
  "cuntrag": ["insult"]
136
+ "cunts": ["insult, :sexual"]
129
137
  "cuntslut": ["insult"]
130
138
  "cyberfuc": ["sexual"]
131
139
  "cyberfuck": ["sexual"]
132
140
  "cyberfucked": ["sexual"]
133
141
  "cyberfucker": ["sexual"]
142
+ "cyberfuckers": ["sexual"]
134
143
  "cyberfucking": ["sexual"]
135
144
  "dago": ["discriminatory"]
136
145
  "damn": ["inappropriate"]
137
146
  "deggo": ["discriminatory"]
138
- "dick": ["sexual", "insult"]
147
+ "deepthroat": ["sexual"]
148
+ "deepthroating": ["sexual"]
149
+ "dick": ["sexual, :insult"]
139
150
  "dickbag": ["insult"]
140
151
  "dickbeaters": ["sexual"]
141
152
  "dickface": ["insult"]
@@ -146,6 +157,7 @@ simple:
146
157
  "dickjuice": ["sexual"]
147
158
  "dickmilk": ["sexual"]
148
159
  "dickmonger": ["discriminatory"]
160
+ "dicks": ["sexual, :insult"]
149
161
  "dickslap": ["sexual"]
150
162
  "dicksucker": ["discriminatory"]
151
163
  "dickwad": ["insult"]
@@ -154,8 +166,11 @@ simple:
154
166
  "dickwod": ["insult"]
155
167
  "dike": ["discriminatory"]
156
168
  "dildo": ["sexual"]
157
- "dink": ["insult", "sexual"]
169
+ "dildos": ["sexual"]
170
+ "dink": ["insult, :sexual"]
171
+ "dinks": ["sexual"]
158
172
  "dipshit": ["insult"]
173
+ "doggystyle": ["sexual"]
159
174
  "doochbag": ["insult"]
160
175
  "dookie": ["inappropriate"]
161
176
  "douche": ["insult"]
@@ -173,6 +188,7 @@ simple:
173
188
  "ejaculated": ["sexual"]
174
189
  "ejaculates": ["sexual"]
175
190
  "ejaculating": ["sexual"]
191
+ "ejaculatings": ["sexual"]
176
192
  "ejaculation": ["sexual"]
177
193
  "fag": ["discriminatory"]
178
194
  "fagbag": ["discriminatory"]
@@ -184,26 +200,32 @@ simple:
184
200
  "faggotcock": ["discriminatory"]
185
201
  "faggs": ["discriminatory"]
186
202
  "fagot": ["discriminatory"]
203
+ "fagots": ["discriminatory"]
187
204
  "fags": ["discriminatory"]
188
205
  "fagtard": ["discriminatory"]
189
206
  "fart": ["inappropriate"]
190
207
  "farted": ["inappropriate"]
191
208
  "farting": ["inappropriate"]
209
+ "fartings": ["inappropriate"]
210
+ "farts": ["inappropriate"]
192
211
  "farty": ["inappropriate"]
193
212
  "fatass": ["insult"]
194
213
  "felatio": ["sexual"]
195
214
  "fellatio": ["sexual"]
196
- "fellatio": ["sexual"]
197
215
  "feltch": ["sexual"]
198
216
  "fingerfuck": ["sexual"]
199
217
  "fingerfucked": ["sexual"]
200
218
  "fingerfucker": ["sexual"]
219
+ "fingerfuckers": ["sexual"]
201
220
  "fingerfucking": ["sexual"]
202
221
  "fingerfucks": ["sexual"]
203
222
  "fistfuck": ["sexual"]
204
223
  "fistfucked": ["sexual"]
205
224
  "fistfucker": ["sexual"]
225
+ "fistfuckers": ["sexual"]
206
226
  "fistfucking": ["sexual"]
227
+ "fistfuckings": ["sexual"]
228
+ "fistfucks": ["sexual"]
207
229
  "flamer": ["discriminatory"]
208
230
  "fuck": ["sexual"]
209
231
  "fuckass": ["insult"]
@@ -212,17 +234,21 @@ simple:
212
234
  "fuckbrain": ["insult"]
213
235
  "fuckbutt": ["sexual"]
214
236
  "fucked": ["sexual"]
215
- "fucker": ["sexual", "insult"]
237
+ "fucker": ["sexual, :insult"]
238
+ "fuckers": ["sexual, :insult"]
216
239
  "fuckersucker": ["insult"]
217
240
  "fuckface": ["insult"]
218
241
  "fuckhead": ["sexual"]
219
242
  "fuckhole": ["insult"]
220
243
  "fuckin": ["sexual"]
221
244
  "fucking": ["sexual"]
245
+ "fuckings": ["sexual"]
222
246
  "fuckme": ["sexual"]
223
247
  "fucknut": ["insult"]
224
248
  "fucknutt": ["insult"]
225
249
  "fuckoff": ["insult"]
250
+ "fucks": ["sexual"]
251
+ "fucks": ["sexual"]
226
252
  "fuckstick": ["sexual"]
227
253
  "fucktard": ["insult"]
228
254
  "fuckup": ["insult"]
@@ -231,8 +257,10 @@ simple:
231
257
  "fuckwitt": ["insult"]
232
258
  "fudgepacker": ["discriminatory"]
233
259
  "fuk": ["sexual"]
260
+ "fuks": ["sexual"]
234
261
  "gangbang": ["sexual"]
235
262
  "gangbanged": ["sexual"]
263
+ "gangbangs": ["sexual"]
236
264
  "gay": ["discriminatory"]
237
265
  "gayass": ["sexual"]
238
266
  "gaybob": ["discriminatory"]
@@ -243,15 +271,18 @@ simple:
243
271
  "gaysex": ["discriminatory"]
244
272
  "gaytard": ["discriminatory"]
245
273
  "gaywad": ["discriminatory"]
246
- "goddamn": ["inappropriate", "blasphemy"]
247
- "goddamn": ["inappropriate", "blasphemy"]
248
- "goddamnit": ["inappropriate", "blasphemy"]
274
+ "gloryhole": ["sexual"]
275
+ "goddamn": ["inappropriate, :blasphemy"]
276
+ "goddamn": ["inappropriate, :blasphemy"]
277
+ "goddamnit": ["inappropriate, :blasphemy"]
249
278
  "gooch": ["sexual"]
250
279
  "gook": ["discriminatory"]
251
280
  "gringo": ["discriminatory"]
252
281
  "guido": ["discriminatory"]
253
282
  "handjob": ["sexual"]
283
+ "handjobs": ["sexual"]
254
284
  "hardcoresex": ["sexual"]
285
+ "hard on": ["sexual"]
255
286
  "heeb": ["discriminatory"]
256
287
  "hell": ["inappropriate"]
257
288
  "hell": ["inappropriate"]
@@ -262,20 +293,24 @@ simple:
262
293
  "honkey": ["discriminatory"]
263
294
  "horniest": ["sexual"]
264
295
  "horny": ["sexual"]
296
+ "horney": ["sexual"]
265
297
  "hotsex": ["sexual"]
266
298
  "humping": ["sexual"]
267
299
  "jackass": ["insult"]
268
300
  "jap": ["discriminatory"]
301
+ "jerk off": ["sexual"]
269
302
  "jigaboo": ["discriminatory"]
270
303
  "jism": ["sexual"]
271
304
  "jiz": ["sexual"]
272
305
  "jizm": ["sexual"]
273
306
  "jizz": ["sexual"]
307
+ "jizzing": ["sexual"]
274
308
  "jungle bunny": ["discriminatory"]
275
309
  "junglebunny": ["discriminatory"]
276
310
  "kike": ["discriminatory"]
277
311
  "kock": ["sexual"]
278
312
  "kondum": ["sexual"]
313
+ "kondums": ["sexual"]
279
314
  "kooch": ["sexual"]
280
315
  "kootch": ["sexual"]
281
316
  "kum": ["sexual"]
@@ -291,34 +326,47 @@ simple:
291
326
  "lezzie": ["discriminatory"]
292
327
  "lust": ["sexual"]
293
328
  "lusting": ["sexual"]
329
+ "masturbate": ["sexual"]
330
+ "masturbating": ["sexual"]
331
+ "masturbation": ["sexual"]
294
332
  "mcfagget": ["discriminatory"]
295
333
  "mick": ["discriminatory"]
296
334
  "minge": ["sexual"]
297
335
  "mothafuck": ["sexual"]
298
336
  "mothafucka": ["sexual"]
299
337
  "mothafucka": ["insult"]
338
+ "mothafuckas": ["sexual"]
300
339
  "mothafuckaz": ["sexual"]
301
340
  "mothafucked": ["sexual"]
302
- "mothafucker": ["sexual", "insult"]
341
+ "mothafucker": ["sexual, :insult"]
342
+ "mothafuckers": ["sexual, :insult"]
303
343
  "mothafuckin": ["sexual"]
304
344
  "mothafucking": ["sexual"]
345
+ "mothafuckings": ["sexual"]
305
346
  "mothafucks": ["sexual"]
306
347
  "motherfuck": ["sexual"]
307
348
  "motherfucked": ["sexual"]
308
- "motherfucker": ["sexual", "insult"]
349
+ "motherfucker": ["sexual, :insult"]
350
+ "motherfuckers": ["sexual"]
309
351
  "motherfuckin": ["sexual"]
310
352
  "motherfucking": ["sexual"]
353
+ "motherfuckings": ["sexual"]
354
+ "motherfucks": ["sexual"]
311
355
  "muff": ["sexual"]
312
- "muffdiver": ["discriminatory", "sexual"]
356
+ "muffdiver": ["discriminatory, :sexual"]
313
357
  "munging": ["sexual"]
314
358
  "negro": ["discriminatory"]
315
359
  "nigga": ["discriminatory"]
316
360
  "nigger": ["discriminatory"]
361
+ "niggers": ["discriminatory"]
317
362
  "niglet": ["discriminatory"]
363
+ "nympho": ["sexual"]
318
364
  "nut sack": ["sexual"]
319
365
  "nutsack": ["sexual"]
320
366
  "orgasim": ["sexual"]
367
+ "orgasims": ["sexual"]
321
368
  "orgasm": ["sexual"]
369
+ "orgasms": ["sexual"]
322
370
  "paki": ["discriminatory"]
323
371
  "panooch": ["sexual"]
324
372
  "pecker": ["sexual"]
@@ -342,11 +390,13 @@ simple:
342
390
  "piss": ["inappropriate"]
343
391
  "pissed": ["inappropriate"]
344
392
  "pisser": ["sexual"]
393
+ "pissers": ["sexual"]
345
394
  "pisses": ["sexual"]
346
395
  "pissflaps": ["sexual"]
347
396
  "pissin": ["sexual"]
348
397
  "pissing": ["sexual"]
349
398
  "pissoff": ["sexual"]
399
+ "pissed off": ["inappropriate"]
350
400
  "polesmoker": ["discriminatory"]
351
401
  "pollock": ["discriminatory"]
352
402
  "poon": ["sexual"]
@@ -360,13 +410,17 @@ simple:
360
410
  "pornography": ["sexual"]
361
411
  "pornos": ["sexual"]
362
412
  "prick": ["sexual"]
413
+ "prick": ["sexual"]
414
+ "pricks": ["sexual"]
363
415
  "punanny": ["sexual"]
364
416
  "punta": ["insult"]
365
- "pusies": ["sexual", "insult"]
366
- "pussies": ["sexual", "insult"]
367
- "pussy": ["sexual", "insult"]
417
+ "pusies": ["sexual, :insult"]
418
+ "pussies": ["sexual, :insult"]
419
+ "pussy": ["sexual, :insult"]
368
420
  "pussylicking": ["sexual"]
421
+ "pussys": ["sexual"]
369
422
  "pusy": ["sexual"]
423
+ "pusys": ["sexual"]
370
424
  "puto": ["insult"]
371
425
  "queef": ["sexual"]
372
426
  "queer": ["discriminatory"]
@@ -378,28 +432,32 @@ simple:
378
432
  "sandnigger": ["discriminatory"]
379
433
  "schlong": ["sexual"]
380
434
  "scrote": ["sexual"]
381
- "shit": ["sexual", "inappropriate"]
435
+ "shit": ["sexual, :inappropriate"]
382
436
  "shitass": ["insult"]
383
437
  "shitbag": ["insult"]
384
438
  "shitbagger": ["insult"]
385
- "shitbrain": ["insult"]
439
+ "shitbrains": ["insult"]
386
440
  "shitbreath": ["insult"]
387
441
  "shitcunt": ["insult"]
388
442
  "shitdick": ["insult"]
389
443
  "shited": ["sexual"]
390
444
  "shitface": ["insult"]
391
- "shitfaced": ["inappropriate", "insult"]
445
+ "shitfaced": ["inappropriate, :insult"]
392
446
  "shitfull": ["sexual"]
393
447
  "shithead": ["insult"]
394
448
  "shithole": ["insult"]
395
449
  "shithouse": ["inappropriate"]
396
450
  "shiting": ["sexual"]
451
+ "shitings": ["sexual"]
452
+ "shits": ["sexual"]
397
453
  "shitspitter": ["sexual"]
398
- "shitstain": ["inappropriate", "insult"]
454
+ "shitstain": ["inappropriate, :insult"]
399
455
  "shitted": ["sexual"]
400
456
  "shitter": ["sexual"]
457
+ "shitters": ["sexual"]
401
458
  "shittiest": ["inappropriate"]
402
459
  "shitting": ["inappropriate"]
460
+ "shittings": ["sexual"]
403
461
  "shitty": ["inappropriate"]
404
462
  "shity": ["sexual"]
405
463
  "shiz": ["inappropriate"]
@@ -423,9 +481,11 @@ simple:
423
481
  "thundercunt": ["insult"]
424
482
  "tit": ["sexual"]
425
483
  "titfuck": ["sexual"]
484
+ "tits": ["sexual"]
426
485
  "tittyfuck": ["sexual"]
427
486
  "twat": ["sexual"]
428
487
  "twatlips": ["insult"]
488
+ "twats": ["sexual"]
429
489
  "twatwaffle": ["discriminatory"]
430
490
  "unclefucker": ["discriminatory"]
431
491
  "va-j-j": ["sexual"]
@@ -438,3 +498,329 @@ simple:
438
498
  "whorebag": ["insult"]
439
499
  "whoreface": ["insult"]
440
500
  "wop": ["discriminatory"]
501
+ "bbw": ["questionable"]
502
+ "bbws": ["questionable"]
503
+ "bdsm": ["questionable"]
504
+ "bj": ["questionable"]
505
+ "bjs": ["questionable"]
506
+ "boobs": ["questionable"]
507
+ "booty": ["questionable"]
508
+ "circumcised": ["questionable"]
509
+ "clit": ["questionable"]
510
+ "ddf": ["questionable"]
511
+ "ddfree": ["questionable"]
512
+ "dicks": ["questionable"]
513
+ "dildo": ["questionable"]
514
+ "fetishes": ["questionable"]
515
+ "fondling": ["questionable"]
516
+ "foreplay": ["questionable"]
517
+ "foreskin": ["questionable"]
518
+ "fuck": ["questionable"]
519
+ "fucked": ["questionable"]
520
+ "fucker": ["questionable"]
521
+ "fwb": ["questionable"]
522
+ "hookers": ["questionable"]
523
+ "humilation": ["questionable"]
524
+ "humiliation": ["questionable"]
525
+ "intercourse": ["questionable"]
526
+ "intimacy": ["questionable"]
527
+ "kink": ["questionable"]
528
+ "kinkier": ["questionable"]
529
+ "kinky": ["questionable"]
530
+ "lover": ["questionable"]
531
+ "lust": ["questionable"]
532
+ "milf": ["questionable"]
533
+ "mistress": ["questionable"]
534
+ "orgasmic": ["questionable"]
535
+ "orgasms": ["questionable"]
536
+ "rape": ["questionable"]
537
+ "rimming": ["questionable"]
538
+ "sexting": ["questionable"]
539
+ "shemale": ["questionable"]
540
+ "slave": ["questionable"]
541
+ "slut": ["questionable"]
542
+ "slutty": ["questionable"]
543
+ "spank": ["questionable"]
544
+ "spanked": ["questionable"]
545
+ "spanking": ["questionable"]
546
+ "std": ["questionable"]
547
+ "str": ["questionable"]
548
+ "submissive": ["questionable"]
549
+ "swf": ["questionable"]
550
+ "swm": ["questionable"]
551
+ "tgirl": ["questionable"]
552
+ "threesome": ["questionable"]
553
+ "threesomes": ["questionable"]
554
+ "vasectomy": ["questionable"]
555
+ "busty": ["questionable"]
556
+ "cuties": ["questionable"]
557
+ "gag": ["questionable"]
558
+ "lick": ["questionable"]
559
+ "licked": ["questionable"]
560
+ "licking": ["questionable"]
561
+ "moan": ["questionable"]
562
+ "oral": ["questionable"]
563
+ "orally": ["questionable"]
564
+ "passable": ["questionable"]
565
+ "submission": ["questionable"]
566
+ "throbbing": ["questionable"]
567
+ "attracted": ["questionable"]
568
+ "attractive": ["questionable"]
569
+ "endowed": ["questionable"]
570
+ "freaky": ["questionable"]
571
+ "handsome": ["questionable"]
572
+ "hunk": ["questionable"]
573
+ "jerk": ["questionable"]
574
+ "lips": ["questionable"]
575
+
576
+
577
+ inappropriate:
578
+ "m4m": ["inappropriate"]
579
+ "m4mm": ["inappropriate"]
580
+ "m4mw": ["inappropriate"]
581
+ "m4t": ["inappropriate"]
582
+ "m4ww": ["inappropriate"]
583
+ "mm4m": ["inappropriate"]
584
+ "mm4w": ["inappropriate"]
585
+ "mw4m": ["inappropriate"]
586
+ "mw4mm": ["inappropriate"]
587
+ "mw4mw": ["inappropriate"]
588
+ "mw4w": ["inappropriate"]
589
+ "t4m": ["inappropriate"]
590
+ "w4m": ["inappropriate"]
591
+ "w4mw": ["inappropriate"]
592
+ "w4w": ["inappropriate"]
593
+
594
+ questionable:
595
+ "bareback": ["questionable"]
596
+ "barefeet": ["questionable"]
597
+ "bi": ["questionable"]
598
+ "bicurious": ["questionable"]
599
+ "bisexual": ["questionable"]
600
+ "bitch": ["questionable"]
601
+ "blindfolded": ["questionable"]
602
+ "bondage": ["questionable"]
603
+ "bottoming": ["questionable"]
604
+ "butt": ["questionable"]
605
+ "choke": ["questionable"]
606
+ "cock": ["questionable"]
607
+ "cocks": ["questionable"]
608
+ "creampie": ["questionable"]
609
+ "creampies": ["questionable"]
610
+ "cuddle": ["questionable"]
611
+ "dating": ["questionable"]
612
+ "degrade": ["questionable"]
613
+ "degrading": ["questionable"]
614
+ "dom": ["questionable"]
615
+ "dominant": ["questionable"]
616
+ "dominate": ["questionable"]
617
+ "dominated": ["questionable"]
618
+ "dominating": ["questionable"]
619
+ "domination": ["questionable"]
620
+ "doms": ["questionable"]
621
+ "erotic": ["questionable"]
622
+ "escorts": ["questionable"]
623
+ "exhibitionist": ["questionable"]
624
+ "exhibitionists": ["questionable"]
625
+ "fag": ["questionable"]
626
+ "femenine": ["questionable"]
627
+ "feminine": ["questionable"]
628
+ "feminize": ["questionable"]
629
+ "fetish": ["questionable"]
630
+ "fuckin": ["questionable"]
631
+ "fucking": ["questionable"]
632
+ "gay": ["questionable"]
633
+ "humilate": ["questionable"]
634
+ "humiliate": ["questionable"]
635
+ "humiliated": ["questionable"]
636
+ "kiss": ["questionable"]
637
+ "kisser": ["questionable"]
638
+ "kisses": ["questionable"]
639
+ "kissing": ["questionable"]
640
+ "laid": ["questionable"]
641
+ "lesbian": ["questionable"]
642
+ "lesbians": ["questionable"]
643
+ "lingerie": ["questionable"]
644
+ "marriage": ["questionable"]
645
+ "married": ["questionable"]
646
+ "naked": ["questionable"]
647
+ "naughty": ["questionable"]
648
+ "nsa": ["questionable"]
649
+ "nude": ["questionable"]
650
+ "nudes": ["questionable"]
651
+ "penetration": ["questionable"]
652
+ "penis": ["questionable"]
653
+ "perv": ["questionable"]
654
+ "perverted": ["questionable"]
655
+ "picpic": ["questionable"]
656
+ "piss": ["questionable"]
657
+ "punished": ["questionable"]
658
+ "pussy": ["questionable"]
659
+ "rim": ["questionable"]
660
+ "rimmed": ["questionable"]
661
+ "roleplay": ["questionable"]
662
+ "romance": ["questionable"]
663
+ "romantic": ["questionable"]
664
+ "sensual": ["questionable"]
665
+ "sex": ["questionable"]
666
+ "sexier": ["questionable"]
667
+ "sexiest": ["questionable"]
668
+ "sext": ["questionable"]
669
+ "sexual": ["questionable"]
670
+ "sexuality": ["questionable"]
671
+ "sexually": ["questionable"]
672
+ "sexxy": ["questionable"]
673
+ "sexy": ["questionable"]
674
+ "sissy": ["questionable"]
675
+ "slapping": ["questionable"]
676
+ "sperm": ["questionable"]
677
+ "strapon": ["questionable"]
678
+ "throating": ["questionable"]
679
+ "tits": ["questionable"]
680
+ "titties": ["questionable"]
681
+ "tranny": ["questionable"]
682
+ "trannys": ["questionable"]
683
+ "transsexual": ["questionable"]
684
+ "twink": ["questionable"]
685
+ "virginity": ["questionable"]
686
+ "watersports": ["questionable"]
687
+ "whip": ["questionable"]
688
+ "worship": ["questionable"]
689
+ "worshipped": ["questionable"]
690
+ "worshipper": ["questionable"]
691
+ "abuse": ["questionable"]
692
+ "bang": ["questionable"]
693
+ "bf": ["questionable"]
694
+ "cougar": ["questionable"]
695
+ "cougars": ["questionable"]
696
+ "descreet": ["questionable"]
697
+ "descrete": ["questionable"]
698
+ "discreet": ["questionable"]
699
+ "discreetly": ["questionable"]
700
+ "discrete": ["questionable"]
701
+ "discretely": ["questionable"]
702
+ "discretion": ["questionable"]
703
+ "disease": ["questionable"]
704
+ "diseases": ["questionable"]
705
+ "fantasies": ["questionable"]
706
+ "fantasy": ["questionable"]
707
+ "fem": ["questionable"]
708
+ "hardcore": ["questionable"]
709
+ "hookup": ["questionable"]
710
+ "hung": ["questionable"]
711
+ "hurt": ["questionable"]
712
+ "intimate": ["questionable"]
713
+ "jacking": ["questionable"]
714
+ "loving": ["questionable"]
715
+ "masculine": ["questionable"]
716
+ "massage": ["questionable"]
717
+ "massages": ["questionable"]
718
+ "massaging": ["questionable"]
719
+ "masseur": ["questionable"]
720
+ "muscular": ["questionable"]
721
+ "openminded": ["questionable"]
722
+ "panties": ["questionable"]
723
+ "panty": ["questionable"]
724
+ "pantyhose": ["questionable"]
725
+ "passionate": ["questionable"]
726
+ "shit": ["questionable"]
727
+ "squirt": ["questionable"]
728
+ "squirting": ["questionable"]
729
+ "stud": ["questionable"]
730
+ "suck": ["questionable"]
731
+ "sucked": ["questionable"]
732
+ "sucking": ["questionable"]
733
+ "tease": ["questionable"]
734
+ "teasing": ["questionable"]
735
+ "webcam": ["questionable"]
736
+ "wetness": ["questionable"]
737
+ "age": ["questionable"]
738
+ "balls": ["questionable"]
739
+ "bedroom": ["questionable"]
740
+ "blond": ["questionable"]
741
+ "blonde": ["questionable"]
742
+ "blow": ["questionable"]
743
+ "boy": ["questionable"]
744
+ "boyfriend": ["questionable"]
745
+ "boys": ["questionable"]
746
+ "breast": ["questionable"]
747
+ "breasts": ["questionable"]
748
+ "bush": ["questionable"]
749
+ "casual": ["questionable"]
750
+ "chest": ["questionable"]
751
+ "chick": ["questionable"]
752
+ "chubby": ["questionable"]
753
+ "curvy": ["questionable"]
754
+ "cute": ["questionable"]
755
+ "daddy": ["questionable"]
756
+ "date": ["questionable"]
757
+ "dirty": ["questionable"]
758
+ "divorced": ["questionable"]
759
+ "dude": ["questionable"]
760
+ "feet": ["questionable"]
761
+ "female": ["questionable"]
762
+ "females": ["questionable"]
763
+ "finger": ["questionable"]
764
+ "fingers": ["questionable"]
765
+ "foot": ["questionable"]
766
+ "gentleman": ["questionable"]
767
+ "gentlemen": ["questionable"]
768
+ "gf": ["questionable"]
769
+ "girl": ["questionable"]
770
+ "girlfriend": ["questionable"]
771
+ "girls": ["questionable"]
772
+ "hairy": ["questionable"]
773
+ "hand": ["questionable"]
774
+ "heels": ["questionable"]
775
+ "hole": ["questionable"]
776
+ "hot": ["questionable"]
777
+ "husband": ["questionable"]
778
+ "inches": ["questionable"]
779
+ "ladies": ["questionable"]
780
+ "lady": ["questionable"]
781
+ "latina": ["questionable"]
782
+ "male": ["questionable"]
783
+ "males": ["questionable"]
784
+ "mature": ["questionable"]
785
+ "men": ["questionable"]
786
+ "minors": ["questionable"]
787
+ "mouth": ["questionable"]
788
+ "mutual": ["questionable"]
789
+ "nipple": ["questionable"]
790
+ "nipples": ["questionable"]
791
+ "petite": ["questionable"]
792
+ "play": ["questionable"]
793
+ "pleasure": ["questionable"]
794
+ "relationship": ["questionable"]
795
+ "relationships": ["questionable"]
796
+ "release": ["questionable"]
797
+ "shaved": ["questionable"]
798
+ "shaven": ["questionable"]
799
+ "shower": ["questionable"]
800
+ "slender": ["questionable"]
801
+ "stroke": ["questionable"]
802
+ "swallow": ["questionable"]
803
+ "swallowing": ["questionable"]
804
+ "taste": ["questionable"]
805
+ "throat": ["questionable"]
806
+ "tongue": ["questionable"]
807
+ "topping": ["questionable"]
808
+ "touching": ["questionable"]
809
+ "virgin": ["questionable"]
810
+ "weed": ["questionable"]
811
+ "wear": ["questionable"]
812
+ "wife": ["questionable"]
813
+ "woman": ["questionable"]
814
+ "women": ["questionable"]
815
+
816
+ needs_review:
817
+ "sale": ["needs_review"]
818
+ "sell": ["needs_review"]
819
+ "test": ["needs_review"]
820
+
821
+ trading:
822
+ "trade": ["trading"]
823
+
824
+ selling:
825
+ "for sale": ["selling"]
826
+ "someone to buy": ["selling"]
data/lib/swearjar.rb CHANGED
@@ -1,47 +1,65 @@
1
1
  require 'yaml'
2
2
  require 'fuzzy_hash'
3
3
 
4
- class Swearjar
4
+ class SwearJar
5
+ @settings = {}
5
6
 
6
7
  def self.default
7
- from_language
8
+ self["default"]
8
9
  end
9
10
 
10
- def self.from_language(language='en')
11
- new(File.join(File.dirname(__FILE__), 'config', "#{language}.yml"))
11
+ def self.[](key)
12
+ setup!
13
+ words = @settings[key]
14
+ if words
15
+ new(words)
16
+ else
17
+ raise "No SwearJar is configured for #{key}"
18
+ end
12
19
  end
13
20
 
14
- attr_reader :tester, :hash
15
-
16
- def initialize(file)
17
- data = YAML.load_file(file)
21
+ def self.setup!
22
+ @settings = {}
18
23
 
19
- @tester = FuzzyHash.new
20
- @hash = {}
24
+ file = File.join(File.dirname(__FILE__), 'config', "#{language ||= "en"}.yml")
25
+ YAML.load_file(file).each do |key, inner_config|
26
+ scoped = {:words => {}, :phrases => FuzzyHash.new}
21
27
 
22
- data['regex'].each do |pattern, type|
23
- @tester[Regexp.new(pattern)] = type
24
- end
28
+ # cycle through each config
29
+ inner_config.each do |word, matches|
30
+ if word.include?(" ")
31
+ scoped[:phrases][Regexp.new(word, :case_insensitive => true)] = matches
32
+ else
33
+ scoped[:words][word] = matches
34
+ end
35
+ end
25
36
 
26
- data['simple'].each do |test, type|
27
- @hash[test] = type
37
+ @settings[key] = scoped
28
38
  end
39
+ end
29
40
 
41
+ def initialize(scoped)
42
+ @scoped = scoped || {}
30
43
  end
31
44
 
32
45
  def scan(string, &block)
46
+ # match words
33
47
  string.scan(/\b[a-zA-Z-]+\b/) do |word|
34
- block.call(word, hash[word.downcase] || hash[word.downcase.gsub(/e?s$/,'')] )
48
+ if match = @scoped[:words][word.downcase]
49
+ block.call(word, match)
50
+ end
35
51
  end
36
- if match = tester.match_with_result(string)
52
+
53
+ if match = @scoped[:phrases].match_with_result(string)
37
54
  block.call(match.last, match.first)
38
55
  end
39
56
  end
40
57
 
41
58
  def profane?(string)
42
- scan(string) {|word, test| return true if !test.nil?}
59
+ scan(string) {|word, test| return true unless test.nil?}
43
60
  return false
44
61
  end
62
+ alias_method :match?, :profane?
45
63
 
46
64
  def scorecard(string)
47
65
  scorecard = {}
@@ -56,3 +74,4 @@ class Swearjar
56
74
  end
57
75
 
58
76
  end
77
+
@@ -1,3 +1,3 @@
1
1
  class Swearjar
2
- VERSION = '0.1.0'
3
- end
2
+ VERSION = '0.1.1'
3
+ end
@@ -1,38 +1,30 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Swearjar do
3
+ describe SwearJar do
4
4
 
5
5
  it "should detect dirty words" do
6
- Swearjar.default.profane?('fuck you jim henson').should be_true
6
+ SwearJar.default.profane?('fuck you jim henson').should be_true
7
7
  end
8
8
 
9
9
  it "should detect dirty words regardless of case" do
10
- Swearjar.default.profane?('FuCk you jim henson').should be_true
11
- end
12
-
13
- it "should detect simple dirty plurals" do
14
- Swearjar.default.profane?('jim henson had two dicks').should be_true
15
- Swearjar.default.profane?('jim henson has two asses').should be_true
10
+ SwearJar.default.profane?('FuCk you jim henson').should be_true
16
11
  end
17
12
 
18
13
  it "should not detect non-dirty words" do
19
- Swearjar.default.profane?('i love you jim henson').should be_false
14
+ SwearJar.default.profane?('i love you jim henson').should be_false
20
15
  end
21
16
 
22
17
  it "should give us a scorecard" do
23
- Swearjar.default.scorecard('fuck you jim henson').should == {'sexual'=>1}
18
+ SwearJar.default.scorecard('fuck you jim henson').should == {'questionable' => 1}
24
19
  end
25
20
 
26
21
  it "should detect multiword" do
27
- Swearjar.default.scorecard('jim henson has a hard on').should == {'sexual'=>1}
28
- end
29
-
30
- it "should detect multiword plurals" do
31
- Swearjar.default.scorecard('jim henson has a hard ons').should == {'sexual'=>1}
22
+ SwearJar.default.scorecard('jim henson has a hard on').should == {'sexual' => 1}
32
23
  end
33
24
 
34
25
  it "should censor a string" do
35
- Swearjar.default.censor('jim henson has a massive hard on he is gonna use to fuck everybody').should == 'jim henson has a massive **** ** he is gonna use to **** everybody'
26
+ SwearJar.default.censor('jim henson has a massive hard on he is gonna use to fuck everybody').should == 'jim henson has a massive **** ** he is gonna use to **** everybody'
36
27
  end
37
28
 
38
- end
29
+ end
30
+
@@ -23,6 +23,7 @@ Gem::Specification.new do |s|
23
23
  s.add_development_dependency 'bundler'
24
24
  s.add_development_dependency 'rake'
25
25
  s.add_development_dependency 'rspec'
26
+ s.add_development_dependency 'activesupport'
26
27
 
27
28
  if s.respond_to? :specification_version then
28
29
  current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zaarly-swearjar
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -14,7 +14,7 @@ date: 2011-11-09 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: fuzzyhash
17
- requirement: &70302130398180 !ruby/object:Gem::Requirement
17
+ requirement: &70246351117860 !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
20
  - - ~>
@@ -22,10 +22,10 @@ dependencies:
22
22
  version: 0.0.11
23
23
  type: :runtime
24
24
  prerelease: false
25
- version_requirements: *70302130398180
25
+ version_requirements: *70246351117860
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: bundler
28
- requirement: &70302130396580 !ruby/object:Gem::Requirement
28
+ requirement: &70246351116780 !ruby/object:Gem::Requirement
29
29
  none: false
30
30
  requirements:
31
31
  - - ! '>='
@@ -33,10 +33,10 @@ dependencies:
33
33
  version: '0'
34
34
  type: :development
35
35
  prerelease: false
36
- version_requirements: *70302130396580
36
+ version_requirements: *70246351116780
37
37
  - !ruby/object:Gem::Dependency
38
38
  name: rake
39
- requirement: &70302130395960 !ruby/object:Gem::Requirement
39
+ requirement: &70246351115440 !ruby/object:Gem::Requirement
40
40
  none: false
41
41
  requirements:
42
42
  - - ! '>='
@@ -44,10 +44,10 @@ dependencies:
44
44
  version: '0'
45
45
  type: :development
46
46
  prerelease: false
47
- version_requirements: *70302130395960
47
+ version_requirements: *70246351115440
48
48
  - !ruby/object:Gem::Dependency
49
49
  name: rspec
50
- requirement: &70302130395180 !ruby/object:Gem::Requirement
50
+ requirement: &70246351114500 !ruby/object:Gem::Requirement
51
51
  none: false
52
52
  requirements:
53
53
  - - ! '>='
@@ -55,7 +55,18 @@ dependencies:
55
55
  version: '0'
56
56
  type: :development
57
57
  prerelease: false
58
- version_requirements: *70302130395180
58
+ version_requirements: *70246351114500
59
+ - !ruby/object:Gem::Dependency
60
+ name: activesupport
61
+ requirement: &70246351114060 !ruby/object:Gem::Requirement
62
+ none: false
63
+ requirements:
64
+ - - ! '>='
65
+ - !ruby/object:Gem::Version
66
+ version: '0'
67
+ type: :development
68
+ prerelease: false
69
+ version_requirements: *70246351114060
59
70
  description: Put another nickel in the swearjar. Simple profanity detection with content
60
71
  analysis.
61
72
  email: joshbuddy@gmail.com
@@ -92,7 +103,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
92
103
  version: '0'
93
104
  segments:
94
105
  - 0
95
- hash: -766704783701987807
106
+ hash: 4517981161588939974
96
107
  required_rubygems_version: !ruby/object:Gem::Requirement
97
108
  none: false
98
109
  requirements: