validates_potty_mouth 0.0.1 → 0.1.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.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: faf8adb31434fe677c3d191c10405e055a6b600c
|
4
|
+
data.tar.gz: b4c1cb136e6a7daf69f63041eb82d806c54c6142
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 852126f2e531c4a9d81ca8348c3f1b6d0e40732f9413ca606d60253c487929cde28f1ca8a8bf8c129f67d0e30be46f9a8bff060fc5b972685c601579f56be09a
|
7
|
+
data.tar.gz: e49ce5e68a9a06fcda46b07871c6b5ca959a222d166558352259f1c1fcd5c6fd03f7f46dead6c73e6d87f48323dd3161b186711a20448d0a23ebe08755e9be3c
|
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'stemmer'
|
2
|
+
|
1
3
|
# this is not namespaced so that we can do
|
2
4
|
# validates :body, potty_mouth: true
|
3
5
|
class PottyMouthValidator < ActiveModel::EachValidator
|
@@ -16,7 +18,9 @@ class PottyMouthValidator < ActiveModel::EachValidator
|
|
16
18
|
end
|
17
19
|
|
18
20
|
def banned_word?(word)
|
19
|
-
|
21
|
+
down_word = word.downcase
|
22
|
+
banned_word_list.include?(down_word) ||
|
23
|
+
banned_word_list.include?(down_word.stem)
|
20
24
|
end
|
21
25
|
|
22
26
|
def banned_word_list
|
@@ -29,7 +33,7 @@ class PottyMouthValidator < ActiveModel::EachValidator
|
|
29
33
|
end
|
30
34
|
|
31
35
|
def add_word_list(type, path)
|
32
|
-
banned_word_lists[type.to_sym] = File.read(path).split("\n").to_set
|
36
|
+
banned_word_lists[type.to_sym] = File.read(path).split("\n").map{|word| word.chomp.downcase}.to_set
|
33
37
|
end
|
34
38
|
end
|
35
39
|
end
|
data/test/model_test.rb
CHANGED
@@ -35,6 +35,16 @@ class ModelTest < MiniTest::Unit::TestCase
|
|
35
35
|
assert m.errors[:body].present?
|
36
36
|
end
|
37
37
|
|
38
|
+
def test_capitalization
|
39
|
+
m = TestModel.new
|
40
|
+
m.subject = "Fuck that"
|
41
|
+
m.body = "what the fuck is this?"
|
42
|
+
assert !m.valid?
|
43
|
+
|
44
|
+
assert m.errors[:subject].present?
|
45
|
+
assert m.errors[:body].present?
|
46
|
+
end
|
47
|
+
|
38
48
|
def test_custom_list
|
39
49
|
m = CustomList.new
|
40
50
|
m.subject = "what the fuck?"
|
@@ -55,4 +65,12 @@ class ModelTest < MiniTest::Unit::TestCase
|
|
55
65
|
assert m.errors[:body].empty?
|
56
66
|
end
|
57
67
|
|
68
|
+
def test_stemming
|
69
|
+
m = TestModel.new
|
70
|
+
m.subject = "what about word stemming? can I say fucker or fucking or fucked?"
|
71
|
+
assert !m.valid?
|
72
|
+
|
73
|
+
assert m.errors[:subject].present?
|
74
|
+
end
|
75
|
+
|
58
76
|
end
|
@@ -19,6 +19,7 @@ Gem::Specification.new do |spec|
|
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
21
|
spec.add_dependency "activemodel", ">= 3.2.0"
|
22
|
+
spec.add_dependency "stemmer", "~> 1.0"
|
22
23
|
|
23
24
|
spec.add_development_dependency "bundler", "~> 1.6"
|
24
25
|
spec.add_development_dependency "rake", "~> 10.0"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: validates_potty_mouth
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jeff Ching
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-12-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activemodel
|
@@ -24,6 +24,20 @@ dependencies:
|
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: 3.2.0
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: stemmer
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '1.0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '1.0'
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
42
|
name: bundler
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -93,7 +107,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
93
107
|
version: '0'
|
94
108
|
requirements: []
|
95
109
|
rubyforge_project:
|
96
|
-
rubygems_version: 2.2.
|
110
|
+
rubygems_version: 2.2.2
|
97
111
|
signing_key:
|
98
112
|
specification_version: 4
|
99
113
|
summary: Validate against blacklist of words
|