strip_attributes 1.9.2 → 1.10.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
  SHA256:
3
- metadata.gz: e1f5a0320df5a7bdf5e4b54823d4d377d90c2e42243d548d98106d462818074b
4
- data.tar.gz: e08452bcd46e297a856dcaa16f938dcdfaa4978dcf8438e8aa0e2cb4cbf89f1e
3
+ metadata.gz: a302a928491058ebb14ecdb965d4afe5a1d56b9dd4306cb25a2bc1a8857dbed1
4
+ data.tar.gz: 8b93e69476d0976effd53ae0c4904e9f522def8b6ad7526fcf2699b5d94dcf80
5
5
  SHA512:
6
- metadata.gz: 8db784d24f9d7e38fc28dce00708223964eb770d0931bcac8ce2e954ce83e74a0f6525f8dac3e01e8670c62c3ba8b8650760caa4e857d71e99fa67653157efa2
7
- data.tar.gz: 9451bb01daefe3b3d2624dae4cc0ee010d166eb26f959fcf822fcb1a095cbc0608f9f31461b75367f210301a3b72945a94d48c5f287b4544c38e5183ce76105d
6
+ metadata.gz: 4de02ed6d9ea918c62704cf9a486d98912f5806bb06d817023667d60a56e3c12b634b2f22b9d6e39913188152ec3983986072a4a95b6daa4152b5191641c9ae8
7
+ data.tar.gz: 2d757d642d005cf16fc25d49156d84e88401e4c0d72463703e79632c440a7a7f5f440b63e3c430e8349cda72ce0dfdbe432e94877a7ffe29ab7fadb5e8d41a12
data/README.md CHANGED
@@ -234,7 +234,9 @@ end
234
234
  describe User do
235
235
  it { is_expected.to strip_attribute(:name).collapse_spaces }
236
236
  it { is_expected.to strip_attribute :email }
237
+ it { is_expected.to strip_attributes(:name, :email) }
237
238
  it { is_expected.not_to strip_attribute :password }
239
+ it { is_expected.not_to strip_attributes(:password, :encrypted_password) }
238
240
  end
239
241
  ```
240
242
 
@@ -244,7 +246,9 @@ end
244
246
  class UserTest < ActiveSupport::TestCase
245
247
  should strip_attribute(:name).collapse_spaces
246
248
  should strip_attribute :email
249
+ should strip_attributes(:name, :email)
247
250
  should_not strip_attribute :password
251
+ should_not strip_attributes(:password, :encrypted_password)
248
252
  end
249
253
  ```
250
254
 
@@ -257,7 +261,9 @@ describe User do
257
261
  it "should strip attributes" do
258
262
  must strip_attribute(:name).collapse_spaces
259
263
  must strip_attribute :email
264
+ must strip_attributes(:name, :email)
260
265
  wont strip_attribute :password
266
+ wont strip_attributes(:password, :encrypted_password)
261
267
  end
262
268
  end
263
269
  ```
@@ -270,7 +276,9 @@ describe User do
270
276
 
271
277
  must { strip_attribute(:name).collapse_spaces }
272
278
  must { strip_attribute :email }
279
+ must { strip_attributes(:name, :email) }
273
280
  wont { strip_attribute :password }
281
+ wont { strip_attributes(:password, :encrypted_password) }
274
282
  end
275
283
  ```
276
284
 
@@ -9,19 +9,12 @@ module ActiveModel::Validations::HelperMethods
9
9
  StripAttributes.strip(record, options)
10
10
  end
11
11
  end
12
-
13
- # <b>DEPRECATED:</b> Please use <tt>strip_attributes</tt> (non-bang method)
14
- # instead.
15
- def strip_attributes!(options = {})
16
- warn "[DEPRECATION] `strip_attributes!` is deprecated. Please use `strip_attributes` (non-bang method) instead."
17
- strip_attributes(options)
18
- end
19
12
  end
20
13
 
21
14
  module StripAttributes
22
15
  VALID_OPTIONS = [:only, :except, :allow_empty, :collapse_spaces, :replace_newlines, :regex, :if, :unless].freeze
23
16
 
24
- # Unicode invisible and whitespace characters. The POSIX character class
17
+ # Unicode invisible and whitespace characters. The POSIX character class
25
18
  # [:space:] corresponds to the Unicode class Z ("separator"). We also
26
19
  # include the following characters from Unicode class C ("control"), which
27
20
  # are spaces or invisible characters that make no sense at the start or end
