strip_attributes 1.8.0 → 1.8.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 5061515aff0590e41f315a088c1248a4173afd68
4
- data.tar.gz: e5482a0d08c97c52c80de77b4e4ccbfcb60c515d
2
+ SHA256:
3
+ metadata.gz: 287d7a12033039a5d2f06d55433a9f613ad584886a4add18b78ff6f432455073
4
+ data.tar.gz: d30d2f78245bfce1534c0509366fa12cbb0bdea7945f2dd97547bb257a926053
5
5
  SHA512:
6
- metadata.gz: d57177c65fcfe6c9788fcf146de1455c1cb56c0dfa37469028abe123ee4713278ebd0be4b0b1a2dae954c34cf9e6c441f11ea14e1f7b2355d21c5f56c4e3a440
7
- data.tar.gz: de6f761513b48057ddc748db448e6d443fa06b9e20b7bff8788a57ddd2a9e7d16810b96571e14df9f69e5615970ba4ec02bfacbef07ec5b9a4313805f83d4d9a
6
+ metadata.gz: 1e6fbbb056f4ad22e8d4d13c767f3ae2124ede7a7d39e5cffcb9a406be4f590cfbb0f495cf2c6ea0fa8efc1e750e2e333b8eb4467d1ffee582c36deabb2b1417
7
+ data.tar.gz: ec6311504c2dd730e4810cce0cd72aaf9a2ce5cdbe383214c7e8e46c98cacc82732f8304c90128646c26cc7f99c91227f2cb2f51fcc844d8265e04040db5a688
@@ -1,4 +1,4 @@
1
- Copyright (c) 2012-2015 Ryan McGeary
1
+ Copyright (c) 2012-2018 Ryan McGeary
2
2
 
3
3
  MIT License
4
4
 
data/README.md CHANGED
@@ -2,7 +2,6 @@
2
2
 
