strip_attributes 1.9.0 → 1.9.1

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: e52f0da3132c0ac375581d84279e40f5a118efd62880a094a46cbb99fcf38b2c
4
- data.tar.gz: 3ffd42e6130993495406c5b32d5ba93e7b538f85b9295ac9d83f0cae9d65d132
3
+ metadata.gz: 45ea7e1316e058313b4aa362722d1b3eced15ed144b1c9576ef01834181d9733
4
+ data.tar.gz: f38bd5fb9ac513e5a72cedaee5caf43e72d2e08c89d1fa9e234f7f30b798b961
5
5
  SHA512:
6
- metadata.gz: a76db1928d1327ca44d834384679e7a1150e773f414c344d2469b02d144f2f8f103da8cd19664810dbb0d93e7b4dd4fb3a2afed2a8558c8d61a9027d30d23d03
7
- data.tar.gz: 4a2085e2618d2d0e661b9b2dffc8741cad0b965a8b4342cc57fedd5a48e13cb70e444feb94ee1688c67051c5d6b747e9ebad29a0486b4a01a4bba34c1f2c32fd
6
+ metadata.gz: ec101c79b0d25e128b848e233fbc614b87e6bf8ea6e1a8650d1863808cbb862f650ff516b89e569d0e491d3b49cdd995a24c8f37bae2875cc5ad581ef7f31aa3
7
+ data.tar.gz: 28ceffbb9193abd64abf82bf2e22ff5a492d88255209a627e7e3d03c701bc2a98b370de0d5b7c16ed2cc6c803f3fb3903bceca1b36784dd85f4d44b76c91960d
data/README.md CHANGED
@@ -15,24 +15,6 @@ a single attribute (`only: :field`) or arrays of attributes (`except: [:field1,
15
15
 
16
16
  It's also possible to skip stripping the attributes altogether per model using the `:if` and `:unless` options.
17
17
 
18
- ---
19
-
20
- **How You Can Help**
21
-
22
- [![Square Cash](http://img.shields.io/badge/square%20cash-$rmm5t-brightgreen.svg)][square]
23
- [![PayPal](http://img.shields.io/badge/paypal-rmm5t-blue.svg)][paypal]
24
- [![Book a Codementor session](http://img.shields.io/badge/codementor-book%20a%20session-orange.svg)][codementor]
25
-
26
- If you like this project, [buy me a coffee][paypal], or [book a session with me][codementor], or donate bitcoin: `1rmm5tv6f997JK5bLcGbRCZyVjZUPkQ2m`
27
-
28
- [square]: https://cash.me/$rmm5t/5 "Donate to rmm5t for open source!"
29
- [paypal]: https://www.paypal.me/rmm5t/5 "Donate to rmm5t for open source!"
30
- [bitcoin]: bitcoin:1rmm5tv6f997JK5bLcGbRCZyVjZUPkQ2m?amount=0.01&label=Coffee%20to%20rmm5t%20for%20Open%20Source "Buy rmm5t a coffee for open source!"
31
- [codementor]: https://www.codementor.io/rmm5t?utm_campaign=profile&utm_source=button-rmm5t&utm_medium=shields "Book a session with rmm5t on Codementor!"
32
-
33
- [![Twitter](https://img.shields.io/twitter/follow/rmm5t.svg?style=social)](https://twitter.com/rmm5t)
34
- [![Stack Overflow](https://img.shields.io/stackexchange/stackoverflow/r/8985.svg?style=social)](http://stackoverflow.com/users/8985/ryan-mcgeary)
35
-
36
18
  ## Installation
37
19
 
38
20
  Include the gem in your Gemfile:
@@ -19,7 +19,7 @@ module ActiveModel::Validations::HelperMethods
19
19
  end
20
20
 
21
21
  module StripAttributes
22
- VALID_OPTIONS = [:only, :except, :allow_empty, :collapse_spaces, :replace_newlines, :regex, :if, :unless]
22
+ VALID_OPTIONS = [:only, :except, :allow_empty, :collapse_spaces, :replace_newlines, :regex, :if, :unless].freeze
23
23
 
24
24
  # Unicode invisible and whitespace characters. The POSIX character class
25
25
  # [:space:] corresponds to the Unicode class Z ("separator"). We also
@@ -32,10 +32,10 @@ module StripAttributes
32
32
  # U+200D ZERO WIDTH JOINER
33
33
  # U+2060 WORD JOINER
34
34
  # U+FEFF ZERO WIDTH NO-BREAK SPACE
35
- MULTIBYTE_WHITE = "\u180E\u200B\u200C\u200D\u2060\uFEFF"
36
- MULTIBYTE_SPACE = /[[:space:]#{MULTIBYTE_WHITE}]/
37
- MULTIBYTE_BLANK = /[[:blank:]#{MULTIBYTE_WHITE}]/
38
- MULTIBYTE_SUPPORTED = "\u0020" == " "
35
+ MULTIBYTE_WHITE = "\u180E\u200B\u200C\u200D\u2060\uFEFF".freeze
36
+ MULTIBYTE_SPACE = /[[:space:]#{MULTIBYTE_WHITE}]/.freeze
37
+ MULTIBYTE_BLANK = /[[:blank:]#{MULTIBYTE_WHITE}]/.freeze
38
+ MULTIBYTE_SUPPORTED = "\u0020" == " "
39
39
 
40
40
  def self.strip(record_or_string, options = {})
41
41
  if record_or_string.respond_to?(:attributes)
@@ -63,13 +63,9 @@ module StripAttributes
63
63
  replace_newlines = options[:replace_newlines]
64
64
  regex = options[:regex]
65
65
 
66
- if value.respond_to?(:strip)
67
- value = (value.blank? && !allow_empty) ? nil : value.strip
68
- end
66
+ value = value.strip if value.respond_to?(:strip)
69
67
 
70
- if regex && value.respond_to?(:gsub!)
71
- value.gsub!(regex, "")
72
- end
68
+ value.gsub!(regex, "") if regex && value.respond_to?(:gsub!)
73
69
 
74
70
  if MULTIBYTE_SUPPORTED && value.respond_to?(:gsub!) && Encoding.compatible?(value, MULTIBYTE_SPACE)
75
71
  value.gsub!(/\A#{MULTIBYTE_SPACE}+|#{MULTIBYTE_SPACE}+\z/, "")
@@ -77,9 +73,7 @@ module StripAttributes
77
73
  value.strip!
78
74
  end
79
75
 
80
- if replace_newlines && value.respond_to?(:gsub!)
81
- value.gsub!(/[\r\n]+/, " ")
82
- end
76
+ value.gsub!(/[\r\n]+/, " ") if replace_newlines && value.respond_to?(:gsub!)
83
77
 
84
78
  if collapse_spaces
85
79
  if MULTIBYTE_SUPPORTED && value.respond_to?(:gsub!) && Encoding.compatible?(value, MULTIBYTE_BLANK)
@@ -89,7 +83,7 @@ module StripAttributes
89
83
  end
90
84
  end
91
85
 
92
- value
86
+ (value.blank? && !allow_empty) ? nil : value
93
87
  end
94
88
 
95
89
  # Necessary because Rails has removed the narrowing of attributes using :only
@@ -1,3 +1,3 @@
1
1
  module StripAttributes
2
- VERSION = "1.9.0"
2
+ VERSION = "1.9.1"
3
3
  end
@@ -9,6 +9,8 @@ module MockAttributes
9
9
  base.attribute :bang
10
10
  base.attribute :foz
11
11
  base.attribute :fiz
12
+ base.attribute :qax
13
+ base.attribute :qux
12
14
  base.attribute :strip_me
13
15
  base.attribute :skip_me
14
16
  end
@@ -106,7 +108,9 @@ class StripAttributesTest < Minitest::Test
106
108
  baz: "",
107
109
  bang: " ",
108
110
  foz: " foz foz",
109
- fiz: "fiz \n fiz"
111
+ fiz: "fiz \n fiz",
112
+ qax: "\n\t ",
113
+ qux: "\u200B"
110
114
  }
111
115
  end
112
116
 
@@ -124,6 +128,8 @@ class StripAttributesTest < Minitest::Test
124
128
  assert_equal "fiz \n fiz", record.fiz
125
129
  assert_nil record.baz
126
130
  assert_nil record.bang
131
+ assert_nil record.qax
132
+ assert_nil record.qux
127
133
  end
128
134
 
129
135
  def test_should_strip_only_one_field
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.0
4
+ version: 1.9.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: 2019-02-24 00:00:00.000000000 Z
11
+ date: 2020-02-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activemodel
@@ -145,7 +145,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
145
145
  - !ruby/object:Gem::Version
146
146
  version: '0'
147
147
  requirements: []
148
- rubygems_version: 3.0.1
148
+ rubygems_version: 3.0.3
149
149
  signing_key:
150
150
  specification_version: 4
151
151
  summary: Whitespace cleanup for ActiveModel attributes