strip_attributes 1.9.2 → 1.10.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
  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