obscenity 1.0.0 → 1.0.1

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.md CHANGED
@@ -1,4 +1,4 @@
1
- # Obscenity [![Build Status](http://travis-ci.org/tjackiw/obscenity.png)](http://travis-ci.org/tjackiw/obscenity)
1
+ # Obscenity [![Build Status](https://secure.travis-ci.org/tjackiw/obscenity.png)](http://travis-ci.org/tjackiw/obscenity)
2
2
 
3
3
  Obscenity is a profanity filter gem for Ruby/Rubinius, Rails (through ActiveModel), and Rack middleware.
4
4
 
@@ -52,6 +52,7 @@ The following methods are available to use with Obscenity:
52
52
  - :garbled : Replaces profane words with $@!#%
53
53
  - :stars : Replaces profane words with '*' up to the word's length
54
54
  - :vowels : Replaces the vowels in the profane word with '*'
55
+ - :nonconsonants : Replaces non consonants with '*'
55
56
  - "custom string" : Replaces the profane word with the custom string
56
57
 
57
58
  Example:
@@ -101,6 +102,9 @@ Obscenity.replacement(:stars).sanitize("text with shit")
101
102
  Obscenity.replacement(:vowels).sanitize("text with shit")
102
103
  => "text with sh*t"
103
104
 
105
+ Obscenity.replacement(:nonconsonants).sanitize('Oh 5hit')
106
+ => "Oh *h*t"
107
+
104
108
  Obscenity.replacement("[censored]").sanitize("text with shit")
105
109
  => "text with [censored]"
106
110
  ```
@@ -259,6 +263,17 @@ use Rack::Obscenity, sanitize: { params: [:foo, :bar], replacement: "[censored]"
259
263
  # Sanitizes all params and replaces their values using :garbled
260
264
  use Rack::Obscenity, sanitize: { replacement: :garbled }
261
265
  ```
266
+ ### Test Helpers
267
+
268
+ Obscenity currently provides test helpers for RSpec only, but we have plans to add helpers to Shoulda as well.
269
+
270
+ #### RSpec Matcher
271
+
272
+ A `be_profane` matcher is available for RSpec. Its usage is very simple:
273
+
274
+ ```ruby
275
+ user.username.should_not be_profane
276
+ ```
262
277
 
263
278
  ## Contributing to obscenity
264
279
 
@@ -3,6 +3,10 @@ require 'obscenity/config'
3
3
  require 'obscenity/base'
4
4
  require 'obscenity/version'
5
5
 
6
+ if defined?(::RSpec)
7
+ require 'obscenity/rspec_matcher'
8
+ end
9
+
6
10
  module Obscenity extend self
7
11
 
8
12
  attr_accessor :config
@@ -33,4 +37,4 @@ module Obscenity extend self
33
37
 
34
38
 
35
39
  end
36
-
40
+
@@ -1,23 +1,23 @@
1
1
  module Obscenity
2
2
  class Base
3
3
  class << self
4
-
4
+
5
5
  def blacklist
6
6
  @blacklist ||= set_list_content(Obscenity.config.blacklist)
7
7
  end
8
-
8
+
9
9
  def blacklist=(value)
10
10
  @blacklist = value == :default ? set_list_content(Obscenity::Config.new.blacklist) : value
11
11
  end
12
-
12
+
13
13
  def whitelist
14
14
  @whitelist ||= set_list_content(Obscenity.config.whitelist)
15
15
  end
16
-
16
+
17
17
  def whitelist=(value)
18
18
  @whitelist = value == :default ? set_list_content(Obscenity::Config.new.whitelist) : value
19
19
  end
20
-
20
+
21
21
  def profane?(text)
22
22
  return(false) unless text.to_s.size >= 3
23
23
  blacklist.each do |foul|
@@ -25,7 +25,7 @@ module Obscenity
25
25
  end
26
26
  false
27
27
  end
28
-
28
+
29
29
  def sanitize(text)
30
30
  return(text) unless text.to_s.size >= 3
31
31
  blacklist.each do |foul|
@@ -34,12 +34,12 @@ module Obscenity
34
34
  @scoped_replacement = nil
35
35
  text
36
36
  end
37
-
37
+
38
38
  def replacement(chars)
39
39
  @scoped_replacement = chars
40
40
  self
41
41
  end
42
-
42
+
43
43
  def offensive(text)
44
44
  words = []
45
45
  return(words) unless text.to_s.size >= 3
