naughty_words 0.1.1 → 0.1.2
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.
- checksums.yaml +4 -4
- data/.rubocop.yml +14 -0
- data/Gemfile.lock +1 -1
- data/README.md +17 -0
- data/lib/naughty_words/base.rb +31 -8
- data/lib/naughty_words/config/allow_list.txt +5 -0
- data/lib/naughty_words/config/{en.txt → deny_list.txt} +1 -4
- data/lib/naughty_words/version.rb +1 -1
- data/lib/naughty_words.rb +12 -0
- metadata +4 -4
- data/naughty_words-0.1.0.gem +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4d84f228f93cc6af5a7794aa4c42a56a45d1d8dd575982a687672cefa9991341
|
4
|
+
data.tar.gz: d2a64141e31b2a293fceef6fc5c58e8fe0a150db75c7d3be7227da5415948427
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: eecf8555f6d2cfff3951c386caf6bdd428a0abaa9742ff552b773b33df938116553ffe859cbd2f365a332f428b6ce1be4743304512e948a668a474ce3d1ba1a1
|
7
|
+
data.tar.gz: 9817e7590058a2691b606acaecab6bff48a3a7abdd97ae3d914a96d53bf69c3fc4e2a2d943d7704902b6f7428ffb599c5fa771b732d3903413395628287c8cfe
|
data/.rubocop.yml
CHANGED
@@ -15,3 +15,17 @@ Layout/LineLength:
|
|
15
15
|
Style/Documentation:
|
16
16
|
Description: 'Document classes and non-namespace modules.'
|
17
17
|
Enabled: false
|
18
|
+
|
19
|
+
Metrics/BlockLength:
|
20
|
+
CountComments: true
|
21
|
+
Max: 25
|
22
|
+
Exclude:
|
23
|
+
- 'spec/**/*'
|
24
|
+
- 'config/**/*'
|
25
|
+
- 'lib/tasks/**/*'
|
26
|
+
|
27
|
+
Style/FrozenStringLiteralComment:
|
28
|
+
Description: >-
|
29
|
+
Add the frozen_string_literal comment to the top of files
|
30
|
+
to help transition from Ruby 2.3.0 to Ruby 3.0.
|
31
|
+
Enabled: false
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -49,8 +49,25 @@ The `filter` method takes a `string:` argument and an optional `replacement:` ar
|
|
49
49
|
NaughtyWords.filter(string: "hello asshole", replacement: "!")
|
50
50
|
=> "hello !!!!!!!"
|
51
51
|
```
|
52
|
+
|
52
53
|
Note: Current, this is comically easy to circumvent. String like "shitshitshit" will only filter out the first match, returning "*****shitshit". A fix is enroute.
|
53
54
|
|
55
|
+
### Validating in Rails example
|
56
|
+
We can use a custom validator in our User model to make sure a user cannot sign up with a username containing profanities in tandem with our normal `validates` methods.
|
57
|
+
|
58
|
+
```ruby
|
59
|
+
# app/models/user.rb
|
60
|
+
|
61
|
+
validates :username, uniqueness: true, presence: true # basic username validation
|
62
|
+
validate :username_profanity_check # our custom validator
|
63
|
+
|
64
|
+
...
|
65
|
+
|
66
|
+
def username_profanity_check
|
67
|
+
errors.add(:username, "contains profanity") if NaughtyWords.check(string: username)
|
68
|
+
end
|
69
|
+
```
|
70
|
+
|
54
71
|
## Development
|
55
72
|
|
56
73
|
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
data/lib/naughty_words/base.rb
CHANGED
@@ -4,8 +4,12 @@ module NaughtyWords
|
|
4
4
|
class Base
|
5
5
|
class << self
|
6
6
|
def profanity?(string:)
|
7
|
-
|
8
|
-
return
|
7
|
+
allow_list_array.each do |line|
|
8
|
+
return false if string.include?(line)
|
9
|
+
end
|
10
|
+
|
11
|
+
deny_list_array.each do |line|
|
12
|
+
return true if string.include?(line)
|
9
13
|
end
|
10
14
|
|
11
15
|
false
|
@@ -13,21 +17,40 @@ module NaughtyWords
|
|
13
17
|
|
14
18
|
def filter(string:, replacement:)
|
15
19
|
# TODO: Fix filtering full words ending with 'ing' and repeated words such as 'fuckfuckfuck'
|
16
|
-
|
17
|
-
word = line
|
20
|
+
deny_list_array.each do |line|
|
21
|
+
word = line
|
18
22
|
string.gsub!(word, replacement * word.length)
|
19
23
|
end
|
20
24
|
|
21
25
|
string
|
22
26
|
end
|
23
27
|
|
28
|
+
def add_to_list(list:, string:)
|
29
|
+
File.open(send(list), "a+") do |file|
|
30
|
+
file.puts(string)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
def show_list(list:)
|
35
|
+
if list == "deny"
|
36
|
+
deny_list_array
|
37
|
+
else
|
38
|
+
allow_list_array
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
24
42
|
private
|
25
43
|
|
26
|
-
def
|
27
|
-
|
28
|
-
|
44
|
+
def deny_list_array
|
45
|
+
file = File.open(File.join(File.dirname(File.expand_path(__FILE__)), "config/deny_list.txt"))
|
46
|
+
|
47
|
+
@deny_list_array ||= File.readlines(file, chomp: true)
|
48
|
+
end
|
49
|
+
|
50
|
+
def allow_list_array
|
51
|
+
file = File.open(File.join(File.dirname(File.expand_path(__FILE__)), "config/allow_list.txt"))
|
29
52
|
|
30
|
-
@
|
53
|
+
@allow_list_array ||= File.readlines(file, chomp: true)
|
31
54
|
end
|
32
55
|
end
|
33
56
|
end
|
@@ -10,7 +10,6 @@ apeshit
|
|
10
10
|
arsehole
|
11
11
|
asshole
|
12
12
|
assmunch
|
13
|
-
ass
|
14
13
|
auto erotic
|
15
14
|
autoerotic
|
16
15
|
babeland
|
@@ -96,10 +95,9 @@ cornhole
|
|
96
95
|
coon
|
97
96
|
coons
|
98
97
|
creampie
|
99
|
-
cum
|
100
|
-
cumming
|
101
98
|
cumshot
|
102
99
|
cumshots
|
100
|
+
cumming
|
103
101
|
cunnilingus
|
104
102
|
cunting
|
105
103
|
cunt
|
@@ -398,7 +396,6 @@ whore
|
|
398
396
|
worldsex
|
399
397
|
wrapping men
|
400
398
|
wrinkled starfish
|
401
|
-
xx
|
402
399
|
xxx
|
403
400
|
yaoi
|
404
401
|
yellow showers
|
data/lib/naughty_words.rb
CHANGED
@@ -13,5 +13,17 @@ module NaughtyWords
|
|
13
13
|
def filter(string:, replacement: "*")
|
14
14
|
Base.filter(string: string, replacement: replacement)
|
15
15
|
end
|
16
|
+
|
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)
|
27
|
+
end
|
16
28
|
end
|
17
29
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: naughty_words
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- John Arnold
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-08-03 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: This gem will detect simple profanity and can substitute them with a
|
14
14
|
specified replacement.
|
@@ -31,9 +31,9 @@ files:
|
|
31
31
|
- bin/setup
|
32
32
|
- lib/naughty_words.rb
|
33
33
|
- lib/naughty_words/base.rb
|
34
|
-
- lib/naughty_words/config/
|
34
|
+
- lib/naughty_words/config/allow_list.txt
|
35
|
+
- lib/naughty_words/config/deny_list.txt
|
35
36
|
- lib/naughty_words/version.rb
|
36
|
-
- naughty_words-0.1.0.gem
|
37
37
|
homepage: https://github.com/jaarnie/naughty_words
|
38
38
|
licenses:
|
39
39
|
- MIT
|
data/naughty_words-0.1.0.gem
DELETED
Binary file
|