refinements 3.0.0 → 3.1.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 +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/README.md +29 -10
- data/lib/refinements.rb +4 -0
- data/lib/refinements/hashes.rb +19 -0
- data/lib/refinements/identity.rb +1 -1
- data/lib/tasks/reek.rake +8 -0
- metadata +23 -8
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 52a623e3d1310dbfdb635b08a68b10c9be68ab32
|
|
4
|
+
data.tar.gz: c2a9ae9e55cce8902546367bb3c2901b4632c309
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 8cbf60aef632dbbe20fc17ec6a80a6eeec219d35364e27a2366a4591896a6379d1521b3bea6863a111874eb4348888a6dcc30284cf44242008cfb7a76a7a4838
|
|
7
|
+
data.tar.gz: aafc0f9b1b0463ca26900e4c9a1b17cca8677db24d2961b74fdd31b5a474d36c4b3bf2bdbedde13110a67b9c94fead7cebfad549eb11b2cdd2ab204df5e8e8f4
|
checksums.yaml.gz.sig
CHANGED
|
Binary file
|
data.tar.gz.sig
CHANGED
|
Binary file
|
data/README.md
CHANGED
|
@@ -44,13 +44,17 @@ Provides a collection of refinements to core Ruby objects.
|
|
|
44
44
|
- Provides Hash refinements:
|
|
45
45
|
- `#compact` - Removes key/value pairs with `nil` values without modifying itself.
|
|
46
46
|
- `#compact!` - Removes key/value pairs with `nil` values while modifying itself.
|
|
47
|
+
- `#symbolize_keys` - Converts keys to symbols without modifying itself.
|
|
48
|
+
- `#symbolize_keys!` - Converts keys to symbols while modifying itself.
|
|
49
|
+
- `#slice` - Selects hash subset for given keys without modifying itself.
|
|
50
|
+
- `#slice!` - Selects hash subset for given keys while modifying itself.
|
|
47
51
|
- `#deep_merge` - Merges deeply nested hashes together without modifying itself.
|
|
48
52
|
- `#deep_merge!` - Merges deeply nested hashes together while modifying itself.
|
|
49
53
|
- `#reverse_merge` - Merges calling hash into passed in hash without modifying calling hash.
|
|
50
54
|
- `#reverse_merge!` - Merges calling hash into passed in hash while modifying calling hash.
|
|
51
55
|
- Provides String refinements:
|
|
52
|
-
- `#blank?` - Answers `true`/`false` based on whether string is blank
|
|
53
|
-
|
|
56
|
+
- `#blank?` - Answers `true`/`false` based on whether string is blank or not (i.e. `<space>`,
|
|
57
|
+
`\n`, `\t`, `\r`).
|
|
54
58
|
- `#up` - Answers string with only first letter upcased.
|
|
55
59
|
- `#down` - Answers string with only first letter downcased.
|
|
56
60
|
- `#camelcase` - Answers a camelcased string. Example: "ThisIsCamelcase".
|
|
@@ -85,9 +89,11 @@ Add the following to your Gemfile file:
|
|
|
85
89
|
|
|
86
90
|
## Requires
|
|
87
91
|
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
92
|
+
If all refinements are not desired, add the following to your `Gemfile` instead:
|
|
93
|
+
|
|
94
|
+
gem "refinements", require: false
|
|
95
|
+
|
|
96
|
+
...then require the specific refinement, as needed. Example:
|
|
91
97
|
|
|
92
98
|
require "refinements/arrays"
|
|
93
99
|
require "refinements/big_decimals"
|
|
@@ -96,9 +102,7 @@ that needs it. You'll want to require one or all of the following:
|
|
|
96
102
|
|
|
97
103
|
## Using
|
|
98
104
|
|
|
99
|
-
|
|
100
|
-
use the refinement by using the `using` keyword within your object. You'll want to use one or all of
|
|
101
|
-
the following:
|
|
105
|
+
Much like including/extending a module, you'll need modify your object(s) to use the refinement(s):
|
|
102
106
|
|
|
103
107
|
class Example
|
|
104
108
|
using Refinements::Arrays
|
|
@@ -109,8 +113,7 @@ the following:
|
|
|
109
113
|
|
|
110
114
|
## Examples
|
|
111
115
|
|
|
112
|
-
|
|
113
|
-
demonstrate how each refinement enriches your objects with new capabilities.
|
|
116
|
+
The following sections demonstrate how each refinement enriches your objects with new capabilities.
|
|
114
117
|
|
|
115
118
|
### String
|
|
116
119
|
|
|
@@ -146,6 +149,22 @@ demonstrate how each refinement enriches your objects with new capabilities.
|
|
|
146
149
|
example.compact! # => {a: 1}
|
|
147
150
|
example # => {a: 1}
|
|
148
151
|
|
|
152
|
+
example = {"a" => 1, "b" => 2}
|
|
153
|
+
example.symbolize_key # => {a: 1, b: 2}
|
|
154
|
+
example # => {"a" => 1, "b" => 2}
|
|
155
|
+
|
|
156
|
+
example = {"a" => 1, "b" => 2}
|
|
157
|
+
example.symbolize_key! # => {a: 1, b: 2}
|
|
158
|
+
example # => {a: 1, b: 2}
|
|
159
|
+
|
|
160
|
+
example = {a: 1, b: 2, c: 3}
|
|
161
|
+
example.slice :a, :c # => {a: 1, c: 3}
|
|
162
|
+
example # => {a: 1, b: 2, c: 3}
|
|
163
|
+
|
|
164
|
+
example = {a: 1, b: 2, c: 3}
|
|
165
|
+
example.slice! :a, :c # => {a: 1, c: 3}
|
|
166
|
+
example # => {a: 1, c: 3}
|
|
167
|
+
|
|
149
168
|
example = {a: "A", b: {one: "One", two: "Two"}}
|
|
150
169
|
example.deep_merge b: {one: 1} # => {a: "A", b: {one: 1, two: "Two"}}
|
|
151
170
|
example # => {a: "A", b: {one: "One", two: "Two"}}
|
data/lib/refinements.rb
CHANGED
data/lib/refinements/hashes.rb
CHANGED
|
@@ -17,6 +17,25 @@ module Refinements
|
|
|
17
17
|
reject! { |_, value| value.nil? }
|
|
18
18
|
end
|
|
19
19
|
|
|
20
|
+
def symbolize_keys
|
|
21
|
+
dup.symbolize_keys!
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def symbolize_keys!
|
|
25
|
+
keys.each { |key| self[key.to_sym] = delete(key) }
|
|
26
|
+
self
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def slice *keys
|
|
30
|
+
keys.each.with_object({}) do |key, sliced_hash|
|
|
31
|
+
sliced_hash[key] = self[key] if key?(key)
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def slice! *keys
|
|
36
|
+
replace slice(*keys)
|
|
37
|
+
end
|
|
38
|
+
|
|
20
39
|
def deep_merge other_hash
|
|
21
40
|
dup.deep_merge! other_hash
|
|
22
41
|
end
|
data/lib/refinements/identity.rb
CHANGED
data/lib/tasks/reek.rake
ADDED
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: refinements
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 3.
|
|
4
|
+
version: 3.1.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Brooke Kuhlmann
|
|
@@ -30,7 +30,7 @@ cert_chain:
|
|
|
30
30
|
n/LUZ1dKhIHzfKx1B4+TEIefArObGfkLIDM8+Dq1RX7TF1k81Men7iu4MgE9bYBn
|
|
31
31
|
3dE+xI3FdB5gWcdWxdtgRCmWjtXeYYyb4z6NQQ==
|
|
32
32
|
-----END CERTIFICATE-----
|
|
33
|
-
date: 2016-11-
|
|
33
|
+
date: 2016-11-13 00:00:00.000000000 Z
|
|
34
34
|
dependencies:
|
|
35
35
|
- !ruby/object:Gem::Dependency
|
|
36
36
|
name: rake
|
|
@@ -52,14 +52,14 @@ dependencies:
|
|
|
52
52
|
requirements:
|
|
53
53
|
- - "~>"
|
|
54
54
|
- !ruby/object:Gem::Version
|
|
55
|
-
version: '
|
|
55
|
+
version: '8.0'
|
|
56
56
|
type: :development
|
|
57
57
|
prerelease: false
|
|
58
58
|
version_requirements: !ruby/object:Gem::Requirement
|
|
59
59
|
requirements:
|
|
60
60
|
- - "~>"
|
|
61
61
|
- !ruby/object:Gem::Version
|
|
62
|
-
version: '
|
|
62
|
+
version: '8.0'
|
|
63
63
|
- !ruby/object:Gem::Dependency
|
|
64
64
|
name: pry
|
|
65
65
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -186,34 +186,48 @@ dependencies:
|
|
|
186
186
|
- - "~>"
|
|
187
187
|
- !ruby/object:Gem::Version
|
|
188
188
|
version: '4.7'
|
|
189
|
+
- !ruby/object:Gem::Dependency
|
|
190
|
+
name: reek
|
|
191
|
+
requirement: !ruby/object:Gem::Requirement
|
|
192
|
+
requirements:
|
|
193
|
+
- - "~>"
|
|
194
|
+
- !ruby/object:Gem::Version
|
|
195
|
+
version: '4.5'
|
|
196
|
+
type: :development
|
|
197
|
+
prerelease: false
|
|
198
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
199
|
+
requirements:
|
|
200
|
+
- - "~>"
|
|
201
|
+
- !ruby/object:Gem::Version
|
|
202
|
+
version: '4.5'
|
|
189
203
|
- !ruby/object:Gem::Dependency
|
|
190
204
|
name: rubocop
|
|
191
205
|
requirement: !ruby/object:Gem::Requirement
|
|
192
206
|
requirements:
|
|
193
207
|
- - "~>"
|
|
194
208
|
- !ruby/object:Gem::Version
|
|
195
|
-
version: '0.
|
|
209
|
+
version: '0.45'
|
|
196
210
|
type: :development
|
|
197
211
|
prerelease: false
|
|
198
212
|
version_requirements: !ruby/object:Gem::Requirement
|
|
199
213
|
requirements:
|
|
200
214
|
- - "~>"
|
|
201
215
|
- !ruby/object:Gem::Version
|
|
202
|
-
version: '0.
|
|
216
|
+
version: '0.45'
|
|
203
217
|
- !ruby/object:Gem::Dependency
|
|
204
218
|
name: codeclimate-test-reporter
|
|
205
219
|
requirement: !ruby/object:Gem::Requirement
|
|
206
220
|
requirements:
|
|
207
221
|
- - "~>"
|
|
208
222
|
- !ruby/object:Gem::Version
|
|
209
|
-
version: '0
|
|
223
|
+
version: '1.0'
|
|
210
224
|
type: :development
|
|
211
225
|
prerelease: false
|
|
212
226
|
version_requirements: !ruby/object:Gem::Requirement
|
|
213
227
|
requirements:
|
|
214
228
|
- - "~>"
|
|
215
229
|
- !ruby/object:Gem::Version
|
|
216
|
-
version: '0
|
|
230
|
+
version: '1.0'
|
|
217
231
|
description:
|
|
218
232
|
email:
|
|
219
233
|
- brooke@alchemists.io
|
|
@@ -231,6 +245,7 @@ files:
|
|
|
231
245
|
- lib/refinements/hashes.rb
|
|
232
246
|
- lib/refinements/identity.rb
|
|
233
247
|
- lib/refinements/strings.rb
|
|
248
|
+
- lib/tasks/reek.rake
|
|
234
249
|
- lib/tasks/rspec.rake
|
|
235
250
|
- lib/tasks/rubocop.rake
|
|
236
251
|
homepage: https://github.com/bkuhlmann/refinements
|
metadata.gz.sig
CHANGED
|
Binary file
|