naughty_words 0.1.2 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,404 +1,26 @@
1
- 2g1c
2
- 2 girls 1 cup
3
- acrotomophilia
4
- alabama hot pocket
5
- alaskan pipeline
6
- anal
7
- anilingus
8
- anus
9
- apeshit
10
- arsehole
11
1
  asshole
12
- assmunch
13
- auto erotic
14
- autoerotic
15
- babeland
16
- baby batter
17
- baby juice
18
- ball gag
19
- ball gravy
20
- ball kicking
21
- ball licking
22
- ball sack
23
- ball sucking
24
- ball bag
25
- ballbag
26
- bangbros
27
- bangbus
28
- bareback
29
- barely legal
30
- barenaked
31
- bastard
32
- bastardo
33
- bastinado
34
- bbw
35
- bdsm
36
- beaner
37
- beaners
38
- beaver cleaver
39
- beaver lips
40
- beastiality
41
- bestiality
42
- big black
43
- big breasts
44
- big knockers
45
- big tits
46
- bimbos
47
- birdlock
48
- bitch
49
- bitches
50
- black cock
51
- blonde action
52
- blonde on blonde action
53
- blowjob
54
- blow job
55
- blow your load
56
- blue waffle
57
- blumpkin
58
- bollocks
59
- bondage
60
- boner
61
- boob
62
- boobs
63
- booty call
64
- brown showers
65
- brunette action
66
- bukkake
67
- bulldyke
68
- bullet vibe
2
+ arsehole
69
3
  bullshit
70
- bung hole
71
- bunghole
72
- busty
73
- butt
74
- buttcheeks
75
- butthole
76
- camel toe
77
- camgirl
78
- camslut
79
- camwhore
80
- carpet muncher
81
- carpetmuncher
82
- chocolate rosebuds
83
- cialis
84
- circlejerk
85
- cleveland steamer
86
- clit
87
- clitoris
88
- clover clamps
4
+ cocksucker
89
5
  clusterfuck
90
- cock
91
- cocks
92
- coprolagnia
93
- coprophilia
94
- cornhole
95
- coon
96
- coons
97
- creampie
98
- cumshot
99
- cumshots
100
- cumming
101
- cunnilingus
102
- cunting
103
6
  cunt
104
- darkie
105
- date rape
106
- daterape
107
- deep throat
108
- deepthroat
109
- dendrophilia
110
- dick
111
- dildo
112
- dingleberry
113
- dingleberries
114
- dirty pillows
115
- dirty sanchez
116
- doggie style
117
- doggiestyle
118
- doggy style
119
- doggystyle
120
- dog style
121
- dolcett
122
- domination
123
- dominatrix
124
- dommes
125
- donkey punch
126
- double dong
127
- double penetration
128
- dp action
129
- dry hump
130
- dvda
131
- eat my ass
132
- ecchi
133
- ejaculation
134
- erotic
135
- erotism
136
- escort
137
- eunuch
138
- fag
139
- faggot
140
- fecal
141
- felch
142
- fellatio
143
- feltch
144
- female squirting
145
- femdom
146
- figging
147
- fingerbang
148
- fingering
149
- fisting
150
- foot fetish
151
- footjob
152
- frotting
153
- fucking
154
- fuck buttons
155
- fuckin
156
- fucktards
7
+ dipshit
8
+ dickhead
157
9
  fuck