@@ -48,17 +48,18 @@ module Obscenity
48
48
  end
49
49
  words.uniq
50
50
  end
51
-
51
+
52
52
  def replace(word)
53
53
  content = @scoped_replacement || Obscenity.config.replacement
54
54
  case content
55
55
  when :vowels then word.gsub(/[aeiou]/i, '*')
56
56
  when :stars then '*' * word.size
57
+ when :nonconsonants then word.gsub(/[^bcdfghjklmnpqrstvwxyz]/i, '*')
57
58
  when :default, :garbled then '$@!#%'
58
59
  else content
59
60
  end
60
61
  end
61
-
62
+
62
63
  private
63
64
  def set_list_content(list)
64
65
  case list
@@ -67,7 +68,7 @@ module Obscenity
67
68
  else []
68
69
  end
69
70
  end
70
-
71
+
71
72
  end
72
73
  end
73
- end
74
+ end
@@ -0,0 +1,5 @@
1
+ RSpec::Matchers.define :be_profane do |expected|
2
+ match do |actual|
3
+ Obscenity.profane?(actual) == expected
4
+ end
5
+ end
@@ -1,5 +1,5 @@
1
1
  module Obscenity
2
2
 
3
- VERSION = '1.0.0'
3
+ VERSION = '1.0.1'
4
4
 
5
5
  end
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "obscenity"
8
- s.version = "1.0.0"
8
+ s.version = "1.0.1"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Thiago Jackiw"]
12
- s.date = "2012-05-28"
12
+ s.date = "2012-11-22"
13
13
  s.description = " Obscenity is a profanity filter gem for Ruby/Rubinius, Rails (through ActiveModel), and Rack middleware "
14
14
  s.email = "tjackiw@gmail.com"
