validates_potty_mouth 0.0.1 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3aabdc86be9349fa62814915e1b71bdb793a453c
4
- data.tar.gz: 9a0265cac74bbdccccca373be7c51724f8b3626e
3
+ metadata.gz: faf8adb31434fe677c3d191c10405e055a6b600c
4
+ data.tar.gz: b4c1cb136e6a7daf69f63041eb82d806c54c6142
5
5
  SHA512:
6
- metadata.gz: 6a5b664d3602ab4e46b4601ff73e43b7db485c387b826c7e53c69a4b9bdd4e3463c2f7893752b650488371102c9e7fd44407095c85a02527f51c87bebb4cf605
7
- data.tar.gz: 3804ae8129f19169ad6f5f35b35e4f64e45d485ba395cc11705dac76b33bbb36a972ffc90008bddc3cbd4879347bbb91135f194af24c8d95da0287dbd0221433
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
- banned_word_list.include?(word)
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
@@ -1,3 +1,3 @@
1
1
  module ValidatesPottyMouth
2
- VERSION = "0.0.1"
2
+ VERSION = "0.1.0"
3
3
  end
@@ -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.1
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-12 00:00:00.000000000 Z
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.0
110
+ rubygems_version: 2.2.2
97
111
  signing_key:
98
112
  specification_version: 4
99
113
  summary: Validate against blacklist of words