158
- fudge packer
159
- fudgepacker
160
- futanari
161
- gangbang
162
- gang bang
163
- gay sex
164
- genitals
165
- giant cock
166
- girl on
167
- girl on top
168
- girls gone wild
169
- goatcx
170
- goatse
171
- god damn
172
- gokkun
173
- golden shower
174
- goodpoop
175
- goo girl
176
- goregasm
177
- grope
178
- group sex
179
- g-spot
180
- guro
181
- hand job
182
- handjob
183
- hard core
184
- hardcore
185
- hentai
186
- homoerotic
187
- honkey
188
- hooker
189
- horny
190
- hot carl
191
- hot chick
192
- how to kill
193
- how to murder
194
- huge fat
195
- humping
196
- incest
197
- intercourse
198
- jack off
199
- jail bait
200
- jailbait
201
- jelly donut
202
- jerk off
203
- jigaboo
204
- jiggaboo
205
- jiggerboo
206
- jizz
207
- juggs
10
+ fucker
11
+ fuckers
12
+ fucking
13
+ jerkoff
14
+ jerk-off
208
15
  kike
209
- kinbaku
210
- kinkster
211
- kinky
212
- knobbing
213
- leather restraint
214
- leather straight jacket
215
- lemon party
216
- livesex
217
- lolita
218
- lovemaking
219
- make me come
220
- male squirting
221
- masturbate
222
- masturbating
223
- masturbation
224
- menage a trois
225
- milf
226
- missionary position
227
- mong
228
16
  motherfucker
229
- mound of venus
230
- mr hands
231
- muff diver
232
- muffdiving
233
- nambla
234
- nawashi
235
- negro
236
- neonazi
237
17
  nigga
238
18
  nigger
239
- nig nog
240
- nimphomania
241
- nipple
242
- nipples
243
- nsfw
244
- nsfw images
245
- nude
246
- nudity
247
- nutten
248
- nympho
249
- nymphomania
250
- octopussy
251
- omorashi
252
- one cup two girls
253
- one guy one jar
254
- orgasm
255
- orgy
256
- paedophile
257
- paki
258
- panties
259
- panty
260
- pedobear
261
- pedophile
262
- pegging
263
- penis
264
- phone sex
265
- piece of shit
266
- pikey
267
- pissing
268
- piss pig
269
- pisspig
270
- playboy
271
- pleasure chest
272
- pole smoker
273
- ponyplay
274
- poof
275
- poon
276
- poontang
277
- punany
278
- poop chute
279
- poopchute
280
- porn
281
- porno
282
- pornography
283
- prince albert piercing
284
- pthc
285
- pubes
286
- pussy
287
- queaf
288
- queef
289
- quim
290
- raghead
291
- raging boner
292
- rape
293
- raping
294
- rapist
295
- rectum
296
- reverse cowgirl
297
- rimjob
298
- rimming
299
- rosy palm
300
- rosy palm and her 5 sisters
301
- rusty trombone
302
- sadism
303
- santorum
304
- scat
305
- schlong
306
- scissoring
307
- semen
308
- sex
309
- sexcam
310
- sexo
311
- sexy
312
- sexual
313
- sexually
314
- sexuality
315
- shaved beaver
316
- shaved pussy
317
- shemale
318
- shibari
319
- shitblimp
320
- shitty
321
- shitbag
322
19
  shit
323
- shota
324
- shrimping
325
- skeet
326
- slanteye
327
- slut
328
- s&m
329
- smut
330
- snatch
331
- snowballing
332
- sodomize
333
- sodomy
334
- spastic
335
- spic
336
- splooge
337
- splooge moose
338
- spooge
339
- spread legs
340
- spunk
341
- strap on
342
- strapon
343
- strappado
344
- strip club
345
- style doggy
346
- suck
347
- sucks
348
- suicide girls
349
- sultry women
350
- swastika
351
- swinger
352
- tainted love
353
- taste my
354
- tea bagging
355
- threesome
356
- throating
357
- thumbzilla
358
- tied up
359
- tight white
360
- tit
361
- tits
362
- titties
363
- titty
364
- tongue in a
365
- topless
366
- tosser
367
- towelhead
368
- tranny
369
- tribadism
370
- tub girl
371
- tubgirl
372
- tushy
20
+ shitty
21
+ shithead
22
+ shitshow
373
23
  twat
