refinements 3.0.0 → 3.1.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
  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