profanity_filter 0.0.1 → 0.0.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.
- data/README.rdoc +8 -1
- data/VERSION +1 -1
- data/lib/profanity_filter.rb +2 -0
- data/profanity_filter.gemspec +2 -2
- data/test/destructive_filter_test.rb +35 -0
- data/test/profanity_filter_test.rb +30 -0
- metadata +4 -4
data/README.rdoc
CHANGED
@@ -32,6 +32,9 @@ Non-Destructive (filters content when called, original text remains in the datab
|
|
32
32
|
profanity_filter :foo, :bar, :method => 'hollow'
|
33
33
|
#=> all letters except the first and last will be replaced
|
34
34
|
|
35
|
+
profanity_filter :foo, :bar, :method => 'stars'
|
36
|
+
#=> all letters will be replaced with *
|
37
|
+
|
35
38
|
The non-destructive profanity_filter provides different versions of the filtered attribute:
|
36
39
|
some_model.foo => 'filtered version'
|
37
40
|
some_model.foo_original => 'non-filtered version'
|
@@ -50,6 +53,9 @@ Destructive (saves the filtered content to the database)
|
|
50
53
|
profanity_filter! :foo, :bar, :method => 'hollow'
|
51
54
|
#=> all letters except the first and last will be replaced
|
52
55
|
|
56
|
+
profanity_filter! :foo, :bar, :method => 'stars'
|
57
|
+
#=> all letters will be replaced with *
|
58
|
+
|
53
59
|
=== You can also use the filter directly:
|
54
60
|
|
55
61
|
ProfanityFilter::Base.clean(text)
|
@@ -68,7 +74,6 @@ You can run the benchmarks via:
|
|
68
74
|
|
69
75
|
== TODO
|
70
76
|
|
71
|
-
* Turn this into a gem
|
72
77
|
* May break ProfanityFilter out on it's own
|
73
78
|
* Clean up dictionary implementation and substitution (suboptimal and messy)
|
74
79
|
* Move benchmarks into a rake task
|
@@ -86,3 +91,5 @@ Created by Adam Bair (adam@intridea.com) of Intridea (http://www.intridea.com) i
|
|
86
91
|
* Neil Ang - punctionation delimited profanity
|
87
92
|
* Flinn Mueller - dynamic word list from method
|
88
93
|
* Scott Stewert - additional dictionary words
|
94
|
+
* Nola Stowe - added stars profane filter
|
95
|
+
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.2
|
data/lib/profanity_filter.rb
CHANGED
data/profanity_filter.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{profanity_filter}
|
8
|
-
s.version = "0.0.
|
8
|
+
s.version = "0.0.2"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Adam Bair"]
|
12
|
-
s.date = %q{2011-04-
|
12
|
+
s.date = %q{2011-04-22}
|
13
13
|
s.description = %q{Allows you to filter profanity using basic replacement or a dictionary term.}
|
14
14
|
s.email = %q{adambair@gmail.com}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -24,6 +24,12 @@ module HollowPostHelper
|
|
24
24
|
end
|
25
25
|
end
|
26
26
|
|
27
|
+
module StarsPostHelper
|
28
|
+
class Post < ActiveRecord::Base
|
29
|
+
profanity_filter! :title, :body, :method => 'stars'
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
27
33
|
|
28
34
|
class BasicProfanityFilterTest < Test::Unit::TestCase
|
29
35
|
include BasicPostHelper
|
@@ -133,6 +139,35 @@ class HollowProfanityFilterTest < Test::Unit::TestCase
|
|
133
139
|
assert_equal nil, p.body
|
134
140
|
end
|
135
141
|
|
142
|
+
def test_it_should_handle_blank_fields_bug_9
|
143
|
+
p = Post.new({:title => "", :body => ""})
|
144
|
+
p.save
|
145
|
+
assert_equal "", p.title
|
146
|
+
assert_equal "", p.body
|
147
|
+
end
|
148
|
+
end
|
149
|
+
|
150
|
+
class StarsProfanityFilterTest < Test::Unit::TestCase
|
151
|
+
include StarsPostHelper
|
152
|
+
|
153
|
+
def profane_post(opts={})
|
154
|
+
Post.new({:title => 'A Fucking Title', :body => "This is some f-u-c-k-i-n-g shitty-post by a fucking user"}.merge(opts))
|
155
|
+
end
|
156
|
+
|
157
|
+
def test_it_should_filter_specified_fields
|
158
|
+
p = profane_post
|
159
|
+
p.save
|
160
|
+
assert_equal 'A ******* Title', p.title
|
161
|
+
assert_equal 'This is some ******* ******-post by a ******* user', p.body
|
162
|
+
end
|
163
|
+
|
164
|
+
def test_it_should_handle_nil_fields_bug_9
|
165
|
+
p = Post.new({:title => nil, :body => nil})
|
166
|
+
p.save
|
167
|
+
assert_equal nil, p.title
|
168
|
+
assert_equal nil, p.body
|
169
|
+
end
|
170
|
+
|
136
171
|
def test_it_should_handle_blank_fields_bug_9
|
137
172
|
p = Post.new({:title => "", :body => ""})
|
138
173
|
p.save
|
@@ -139,3 +139,33 @@ class HollowProfanityFilterTest < Test::Unit::TestCase
|
|
139
139
|
assert_equal 'happy-f**k', ProfanityFilter::Base.clean('happy-fuck', 'hollow')
|
140
140
|
end
|
141
141
|
end
|
142
|
+
|
143
|
+
class StarsProfanityFilterTest < Test::Unit::TestCase
|
144
|
+
def test_stars_profanity_filter_does_not_modify_clean_words
|
145
|
+
assert_equal 'happy', ProfanityFilter::Base.clean('happy', 'stars')
|
146
|
+
end
|
147
|
+
|
148
|
+
def test_stars_profanity_filter_does_not_modify_whitespace
|
149
|
+
assert_equal 'hello world', ProfanityFilter::Base.clean('hello world', 'stars')
|
150
|
+
assert_equal "hello \t world", ProfanityFilter::Base.clean("hello \t world", 'stars')
|
151
|
+
assert_equal "hello \n world", ProfanityFilter::Base.clean("hello \n world", 'stars')
|
152
|
+
end
|
153
|
+
|
154
|
+
def test_stars_profanity_filter_does_not_modify_special_characters
|
155
|
+
assert_equal 'happy ****', ProfanityFilter::Base.clean('happy fuck', 'stars')
|
156
|
+
assert_equal 'happy\'s', ProfanityFilter::Base.clean('happy\'s', 'stars')
|
157
|
+
assert_equal '****\'s', ProfanityFilter::Base.clean('fuck\'s', 'stars')
|
158
|
+
assert_equal '****?!', ProfanityFilter::Base.clean('fuck?!', 'stars')
|
159
|
+
end
|
160
|
+
|
161
|
+
def test_stars_profanity_filter_replaces_profane_words
|
162
|
+
assert_equal '****', ProfanityFilter::Base.clean('fuck', 'stars')
|
163
|
+
assert_equal '****', ProfanityFilter::Base.clean('FUCK', 'stars')
|
164
|
+
end
|
165
|
+
|
166
|
+
def test_stars_profanity_filter_replaces_punctuation_spaced_profane_words
|
167
|
+
assert_equal '****', ProfanityFilter::Base.clean('f-u-c-k', 'stars')
|
168
|
+
assert_equal '****', ProfanityFilter::Base.clean('f.u.c.k', 'stars')
|
169
|
+
assert_equal 'happy-****', ProfanityFilter::Base.clean('happy-fuck', 'stars')
|
170
|
+
end
|
171
|
+
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: profanity_filter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 27
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 0.0.
|
9
|
+
- 2
|
10
|
+
version: 0.0.2
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Adam Bair
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-04-
|
18
|
+
date: 2011-04-22 00:00:00 -04:00
|
19
19
|
default_executable:
|
20
20
|
dependencies: []
|
21
21
|
|