374
- twink
375
- twinkie
376
- two girls one cup
377
- undressing
378
- upskirt
379
- urethra play
380
- urophilia
381
- vagina
382
- venus mound
383
- viagra
384
- vibrator
385
- violet wand
386
- vorarephilia
387
- voyeur
388
- voyeurweb
389
- voyuer
390
- vulva
391
24
  wank
392
- wetback
393
- wet dream
394
- white power
395
- whore
396
- worldsex
397
- wrapping men
398
- wrinkled starfish
399
- xxx
400
- yaoi
401
- yellow showers
402
- yiffy
403
- zoophilia
404
- 🖕
25
+ wanking
26
+ wanker
@@ -0,0 +1,46 @@
1
+ # frozen_string_literal: true
2
+
3
+ module NaughtyWords
4
+ class Config
5
+ class << self
6
+ attr_accessor :word_boundaries, :use_built_in_lists, :minimum_severity
7
+ attr_reader :allow_overrides, :deny_overrides
8
+
9
+ def configure
10
+ yield self
11
+ end
12
+
13
+ def reset!
14
+ @word_boundaries = true
15
+ @use_built_in_lists = true
16
+ @minimum_severity = nil # nil means check all severities
17
+ @allow_overrides = []
18
+ @deny_overrides = []
19
+ end
20
+
21
+ # override a word from the deny list to allow it
22
+ def allow_word(word)
23
+ word = word.to_s.strip
24
+ return if word.empty?
25
+ @allow_overrides << word.downcase
26
+ @allow_overrides.uniq!
27
+ end
28
+
29
+ # override a word from the allow list to deny it
30
+ def deny_word(word)
31
+ word = word.to_s.strip
32
+ return if word.empty?
33
+ @deny_overrides << word.downcase
34
+ @deny_overrides.uniq!
35
+ end
36
+
37
+ def remove_override(word)
38
+ word = word.to_s.strip.downcase
39
+ @allow_overrides.delete(word)
40
+ @deny_overrides.delete(word)
41
+ end
42
+ end
43
+
44
+ reset!
45
+ end
46
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module NaughtyWords
4
- VERSION = "0.1.2"
4
+ VERSION = "1.0.0"
5
5
  end
@@ -0,0 +1,40 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "active_record" if defined?(ActiveRecord)
4
+
5
+ module NaughtyWords
6
+ if defined?(ActiveRecord::Base)
7
+ class WordList < ActiveRecord::Base
8
+ self.table_name = "naughty_words_lists"
9
+
10
+ validates :word, presence: true
11
+ validates :list_type, presence: true, inclusion: { in: %w[deny allow] }
12
+ validates :word, uniqueness: { scope: :list_type }
13
+ validates :severity, inclusion: { in: %w[high medium low], allow_nil: true }
14
+
15
+ scope :deny_list, -> { where(list_type: "deny") }
16
+ scope :allow_list, -> { where(list_type: "allow") }
17
+ scope :by_category, ->(category) { where(category: category) }
18
+ scope :by_severity, ->(severity) { where(severity: severity) }
19
+ scope :added_by, ->(user) { where(added_by: user) }
20
+
21
+ before_save :normalize_word
22
+
23
+ private
24
+
25
+ def normalize_word
26
+ self.word = word.strip.downcase if word.present?
27
+ end
28
+ end
29
+ else
30
+ class WordList
31
+ def self.deny_list
32
+ []
33
+ end
34
+
35
+ def self.allow_list
36
+ []
37
+ end
38
+ end
39
+ end
40
+ end
data/lib/naughty_words.rb CHANGED
@@ -1,10 +1,17 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require_relative "naughty_words/version"
4
- require "naughty_words/base"
4
+ require_relative "naughty_words/config"
5
+ require_relative "naughty_words/word_list"
6
+ require_relative "naughty_words/base"
5
7
 
6
8
  module NaughtyWords
7
9
  class Error < StandardError; end