15
15
  s.extra_rdoc_files = [
@@ -33,6 +33,7 @@ Gem::Specification.new do |s|
33
33
  "lib/obscenity/config.rb",
34
34
  "lib/obscenity/error.rb",
35
35
  "lib/obscenity/rack.rb",
36
+ "lib/obscenity/rspec_matcher.rb",
36
37
  "lib/obscenity/version.rb",
37
38
  "obscenity.gemspec",
38
39
  "test/helper.rb",
@@ -25,7 +25,7 @@ class TestBase < Test::Unit::TestCase
25
25
  end
26
26
  end
27
27
  end
28
-
28
+
29
29
  context "#whitelist" do
30
30
  context "without custom config" do
31
31
  setup { Obscenity::Base.whitelist = :default }
@@ -41,11 +41,11 @@ class TestBase < Test::Unit::TestCase
41
41
  end
42
42
  end
43
43
  end
44
-
44
+
45
45
  context "#profane?" do
46
46
  context "without whitelist" do
47
47
  context "without custom config" do
48
- setup {
48
+ setup {
49
49
  Obscenity::Base.blacklist = :default
50
50
  Obscenity::Base.whitelist = :default
51
51
  }
@@ -66,7 +66,7 @@ class TestBase < Test::Unit::TestCase
66
66
  end
67
67
  context "with whitelist" do
68
68
  context "without custom blacklist config" do
69
- setup {
69
+ setup {
70
70
  Obscenity::Base.blacklist = :default
71
71
  Obscenity::Base.whitelist = ['biatch']
72
72
  }
@@ -77,7 +77,7 @@ class TestBase < Test::Unit::TestCase
77
77
  end
78
78
  end
79
79
  context "with custom blacklist/whitelist config" do
80
- setup {
80
+ setup {
81
81
  Obscenity::Base.blacklist = ['ass', 'word']
82
82
  Obscenity::Base.whitelist = ['word']
83
83
  }
@@ -89,11 +89,11 @@ class TestBase < Test::Unit::TestCase
89
89
  end
90
90
  end
91
91
  end
92
-
92
+
93
93
  context "#sanitize" do
94
94
  context "without whitelist" do
95
95
  context "without custom config" do
96
- setup {
96
+ setup {
97
97
  Obscenity::Base.blacklist = :default
98
98
  Obscenity::Base.whitelist = :default
99
99
  }
@@ -112,7 +112,7 @@ class TestBase < Test::Unit::TestCase
112
112
  end
113
113
  context "with whitelist" do
114
114
  context "without custom blacklist config" do
115
- setup {
115
+ setup {
116
116
  Obscenity::Base.blacklist = :default
117
117
  Obscenity::Base.whitelist = ['biatch']
118
118
  }
@@ -122,7 +122,7 @@ class TestBase < Test::Unit::TestCase
122
122
  end
123
123
  end
124
124
  context "with custom blacklist/whitelist config" do
125
- setup {
125
+ setup {
126
126
  Obscenity::Base.blacklist = ['clown', 'biatch']
127
127
  Obscenity::Base.whitelist = ['biatch']
128
128
  }
@@ -133,11 +133,11 @@ class TestBase < Test::Unit::TestCase
133
133
  end
134
134
  end
135
135
  end
136
-
136
+
137
137
  context "#replacement" do
138
138
  context "without whitelist" do
139
139
  context "without custom config" do
140
- setup {
140
+ setup {
141
141
  Obscenity::Base.blacklist = :default
142
142
  Obscenity::Base.whitelist = :default
143
143
  }
@@ -145,16 +145,18 @@ class TestBase < Test::Unit::TestCase
145
145
  assert_equal "Yo ********, sup", Obscenity::Base.replacement(:stars).sanitize('Yo assclown, sup')
146
146
  assert_equal "Yo $@!#%, sup", Obscenity::Base.replacement(:garbled).sanitize('Yo assclown, sup')
147
147
  assert_equal "Yo *sscl*wn, sup", Obscenity::Base.replacement(:vowels).sanitize('Yo assclown, sup')
148
+ assert_equal "Oh, *h*t!", Obscenity::Base.replacement(:nonconsonants).sanitize('Oh, 5hit!')
148
149
  assert_equal "Yo [censored], sup", Obscenity::Base.replacement('[censored]').sanitize('Yo assclown, sup')
149
150
  assert_equal "Hello World", Obscenity::Base.replacement(:default).sanitize('Hello World')
150
151
  end
151
152
  end
152
153
  context "with custom blacklist config" do
153
- setup { Obscenity::Base.blacklist = ['ass', 'word'] }
154
+ setup { Obscenity::Base.blacklist = ['ass', 'word', 'w0rd'] }
154
155
  should "sanitize and return a clean text based on a custom list" do
155
156
  assert_equal "Yo ****, sup", Obscenity::Base.replacement(:stars).sanitize('Yo word, sup')
156
157
  assert_equal "Yo $@!#%, sup", Obscenity::Base.replacement(:garbled).sanitize('Yo word, sup')
157
158
  assert_equal "Yo w*rd, sup", Obscenity::Base.replacement(:vowels).sanitize('Yo word, sup')
159
+ assert_equal "Yo w*rd, sup", Obscenity::Base.replacement(:nonconsonants).sanitize('Yo w0rd, sup')
158
160
  assert_equal "Yo [censored], sup", Obscenity::Base.replacement('[censored]').sanitize('Yo word, sup')
159
161
  assert_equal "Hello World", Obscenity::Base.replacement(:default).sanitize('Hello World')
160
162
  end
@@ -162,7 +164,7 @@ class TestBase < Test::Unit::TestCase
162
164
  end
163
165
  context "with whitelist" do
164
166
  context "without custom blacklist config" do
165
- setup {
167
+ setup {
166
168
  Obscenity::Base.blacklist = :default
167
169
  Obscenity::Base.whitelist = ['biatch']
168
170
  }
@@ -170,12 +172,13 @@ class TestBase < Test::Unit::TestCase
170
172
  assert_equal "Yo ********, sup", Obscenity::Base.replacement(:stars).sanitize('Yo assclown, sup')
171
173
  assert_equal "Yo $@!#%, sup", Obscenity::Base.replacement(:garbled).sanitize('Yo assclown, sup')
172
174
  assert_equal "Yo *sscl*wn, sup", Obscenity::Base.replacement(:vowels).sanitize('Yo assclown, sup')
175
+ assert_equal "What an *r**", Obscenity::Base.replacement(:nonconsonants).sanitize('What an ar5e')
173
176
  assert_equal "Yo [censored], sup", Obscenity::Base.replacement('[censored]').sanitize('Yo assclown, sup')
174
177
  assert_equal "Yo biatch, sup", Obscenity::Base.replacement(:default).sanitize('Yo biatch, sup')
175
178
  end
176
179
  end
177
180
  context "with custom blacklist/whitelist config" do
178
- setup {
181
+ setup {
179
182
  Obscenity::Base.blacklist = ['clown', 'biatch']
180
183
  Obscenity::Base.whitelist = ['biatch']
181
184
  }
@@ -183,6 +186,7 @@ class TestBase < Test::Unit::TestCase
183
186
  assert_equal "Yo *****, sup", Obscenity::Base.replacement(:stars).sanitize('Yo clown, sup')
184
187
  assert_equal "Yo $@!#%, sup", Obscenity::Base.replacement(:garbled).sanitize('Yo clown, sup')
185
188
  assert_equal "Yo cl*wn, sup", Obscenity::Base.replacement(:vowels).sanitize('Yo clown, sup')
189
+ assert_equal "Yo cl*wn, sup", Obscenity::Base.replacement(:nonconsonants).sanitize('Yo clown, sup')
186
190
  assert_equal "Yo [censored], sup", Obscenity::Base.replacement('[censored]').sanitize('Yo clown, sup')
187
191
  assert_equal "Yo biatch, sup", Obscenity::Base.replacement(:default).sanitize('Yo biatch, sup')
188
192
  assert_equal "Yo assclown, sup", Obscenity::Base.replacement(:default).sanitize('Yo assclown, sup')
@@ -190,11 +194,11 @@ class TestBase < Test::Unit::TestCase
190
194
  end
191
195
  end
192
196
  end
193
-
197
+
194
198
  context "#offensive" do
195
199
  context "without whitelist" do
196
200
  context "without custom config" do
197
- setup {
201
+ setup {
198
202
  Obscenity::Base.blacklist = :default
199
203
  Obscenity::Base.whitelist = :default
200
204
  }
@@ -213,7 +217,7 @@ class TestBase < Test::Unit::TestCase
213
217
  end
214
218
  context "with whitelist" do
215
219
  context "without custom blacklist config" do
216
- setup {
220
+ setup {
217
221
  Obscenity::Base.blacklist = :default
218
222
  Obscenity::Base.whitelist = ['biatch']
219
223
  }
@@ -223,7 +227,7 @@ class TestBase < Test::Unit::TestCase
223
227
  end
224
228
  end
225
229
  context "with custom blacklist/whitelist config" do
226
- setup {
230
+ setup {
227
231
  Obscenity::Base.blacklist = ['clown', 'biatch']
228
232
  Obscenity::Base.whitelist = ['biatch']
229
233
  }
@@ -234,20 +238,21 @@ class TestBase < Test::Unit::TestCase
234
238
  end
235
239
  end
236
240
  end
237
-
241
+
238
242
  context "#replace" do
239
243
  should "replace the given word by the given replacement method" do
240
244
  [
241
- [:vowels, {original: "Yo biatch", clean: "Yo b**tch"}],
242
- [:stars, {original: "Yo biatch", clean: "Yo ******"}],
243
- [:garbled, {original: "Yo biatch", clean: "Yo $@!#%"}],
244
- [:default, {original: "Yo biatch", clean: "Yo $@!#%"}],
245
- ["[censored]", {original: "Yo biatch", clean: "Yo [censored]"}],
246
- [nil, {original: "Yo biatch", clean: "Yo $@!#%"}]
245
+ [:vowels, {original: "Oh 5hit", clean: "Oh 5h*t"}],
246
+ [:nonconsonants, {original: "Oh 5hit", clean: "Oh *h*t"}],
247
+ [:stars, {original: "Oh 5hit", clean: "Oh ****"}],
248
+ [:garbled, {original: "Oh 5hit", clean: "Oh $@!#%"}],
249
+ [:default, {original: "Oh 5hit", clean: "Oh $@!#%"}],
250
+ ["[censored]", {original: "Oh 5hit", clean: "Oh [censored]"}],
251
+ [nil, {original: "Oh 5hit", clean: "Oh $@!#%"}]
247
252
  ].each do |replacement_method, content|
248
- assert_equal content[:clean], Obscenity::Base.replacement(replacement_method).sanitize(content[:original])
253
+ assert_equal content[:clean], Obscenity::Base.replacement(replacement_method).sanitize(content[:original]), "(replacement should match for #{replacement_method})"
249
254
  end
250
255
  end
251
256
  end
252
-
257
+
253
258
  end
@@ -1,7 +1,7 @@
1
1
  require 'helper'
2
2
 
3
3
  class TestObscenity < Test::Unit::TestCase
4
-
4
+
5
5
  context "#respond_to?" do
6
6
  should "respond to methods and attributes" do
7
7
  [:configure, :config, :profane?, :sanitize, :offensive, :replacement].each do |field|
@@ -9,7 +9,7 @@ class TestObscenity < Test::Unit::TestCase
9
9
  end
10
10
  end
11
11
  end
12
-
12
+
13
13
  # More comprehensive test in test_config.rb
14
14
  context "#configure" do
15
15
  should "accept a configuration block " do
@@ -18,17 +18,17 @@ class TestObscenity < Test::Unit::TestCase
18
18
  config.blacklist = :default
19
19
  config.replacement = :garbled
20
20
  end
21
- }
21
+ }
22
22
  end
23
23
  end
24
-
24
+
25
25
  # More comprehensive test in test_config.rb
26
26
  context "#config" do
27
27
  should "return the current config object" do
28
28
  assert_not_nil Obscenity.config
29
29
  end
30
30
  end
31
-
31
+
32
32
  # More comprehensive test in test_base.rb
33
33
  context "#profane?" do
34
34
  should "validate the profanity of the given content" do
@@ -36,7 +36,7 @@ class TestObscenity < Test::Unit::TestCase
36
36
  assert !Obscenity.profane?('Hello world')
37
37
  end
38
38
  end
39
-
39
+
40
40
  # More comprehensive test in test_base.rb
41
41
  context "#sanitize" do
42
42
  should "sanitize the given content" do
@@ -44,7 +44,7 @@ class TestObscenity < Test::Unit::TestCase
44
44
  assert_equal "Hello world", Obscenity.sanitize('Hello world')
45
45
  end
46
46
  end
47
-
47
+
48
48
  # More comprehensive test in test_base.rb
49
49
  context "#offensive" do
50
50
  should "return the offensive words for the given content" do
@@ -52,17 +52,18 @@ class TestObscenity < Test::Unit::TestCase
52
52
  assert_equal [], Obscenity.offensive('Hello world')
53
53
  end
54
54
  end
55
-
55
+
56
56
  # More comprehensive test in test_base.rb
57
57
  context "#replacement" do
58
58
  should "sanitize the given content based on the given replacement" do
59
59
  assert_equal "Yo, check that $@!#% out", Obscenity.replacement(:garbled).sanitize('Yo, check that ass out')
60
60
  assert_equal "Yo, check that $@!#% out", Obscenity.replacement(:default).sanitize('Yo, check that ass out')
61
61
  assert_equal "Yo, check that *ss out", Obscenity.replacement(:vowels).sanitize('Yo, check that ass out')
62
+ assert_equal "Yo, check that *h*t out", Obscenity.replacement(:nonconsonants).sanitize('Yo, check that 5hit out')
62
63
  assert_equal "Yo, check that *** out", Obscenity.replacement(:stars).sanitize('Yo, check that ass out')
63
64
  assert_equal "Yo, check that [censored] out", Obscenity.replacement("[censored]").sanitize('Yo, check that ass out')
64
65
  assert_equal "Hello world", Obscenity.sanitize('Hello world')
65
66
  end
66
67
  end
67
-
68
+
68
69
  end
@@ -3,7 +3,7 @@ require 'rack/mock'
3
3
  require 'obscenity/rack'
4
4
 
5
5
  class TestRack < Test::Unit::TestCase
6
-
6
+
7
7
  context "Rack::Obscenity" do
8
8
  setup do
9
9
  @env = {}
@@ -12,37 +12,37 @@ class TestRack < Test::Unit::TestCase
12
12
  @headers = { 'Content-Type' => 'text/plain' }
13
13
  @app = lambda { |env| [@status, @headers, [@body]] }
14
14
  end
15
-
15
+
16
16
  def mock_env(options = {})
17
17
  @env = Rack::MockRequest.env_for('/', options)
18
18
  end
19
-
19
+
20
20
  def middleware(options = {})
21
21
  Rack::Obscenity.new(@app, options)
22
22
  end
23
-
23
+
24
24
  def get(params = {})
25
25
  { 'QUERY_STRING' => Rack::Utils.build_query(params) }
26
26
  end
27
-
27
+
28
28
  def get_response_params
29
29
  Rack::Utils.parse_query(@env['QUERY_STRING'], "&")
30
30
  end
31
-
31
+
32
32
  def post(params = {})
33
33
  { 'rack.input' => StringIO.new(Rack::Utils.build_query(params)) }
34
34
  end
35
-
35
+
36
36
  def post_response_params
37
37
  Rack::Utils.parse_query(@env['rack.input'].read, "&")
38
38
  end
39
-
39
+
40
40
  def assert_success_response(status, headers, body)
41
41
  assert_equal @status, status
42
42
  assert_equal @headers, headers
43
43
  assert_equal [@body], body
44
44
  end
45
-
45
+
46
46
  context "default configuration" do
47
47
  should "not evaluate the profanity of parameters" do
48
48
  app = middleware
@@ -50,7 +50,7 @@ class TestRack < Test::Unit::TestCase
50
50
  assert_success_response status, headers, body
51
51
  end
52
52
  end
53
-
53
+
54
54
  context "rejecting requests" do
55
55
  should "not reject if parameter values don't contain profanity" do
56
56
  app = middleware(reject: true)
@@ -74,7 +74,7 @@ class TestRack < Test::Unit::TestCase
74
74
 
75
75
  should "reject if given parameter values contain profanity" do
76
76
  app = middleware(reject: { params: [:foo] })
77
- [ get(foo: 'ass', baz: 'shit'),
77
+ [ get(foo: 'ass', baz: 'shit'),
78
78
  post(foo: 'ass').merge(get(foo: 'nice', baz: 'shit'))
79
79
  ].each do |options|
80
80
  status, headers, body = app.call(mock_env(options))
@@ -117,7 +117,7 @@ class TestRack < Test::Unit::TestCase
117
117
  assert_equal [''], body
118
118
  end
119
119
  end
120
-
120
+
121
121
  context "sanitizing requests" do
122
122
  should "not sanitize if parameter values don't contain profanity" do
123
123
  app = middleware(sanitize: true)
@@ -135,7 +135,7 @@ class TestRack < Test::Unit::TestCase
135
135
  assert_equal 'bar', request_params['foo']
136
136
  assert_equal '$@!#%', request_params['baz']
137
137
  end
138
-
138
+
139
139
  should "sanitize if POST parameter values contain profanity" do
140
140
  app = middleware(sanitize: true)
141
141
  status, headers, body = app.call(mock_env(post(foo: 'bar', baz: 'ass')))
@@ -161,7 +161,7 @@ class TestRack < Test::Unit::TestCase
161
161
  request_params = get_response_params
162
162
  assert_equal '$@!#%', request_params['foo']
163
163
  end
164
-
164
+
165
165
  should "sanitize the title using the :garbled replacement" do
166
166
  app = middleware(sanitize: { replacement: :garbled })
167
167
  status, headers, body = app.call(mock_env(get(foo: 'ass')))
@@ -186,6 +186,14 @@ class TestRack < Test::Unit::TestCase
186
186
  assert_equal '*ss', request_params['foo']
187
187
  end
188
188
 
189
+ should "sanitize the title using the :nonconsonants replacement" do
190
+ app = middleware(sanitize: { replacement: :nonconsonants })
191
+ status, headers, body = app.call(mock_env(get(foo: '5hit')))
192
+ assert_success_response status, headers, body
193
+ request_params = get_response_params
194
+ assert_equal '*h*t', request_params['foo']
195
+ end
196
+
189
197
  should "sanitize the title using a custom replacement" do
190
198
  app = middleware(sanitize: { replacement: "[censored]" })
191
199
  status, headers, body = app.call(mock_env(get(foo: 'text with ass')))
@@ -3,7 +3,7 @@ require 'helper'
3
3
  class TestVersion < Test::Unit::TestCase
4
4
 
5
5
  should "return the correct product version" do
6
- assert_equal '1.0.0', Obscenity::VERSION
6
+ assert_equal '1.0.1', Obscenity::VERSION
7
7
  end
8
8
 
9
9
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: obscenity
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-05-28 00:00:00.000000000 Z
12
+ date: 2012-11-22 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: shoulda
@@ -148,6 +148,7 @@ files:
148
148
  - lib/obscenity/config.rb
149
149
  - lib/obscenity/error.rb
150
150
  - lib/obscenity/rack.rb
151
+ - lib/obscenity/rspec_matcher.rb
151
152
  - lib/obscenity/version.rb
152
153
  - obscenity.gemspec
153
154
  - test/helper.rb
@@ -173,7 +174,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
173
174
  version: '0'
174
175
  segments:
175
176
  - 0
176
- hash: 1086749465327118202
177
+ hash: -2450424540235026340
177
178
  required_rubygems_version: !ruby/object:Gem::Requirement
178
179
  none: false
179
180
  requirements: