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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c3892f7956e4d8cfc57a1872c6c13509c569fbac
4
- data.tar.gz: b36a0d0ad57850bfbb554b40ff0606b6c48fe522
3
+ metadata.gz: 52a623e3d1310dbfdb635b08a68b10c9be68ab32
4
+ data.tar.gz: c2a9ae9e55cce8902546367bb3c2901b4632c309
5
5
  SHA512:
6
- metadata.gz: 327582d5686e68f62be1b48e267a30e3ee13befeefcc4082be3692083098ed273b2f5ed3aba570f625395824ced13641b00ba4e2ac87e9ce9add80fc01ad8436
7
- data.tar.gz: a38b3a142c34986ed08f3ac085c56c330aabe3159290d592cb2af06114cef3211b2f9d327832acff10e0acd17c147bcf078655bc707047935561a3d629a06f1e
6
+ metadata.gz: 8cbf60aef632dbbe20fc17ec6a80a6eeec219d35364e27a2366a4591896a6379d1521b3bea6863a111874eb4348888a6dcc30284cf44242008cfb7a76a7a4838
7
+ data.tar.gz: aafc0f9b1b0463ca26900e4c9a1b17cca8677db24d2961b74fdd31b5a474d36c4b3bf2bdbedde13110a67b9c94fead7cebfad549eb11b2cdd2ab204df5e8e8f4
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
- or not (i.e. `<space>`, `\n`, `\t`, `\r`).
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
- Due to this gem being a collection of Ruby refinements, none of the refinements are auto-loaded by
89
- default in order to reduce application bloat. Instead, require the specific requirement for the code
90
- that needs it. You'll want to require one or all of the following:
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
- In addition to requiring the appropriate refinement for the code that needs it, you'll also need to
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
- With the appropriate refinements required and used within your objects, the following sections
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"}}
@@ -1,3 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require "refinements/arrays"
4
+ require "refinements/big_decimals"
5
+ require "refinements/hashes"
3
6
  require "refinements/identity"
7
+ require "refinements/strings"
@@ -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
@@ -12,7 +12,7 @@ module Refinements
12
12
  end
13
13
 
14
14
  def self.version
15
- "3.0.0"
15
+ "3.1.0"
16
16
  end
17
17
 
18
18
  def self.version_label
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ begin
4
+ require "reek/rake/task"
5
+ Reek::Rake::Task.new
6
+ rescue LoadError => error
7
+ puts error.message
8
+ end
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.0.0
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-02 00:00:00.000000000 Z
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: '7.7'
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: '7.7'
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.44'
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.44'
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.6'
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.6'
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