@@ -65,22 +58,20 @@ module StripAttributes
65
58
  replace_newlines = options[:replace_newlines]
66
59
  regex = options[:regex]
67
60
 
68
- value = value.strip if value.respond_to?(:strip)
61
+ value.gsub!(regex, "") if regex
69
62
 
70
- value.gsub!(regex, "") if regex && value.respond_to?(:gsub!)
71
-
72
- if MULTIBYTE_SUPPORTED && value.respond_to?(:gsub!) && Encoding.compatible?(value, MULTIBYTE_SPACE)
63
+ if MULTIBYTE_SUPPORTED && Encoding.compatible?(value, MULTIBYTE_SPACE)
73
64
  value.gsub!(/\A#{MULTIBYTE_SPACE}+|#{MULTIBYTE_SPACE}+\z/, "")
74
- elsif value.respond_to?(:strip!)
65
+ else
75
66
  value.strip!
76
67
  end
77
68
 
78
- value.gsub!(/[\r\n]+/, " ") if replace_newlines && value.respond_to?(:gsub!)
69
+ value.gsub!(/[\r\n]+/, " ") if replace_newlines
79
70
 
80
71
  if collapse_spaces
81
- if MULTIBYTE_SUPPORTED && value.respond_to?(:gsub!) && Encoding.compatible?(value, MULTIBYTE_BLANK)
72
+ if MULTIBYTE_SUPPORTED && Encoding.compatible?(value, MULTIBYTE_BLANK)
82
73
  value.gsub!(/#{MULTIBYTE_BLANK}+/, " ")
83
- elsif value.respond_to?(:squeeze!)
74
+ else
84
75
  value.squeeze!(" ")
85
76
  end
86
77
  end
@@ -6,26 +6,35 @@ module StripAttributes
6
6
  # RSpec Examples:
7
7
  #
8
8
  # it { is_expected.to strip_attribute(:first_name) }
9
+ # it { is_expected.to strip_attributes(:first_name, :last_name) }
9
10
  # it { is_expected.not_to strip_attribute(:password) }
11
+ # it { is_expected.not_to strip_attributes(:password, :encrypted_password) }
10
12
  #
11
13
  # Minitest Matchers Examples:
12
14
  #
13
15
  # must { strip_attribute :first_name }
16
+ # must { strip_attributes(:first_name, :last_name) }
14
17
  # wont { strip_attribute :password }
15
- def strip_attribute(attribute)
16
- StripAttributeMatcher.new(attribute)
18
+ # wont { strip_attributes(:password, :encrypted_password) }
19
+ def strip_attribute(*attributes)
20
+ StripAttributeMatcher.new(attributes)
17
21
  end
18
22
 
23
+ alias_method :strip_attributes, :strip_attribute
24
+
19
25
  class StripAttributeMatcher
20
- def initialize(attribute)
21
- @attribute = attribute
26
+ def initialize(attributes)
27
+ @attributes = attributes
22
28
  @options = {}
23
29
  end
24
30
 
25
31
  def matches?(subject)
26
- subject.send("#{@attribute}=", " string ")
27
- subject.valid?
28
- subject.send(@attribute) == "string" and collapse_spaces?(subject)
32
+ @attributes.all? do |attribute|
33
+ @attribute = attribute
34
+ subject.send("#{@attribute}=", " string ")
35
+ subject.valid?
36
+ subject.send(@attribute) == "string" and collapse_spaces?(subject)
37
+ end
29
38
  end
30
39
 
31
40
  def collapse_spaces
@@ -1,3 +1,3 @@
1
1
  module StripAttributes
2
- VERSION = "1.9.2"
2
+ VERSION = "1.10.0"
3
3
  end
@@ -92,4 +92,14 @@ describe SampleMockRecord do
92
92
  assert true
93
93
  end
94
94
  end
95
+
96
+ it "should take a list of arguments" do
97
+ must strip_attribute(:stripped1, :stripped2, :stripped3)
98
+ wont strip_attribute(:unstripped1, :unstripped2, :unstripped3)
99
+ end
100
+
101
+ it "should alias strip_attribute to strip_attributes" do
102
+ must strip_attributes(:stripped1, :stripped2, :stripped3)
103
+ wont strip_attributes(:unstripped1, :unstripped2, :unstripped3)
104
+ end
95
105
  end
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.9.2
4
+ version: 1.10.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan McGeary
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-02-16 00:00:00.000000000 Z
11
+ date: 2020-03-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activemodel