3
3
  [![Gem Version](http://img.shields.io/gem/v/strip_attributes.svg)](https://rubygems.org/gems/strip_attributes)
4
4
  [![Build Status](https://secure.travis-ci.org/rmm5t/strip_attributes.svg)](http://travis-ci.org/rmm5t/strip_attributes)
5
- [![Code Climate](http://img.shields.io/codeclimate/github/rmm5t/strip_attributes.svg)](https://codeclimate.com/github/rmm5t/strip_attributes)
6
5
  [![Gem Downloads](https://img.shields.io/gem/dt/strip_attributes.svg)](https://rubygems.org/gems/strip_attributes)
7
6
 
8
7
  StripAttributes is an ActiveModel extension that automatically strips all
@@ -12,8 +11,7 @@ attribute is blank, it strips the value to `nil` by default.
12
11
  It works by adding a before_validation hook to the record. By default, all
13
12
  attributes are stripped of whitespace, but `:only` and `:except`
14
13
  options can be used to limit which attributes are stripped. Both options accept
15
- a single attribute (`:only => :field`) or arrays of attributes (`:except =>
16
- [:field1, :field2, :field3]`).
14
+ a single attribute (`only: :field`) or arrays of attributes (`except: [:field1, :field2, :field3]`).
17
15
 
18
16
  ---
19
17
 
@@ -56,7 +54,7 @@ end
56
54
  ```ruby
57
55
  # all attributes will be stripped except :boxers
58
56
  class SoberPokerPlayer < ActiveRecord::Base
59
- strip_attributes :except => :boxers
57
+ strip_attributes except: :boxers
60
58
  end
61
59
  ```
62
60
 
@@ -65,7 +63,7 @@ end
65
63
  ```ruby
66
64
  # only :shoe, :sock, and :glove attributes will be stripped
67
65
  class ConservativePokerPlayer < ActiveRecord::Base
68
- strip_attributes :only => [:shoe, :sock, :glove]
66
+ strip_attributes only: [:shoe, :sock, :glove]
69
67
  end
70
68
  ```
71
69
 
@@ -74,7 +72,7 @@ end
74
72
  ```ruby
75
73
  # Empty attributes will not be converted to nil
76
74
  class BrokePokerPlayer < ActiveRecord::Base
77
- strip_attributes :allow_empty => true
75
+ strip_attributes allow_empty: true
78
76
  end
79
77
  ```
80
78
 
@@ -83,7 +81,7 @@ end
83
81
  ```ruby
84
82
  # Sequential spaces in attributes will be collapsed to one space
85
83
  class EloquentPokerPlayer < ActiveRecord::Base
86
- strip_attributes :collapse_spaces => true
84
+ strip_attributes collapse_spaces: true
87
85
  end
88
86
  ```
89
87
 
@@ -92,7 +90,7 @@ end
92
90
  ```ruby
93
91
  # Newlines in attributes will be replaced with a space
94
92
  class EloquentPokerPlayer < ActiveRecord::Base
95
- strip_attributes :replace_newlines => true
93
+ strip_attributes replace_newlines: true
96
94
  end
97
95
  ```
98
96
 
@@ -101,11 +99,16 @@ end
101
99
  ```ruby
102
100
  class User < ActiveRecord::Base
103
101
  # Strip off characters defined by RegEx
104
- strip_attributes :only => [:first_name, :last_name], :regex => /[^[:alpha:]\s]/
102
+ strip_attributes only: [:first_name, :last_name], regex: /[^[:alpha:]\s]/
103
+
105
104
  # Strip off non-integers
106
- strip_attributes :only => [:phone], :regex => /[^0-9]/
105
+ strip_attributes only: :phone, regex: /[^0-9]/
106
+
107
107
  # Strip off all spaces and keep only alphabetic and numeric characters
108
- strip_attributes :only => [:nick_name], :regex => /[^[:alnum:]\S]/
108
+ strip_attributes only: :nickname, regex: /[^[:alnum:]_-]/
109
+
110
+ # Remove trailing whitespace from a multi-line string
111
+ strip_attributes only: :code, regex: /[[:blank:]]+$/)
109
112
  end
110
113
  ```
111
114
 
@@ -118,7 +121,7 @@ It also works on other ActiveModel classes, such as [Mongoid](http://mongoid.org
118
121
  ```ruby
119
122
  class User
120
123
  include Mongoid::Document
121
- strip_attributes :only => :email
124
+ strip_attributes only: :email
122
125
  end
123
126
  ```
124
127
 
@@ -141,11 +144,11 @@ end
141
144
 
142
145
  ```ruby
143
146
  # where record is an ActiveModel instance
144
- StripAttributes.strip(record, :collapse_spaces => true)
147
+ StripAttributes.strip(record, collapse_spaces: true)
145
148
 
146
149
  # works directly on Strings too
147
150
  StripAttributes.strip(" foo \t") #=> "foo"
148
- StripAttributes.strip(" foo bar", :collapse_spaces => true) #=> "foo bar"
151
+ StripAttributes.strip(" foo bar", collapse_spaces: true) #=> "foo bar"
149
152
  ```
150
153
 
151
154
  ## Testing
@@ -189,7 +192,7 @@ end
189
192
  #### To initialize **Minitest-MatchersVaccine**, add this to your `test_helper.rb`:
190
193
 
191
194
  ```ruby
192
- require "strip_attributes/matchers_vaccine"
195
+ require "strip_attributes/matchers"
193
196
  class MiniTest::Spec
194
197
  include StripAttributes::Matchers
195
198
  end
@@ -198,7 +201,7 @@ end
198
201
  OR if in a Rails environment, you might prefer this:
199
202
 
200
203
  ``` ruby
201
- require "strip_attributes/matchers_vaccine"
204
+ require "strip_attributes/matchers"
202
205
  class ActiveSupport::TestCase
203
206
  include StripAttributes::Matchers
204
207
  end
@@ -280,5 +283,4 @@ Semantic Versioning 2.0 as defined at <http://semver.org>.
280
283
 
281
284
  ## License
282
285
 
283
- Copyright (c) 2007-2015 Ryan McGeary released under the [MIT
284
- license](http://en.wikipedia.org/wiki/MIT_License)
286
+ [MIT License](https://rmm5t.mit-license.org/)
data/Rakefile CHANGED
@@ -3,7 +3,7 @@ require "bundler/gem_tasks"
3
3
  require "bundler/setup"
4
4
 
5
5
  desc "Default: run unit tests."
6
- task :default => :test
6
+ task default: :test
7
7
 
8
8
  Rake::TestTask.new(:test) do |t|
9
9
  t.libs << "lib" << "test"
@@ -1,3 +1,3 @@
1
1
  module StripAttributes
2
- VERSION = "1.8.0"
2
+ VERSION = "1.8.1"
3
3
  end
@@ -13,11 +13,11 @@ class SampleMockRecord < Tableless
13
13
  attribute :unstripped1
14
14
  attribute :unstripped2
15
15
  attribute :unstripped3
16
- strip_attributes :only => [:stripped1, :stripped2, :stripped3]
16
+ strip_attributes only: [:stripped1, :stripped2, :stripped3]
17
17
 
18
18
  attribute :collapsed
19
19
  attribute :uncollapsed
20
- strip_attributes :only => [:collapsed], :collapse_spaces => true
20
+ strip_attributes only: [:collapsed], collapse_spaces: true
21
21
  end
22
22
 
23
23
  describe SampleMockRecord do
@@ -19,69 +19,69 @@ end
19
19
 
20
20
  class StripOnlyOneMockRecord < Tableless
21
21
  include MockAttributes
22
- strip_attributes :only => :foo
22
+ strip_attributes only: :foo
23
23
  end
24
24
 
25
25
  class StripOnlyThreeMockRecord < Tableless
26
26
  include MockAttributes
27
- strip_attributes :only => [:foo, :bar, :biz]
27
+ strip_attributes only: [:foo, :bar, :biz]
28
28
  end
29
29
 
30
30
  class StripExceptOneMockRecord < Tableless
31
31
  include MockAttributes
32
- strip_attributes :except => :foo
32
+ strip_attributes except: :foo
33
33
  end
34
34
 
35
35
  class StripExceptThreeMockRecord < Tableless
36
36
  include MockAttributes
37
- strip_attributes :except => [:foo, :bar, :biz]
37
+ strip_attributes except: [:foo, :bar, :biz]
38
38
  end
39
39
 
40
40
  class StripAllowEmpty < Tableless
41
41
  include MockAttributes
42
- strip_attributes :allow_empty => true
42
+ strip_attributes allow_empty: true
43
43
  end
44
44
 
45
45
  class CollapseDuplicateSpaces < Tableless
46
46
  include MockAttributes
47
- strip_attributes :collapse_spaces => true
47
+ strip_attributes collapse_spaces: true
48
48
  end
49
49
 
50
50
  class ReplaceNewLines < Tableless
51
51
  include MockAttributes
52
- strip_attributes :replace_newlines => true
52
+ strip_attributes replace_newlines: true
53
53
  end
54
54
 
55
55
  class ReplaceNewLinesAndDuplicateSpaces < Tableless
56
56
  include MockAttributes
57
- strip_attributes :replace_newlines => true, :collapse_spaces => true
57
+ strip_attributes replace_newlines: true, collapse_spaces: true
58
58
  end
59
59
 
60
60
  class CoexistWithOtherValidations < Tableless
61
- attribute :number, :type => Integer
61
+ attribute :number, type: Integer
62
62
 
63
63
  strip_attributes
64
64
  validates :number, {
65
- :numericality => { :only_integer => true, :greater_than_or_equal_to => 1000 },
66
- :allow_blank => true
65
+ numericality: { only_integer: true, greater_than_or_equal_to: 1000 },
66
+ allow_blank: true
67
67
  }
68
68
  end
69
69
 
70
70
  class StripRegexMockRecord < Tableless
71
71
  include MockAttributes
72
- strip_attributes :regex => /[\^\%&\*]/
72
+ strip_attributes regex: /[\^\%&\*]/
73
73
  end
74
74
 
75
75
  class StripAttributesTest < Minitest::Test
76
76
  def setup
77
77
  @init_params = {
78
- :foo => "\tfoo",
79
- :bar => "bar \t ",
80
- :biz => "\tbiz ",
81
- :baz => "",
82
- :bang => " ",
83
- :foz => " foz foz",
84
- :fiz => "fiz \n fiz"
78
+ foo: "\tfoo",
79
+ bar: "bar \t ",
80
+ biz: "\tbiz ",
81
+ baz: "",
82
+ bang: " ",
83
+ foz: " foz foz",
84
+ fiz: "fiz \n fiz"
85
85
  }
86
86
  end
87
87
 
@@ -169,8 +169,8 @@ class StripAttributesTest < Minitest::Test
169
169
  assert_equal "biz", record.biz
170
170
  assert_equal "foz foz", record.foz
171
171
  assert_equal "fiz \n fiz", record.fiz
172
- assert_equal nil, record.baz
173
- assert_equal nil, record.bang
172
+ assert_nil record.baz
173
+ assert_nil record.bang
174
174
  end
175
175
 
176
176
  def test_should_replace_newlines
@@ -181,8 +181,8 @@ class StripAttributesTest < Minitest::Test
181
181
  assert_equal "biz", record.biz
182
182
  assert_equal "foz foz", record.foz
183
183
  assert_equal "fiz fiz", record.fiz
184
- assert_equal nil, record.baz
185
- assert_equal nil, record.bang
184
+ assert_nil record.baz
185
+ assert_nil record.bang
186
186
  end
187
187
 
188
188
  def test_should_replace_newlines_and_duplicate_spaces
@@ -193,8 +193,8 @@ class StripAttributesTest < Minitest::Test
193
193
  assert_equal "biz", record.biz
194
194
  assert_equal "foz foz", record.foz
195
195
  assert_equal "fiz fiz", record.fiz
196
- assert_equal nil, record.baz
197
- assert_equal nil, record.bang
196
+ assert_nil record.baz
197
+ assert_nil record.bang
198
198
  end
199
199
 
200
200
  def test_should_strip_and_allow_empty_always
@@ -217,18 +217,18 @@ class StripAttributesTest < Minitest::Test
217
217
  assert !record.valid?, "Expected record to be invalid"
218
218
  assert record.errors.include?(:number), "Expected record to have an error on :number"
219
219
 
220
- record = CoexistWithOtherValidations.new(:number => " 1000.2 ")
220
+ record = CoexistWithOtherValidations.new(number: " 1000.2 ")
221
221
  assert !record.valid?, "Expected record to be invalid"
222
222
  assert record.errors.include?(:number), "Expected record to have an error on :number"
223
223
 
224
- # record = CoexistWithOtherValidations.new(:number => " 1000 ")
224
+ # record = CoexistWithOtherValidations.new(number: " 1000 ")
225
225
  # assert record.valid?, "Expected record to be valid, but got #{record.errors.full_messages}"
226
226
  # assert !record.errors.include?(:number), "Expected record to have no errors on :number"
227
227
  end
228
228
 
229
229
  def test_should_strip_regex
230
230
  record = StripRegexMockRecord.new
231
- record.assign_attributes(@init_params.merge(:foo => "^%&*abc "))
231
+ record.assign_attributes(@init_params.merge(foo: "^%&*abc "))
232
232
  record.valid?
233
233
  assert_equal "abc", record.foo
234
234
  assert_equal "bar", record.bar
@@ -237,39 +237,62 @@ class StripAttributesTest < Minitest::Test
237
237
  def test_should_strip_unicode
238
238
  skip "multi-byte characters not supported by this version of Ruby" unless StripAttributes::MULTIBYTE_SUPPORTED
239
239
 
240
- record = StripOnlyOneMockRecord.new({:foo => "\u200A\u200B foo\u200A\u200B\u00A0 "})
240
+ record = StripOnlyOneMockRecord.new({foo: "\u200A\u200B foo\u200A\u200B\u00A0 "})
241
241
  record.valid?
242
242
  assert_equal "foo", record.foo
243
243
  end
244
244
 
245
245
  class ClassMethodsTest < Minitest::Test
246
246
  def test_should_strip_whitespace
247
- assert_equal nil, StripAttributes.strip("")
248
- assert_equal nil, StripAttributes.strip(" \t ")
247
+ assert_nil StripAttributes.strip("")
248
+ assert_nil StripAttributes.strip(" \t ")
249
249
  assert_equal "thirty six", StripAttributes.strip(" thirty six \t \n")
250
250
  end
251
251
 
252
252
  def test_should_allow_empty
253
- assert_equal "", StripAttributes.strip("", :allow_empty => true)
254
- assert_equal "", StripAttributes.strip(" \t ", :allow_empty => true)
253
+ assert_equal "", StripAttributes.strip("", allow_empty: true)
254
+ assert_equal "", StripAttributes.strip(" \t ", allow_empty: true)
255
255
  end
256
256
 
257
257
  def test_should_collapse_spaces
258
- assert_equal "1 2 3", StripAttributes.strip(" 1 2 3\t ", :collapse_spaces => true)
258
+ assert_equal "1 2 3", StripAttributes.strip(" 1 2 3\t ", collapse_spaces: true)
259
259
  end
260
260
 
261
261
  def test_should_collapse_multibyte_spaces
262
- assert_equal "1 2 3", StripAttributes.strip(" 1 \u00A0 2\u00A03\t ", :collapse_spaces => true)
262
+ assert_equal "1 2 3", StripAttributes.strip(" 1 \u00A0 2\u00A03\t ", collapse_spaces: true)
263
263
  end
264
264
 
265
265
  def test_should_replace_newlines
266
- assert_equal "1 2", StripAttributes.strip("1\n2", :replace_newlines => true)
267
- assert_equal "1 2", StripAttributes.strip("1\r\n2", :replace_newlines => true)
268
- assert_equal "1 2", StripAttributes.strip("1\r2", :replace_newlines => true)
266
+ assert_equal "1 2", StripAttributes.strip("1\n2", replace_newlines: true)
267
+ assert_equal "1 2", StripAttributes.strip("1\r\n2", replace_newlines: true)
268
+ assert_equal "1 2", StripAttributes.strip("1\r2", replace_newlines: true)
269
269
  end
270
270
 
271
271
  def test_should_strip_regex
272
- assert_equal "abc", StripAttributes.strip("^%&*abc ^ ", :regex => /[\^\%&\*]/)
272
+ assert_equal "abc", StripAttributes.strip("^%&*abc ^ ", regex: /[\^\%&\*]/)
273
+ end
274
+
275
+ def test_should_keep_only_alphanumerics
276
+ nickname = " funky BAT-2009"
277
+ assert_equal "funkyBAT-2009", StripAttributes.strip(nickname, regex: /[^[:alnum:]_-]/)
278
+ end
279
+
280
+ def test_should_strip_trailing_whitespace
281
+ messy_code =
282
+ "const hello = (name) => { \n" +
283
+ " if (name === 'voldemort') return; \n" +
284
+ " \n" +
285
+ " console.log(`Hello ${name}!`); \t \t \n" +
286
+ "}; \n"
287
+ expected = <<~EOF.strip
288
+ const hello = (name) => {
289
+ if (name === 'voldemort') return;
290
+
291
+ console.log(`Hello ${name}!`);
292
+ };
293
+ EOF
294
+ actual = StripAttributes.strip(messy_code, regex: /[[:blank:]]+$/)
295
+ assert_equal expected, actual
273
296
  end
274
297
 
275
298
  def test_should_strip_unicode
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: strip_attributes
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.8.0
4
+ version: 1.8.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan McGeary
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-06-02 00:00:00.000000000 Z
11
+ date: 2019-01-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activemodel
@@ -19,7 +19,7 @@ dependencies:
19
19
  version: '3.0'
20
20
  - - "<"
21
21
  - !ruby/object:Gem::Version
22
- version: '6.0'
22
+ version: '7.0'
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
@@ -29,21 +29,21 @@ dependencies:
29
29
  version: '3.0'
30
30
  - - "<"
31
31
  - !ruby/object:Gem::Version
32
- version: '6.0'
32
+ version: '7.0'
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: active_attr
35
35
  requirement: !ruby/object:Gem::Requirement
36
36
  requirements:
37
37
  - - "~>"
38
38
  - !ruby/object:Gem::Version
39
- version: '0.9'
39
+ version: '0.10'
40
40
  type: :development
41
41
  prerelease: false
42
42
  version_requirements: !ruby/object:Gem::Requirement
43
43
  requirements:
44
44
  - - "~>"
45
45
  - !ruby/object:Gem::Version
46
- version: '0.9'
46
+ version: '0.10'
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: minitest
49
49
  requirement: !ruby/object:Gem::Requirement
@@ -138,15 +138,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
138
138
  requirements:
139
139
  - - ">="
140
140
  - !ruby/object:Gem::Version
141
- version: '0'
141
+ version: 1.9.3
142
142
  required_rubygems_version: !ruby/object:Gem::Requirement
143
143
  requirements:
144
144
  - - ">="
145
145
  - !ruby/object:Gem::Version
146
146
  version: '0'
147
147
  requirements: []
148
- rubyforge_project:
149
- rubygems_version: 2.5.1
148
+ rubygems_version: 3.0.1
150
149
  signing_key:
151
150
  specification_version: 4
152
151
  summary: Whitespace cleanup for ActiveModel attributes