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 +420 -34
- data/lib/swearjar.rb +37 -18
- data/lib/swearjar/version.rb +2 -2
- data/spec/swearjar_spec.rb +9 -17
- data/zaarly-swearjar.gemspec +1 -0
- metadata +21 -10
data/lib/config/en.yml
CHANGED
@@ -1,22 +1,21 @@
|
|
1
|
-
|
2
|
-
|
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
|
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": ["
|
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
|
-
"
|
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": "
|
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
|
101
|
-
"
|
102
|
-
"
|
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
|
124
|
+
"cumslut": ["sexual, :insult"]
|
117
125
|
"cumtart": ["insult"]
|
118
126
|
"cunillingus": ["sexual"]
|
119
127
|
"cunnie": ["sexual"]
|
120
128
|
"cunnilingus": ["sexual"]
|
121
|
-
"
|
122
|
-
"cunt": ["insult", "sexual"]
|
129
|
+
"cunt": ["insult, :sexual"]
|
123
130
|
"cuntface": ["insult"]
|
124
131
|
"cunthole": ["sexual"]
|
125
132
|
"cuntlick": ["sexual"]
|
126
|
-
"cuntlicker": ["sexual
|
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
|
-
"
|
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
|
-
"
|
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
|
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
|
-
"
|
247
|
-
"goddamn": ["inappropriate
|
248
|
-
"
|
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
|
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
|
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
|
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
|
366
|
-
"pussies": ["sexual
|
367
|
-
"pussy": ["sexual
|
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
|
435
|
+
"shit": ["sexual, :inappropriate"]
|
382
436
|
"shitass": ["insult"]
|
383
437
|
"shitbag": ["insult"]
|
384
438
|
"shitbagger": ["insult"]
|
385
|
-
"
|
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
|
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
|
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
|
4
|
+
class SwearJar
|
5
|
+
@settings = {}
|
5
6
|
|
6
7
|
def self.default
|
7
|
-
|
8
|
+
self["default"]
|
8
9
|
end
|
9
10
|
|
10
|
-
def self.
|
11
|
-
|
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
|
-
|
15
|
-
|
16
|
-
def initialize(file)
|
17
|
-
data = YAML.load_file(file)
|
21
|
+
def self.setup!
|
22
|
+
@settings = {}
|
18
23
|
|
19
|
-
|
20
|
-
|
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
|
-
|
23
|
-
|
24
|
-
|
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
|
-
|
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
|
-
|
48
|
+
if match = @scoped[:words][word.downcase]
|
49
|
+
block.call(word, match)
|
50
|
+
end
|
35
51
|
end
|
36
|
-
|
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
|
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
|
+
|
data/lib/swearjar/version.rb
CHANGED
@@ -1,3 +1,3 @@
|
|
1
1
|
class Swearjar
|
2
|
-
VERSION = '0.1.
|
3
|
-
end
|
2
|
+
VERSION = '0.1.1'
|
3
|
+
end
|
data/spec/swearjar_spec.rb
CHANGED
@@ -1,38 +1,30 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe
|
3
|
+
describe SwearJar do
|
4
4
|
|
5
5
|
it "should detect dirty words" do
|
6
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
18
|
+
SwearJar.default.scorecard('fuck you jim henson').should == {'questionable' => 1}
|
24
19
|
end
|
25
20
|
|
26
21
|
it "should detect multiword" do
|
27
|
-
|
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
|
-
|
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
|
+
|
data/zaarly-swearjar.gemspec
CHANGED
@@ -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.
|
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: &
|
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: *
|
25
|
+
version_requirements: *70246351117860
|
26
26
|
- !ruby/object:Gem::Dependency
|
27
27
|
name: bundler
|
28
|
-
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: *
|
36
|
+
version_requirements: *70246351116780
|
37
37
|
- !ruby/object:Gem::Dependency
|
38
38
|
name: rake
|
39
|
-
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: *
|
47
|
+
version_requirements: *70246351115440
|
48
48
|
- !ruby/object:Gem::Dependency
|
49
49
|
name: rspec
|
50
|
-
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: *
|
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:
|
106
|
+
hash: 4517981161588939974
|
96
107
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
97
108
|
none: false
|
98
109
|
requirements:
|