10
+
11
+ def self.configure
12
+ Config.configure { |config| yield(config) }
13
+ end
14
+
8
15
  class << self
9
16
  def check(string:)
10
17
  Base.profanity?(string: string)
@@ -14,16 +21,8 @@ module NaughtyWords
14
21
  Base.filter(string: string, replacement: replacement)
15
22
  end
16
23
 
17
- def add_to_deny_list(string:)
18
- Base.add_to_list(list: "deny_list_file", string: string)
19
- end
20
-
21
- def add_to_allow_list(string:)
22
- Base.add_to_list(list: "allow_list_file", string: string)
23
- end
24
-
25
- def show_list(list:)
26
- Base.show_list(list: list)
24
+ def show_list(list:, include_metadata: false)
25
+ Base.show_list(list: list, include_metadata: include_metadata)
27
26
  end
28
27
  end
29
28
  end
metadata CHANGED
@@ -1,48 +1,143 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: naughty_words
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - John Arnold
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-08-03 00:00:00.000000000 Z
12
- dependencies: []
13
- description: This gem will detect simple profanity and can substitute them with a
14
- specified replacement.
11
+ date: 2025-08-09 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: activesupport
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '5.0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '5.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '13.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '13.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '3.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '3.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rubocop
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '1.21'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '1.21'
69
+ - !ruby/object:Gem::Dependency
70
+ name: activerecord
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '5.0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '5.0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: database_cleaner-active_record
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: sqlite3
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ description: A Ruby gem to filter and check for profanity in strings, with support
112
+ for custom word lists
15
113
  email:
16
114
  - johnadamarnold@gmail.com
17
115
  executables: []
18
116
  extensions: []
19
117
  extra_rdoc_files: []
20
118
  files:
21
- - ".rspec"
22
- - ".rubocop.yml"
23
119
  - CHANGELOG.md
24
- - CODE_OF_CONDUCT.md
25
- - Gemfile
26
- - Gemfile.lock
27
120
  - LICENSE.txt
28
121
  - README.md
29
- - Rakefile
30
- - bin/console
31
- - bin/setup
122
+ - lib/generators/naughty_words/install/install_generator.rb
123
+ - lib/generators/naughty_words/install/templates/create_naughty_words_lists.rb
124
+ - lib/generators/naughty_words/install/templates/initializer.rb
125
+ - lib/generators/naughty_words/install/templates/word_list.rb
32
126
  - lib/naughty_words.rb
33
127
  - lib/naughty_words/base.rb
128
+ - lib/naughty_words/config.rb
34
129
  - lib/naughty_words/config/allow_list.txt
35
130
  - lib/naughty_words/config/deny_list.txt
36
131
  - lib/naughty_words/version.rb
132
+ - lib/naughty_words/word_list.rb
37
133
  homepage: https://github.com/jaarnie/naughty_words
38
134
  licenses:
39
135
  - MIT
40
136
  metadata:
41
- allowed_push_host: https://rubygems.org
42
137
  homepage_uri: https://github.com/jaarnie/naughty_words
43
138
  source_code_uri: https://github.com/jaarnie/naughty_words
44
139
  changelog_uri: https://github.com/jaarnie/naughty_words/blob/main/CHANGELOG.md
45
- post_install_message:
140
+ post_install_message:
46
141
  rdoc_options: []
47
142
  require_paths:
48
143
  - lib
@@ -57,8 +152,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
57
152
  - !ruby/object:Gem::Version
58
153
  version: '0'
59
154
  requirements: []
60
- rubygems_version: 3.1.6
61
- signing_key:
155
+ rubygems_version: 3.5.3
156
+ signing_key:
62
157
  specification_version: 4
63
- summary: Simple gem to detect naughty words
158
+ summary: Filter and check for profanity in strings
64
159
  test_files: []
data/.rspec DELETED
@@ -1,3 +0,0 @@
1
- --format documentation
2
- --color
3
- --require spec_helper