refinements 2.2.1 → 3.0.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 +58 -41
- data/lib/refinements/{array_extensions.rb → arrays.rb} +1 -1
- data/lib/refinements/{big_decimal_extensions.rb → big_decimals.rb} +1 -1
- data/lib/refinements/{hash_extensions.rb → hashes.rb} +6 -1
- data/lib/refinements/identity.rb +1 -1
- data/lib/refinements/strings.rb +72 -0
- data/lib/tasks/rspec.rake +2 -0
- data/lib/tasks/rubocop.rake +2 -0
- metadata +66 -109
- metadata.gz.sig +0 -0
- data/lib/refinements/string_extensions.rb +0 -21
- data/lib/tasks/console.rake +0 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c3892f7956e4d8cfc57a1872c6c13509c569fbac
|
4
|
+
data.tar.gz: b36a0d0ad57850bfbb554b40ff0606b6c48fe522
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 327582d5686e68f62be1b48e267a30e3ee13befeefcc4082be3692083098ed273b2f5ed3aba570f625395824ced13641b00ba4e2ac87e9ce9add80fc01ad8436
|
7
|
+
data.tar.gz: a38b3a142c34986ed08f3ac085c56c330aabe3159290d592cb2af06114cef3211b2f9d327832acff10e0acd17c147bcf078655bc707047935561a3d629a06f1e
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
Binary file
|
data/README.md
CHANGED
@@ -7,7 +7,7 @@
|
|
7
7
|
[](https://travis-ci.org/bkuhlmann/refinements)
|
8
8
|
[](https://www.patreon.com/bkuhlmann)
|
9
9
|
|
10
|
-
Provides a collection of refinements
|
10
|
+
Provides a collection of refinements to core Ruby objects.
|
11
11
|
|
12
12
|
<!-- Tocer[start]: Auto-generated, don't remove. -->
|
13
13
|
|
@@ -36,26 +36,30 @@ Provides a collection of refinements for core Ruby objects.
|
|
36
36
|
|
37
37
|
# Features
|
38
38
|
|
39
|
-
-
|
39
|
+
- Provides Array refinements:
|
40
|
+
- `Array#compress` - Removes `nil` and empty values without modifying itself.
|
41
|
+
- `Array#compress!` - Removes `nil` and empty values while modifying itself.
|
42
|
+
- Provides BigDecimal refinements:
|
40
43
|
- `BigDecimal#inspect` - Allows one to inspect a big decimal with numeric representation.
|
41
|
-
-
|
42
|
-
- `
|
43
|
-
-
|
44
|
-
-
|
45
|
-
- `#
|
46
|
-
- `#compact!` - Removes key/value pairs with nil values and modifies itself.
|
47
|
-
- `#deep_merge` - Merges deeply nested hashes together without itself.
|
48
|
-
- `#deep_merge!` - Merges deeply nested hashes together and modifies itself.
|
44
|
+
- Provides Hash refinements:
|
45
|
+
- `#compact` - Removes key/value pairs with `nil` values without modifying itself.
|
46
|
+
- `#compact!` - Removes key/value pairs with `nil` values while modifying itself.
|
47
|
+
- `#deep_merge` - Merges deeply nested hashes together without modifying itself.
|
48
|
+
- `#deep_merge!` - Merges deeply nested hashes together while modifying itself.
|
49
49
|
- `#reverse_merge` - Merges calling hash into passed in hash without modifying calling hash.
|
50
|
-
- `#reverse_merge!` - Merges calling hash into passed in hash
|
51
|
-
-
|
50
|
+
- `#reverse_merge!` - Merges calling hash into passed in hash while modifying calling hash.
|
51
|
+
- Provides String refinements:
|
52
|
+
- `#blank?` - Answers `true`/`false` based on whether string is blank
|
53
|
+
or not (i.e. `<space>`, `\n`, `\t`, `\r`).
|
54
|
+
- `#up` - Answers string with only first letter upcased.
|
55
|
+
- `#down` - Answers string with only first letter downcased.
|
52
56
|
- `#camelcase` - Answers a camelcased string. Example: "ThisIsCamelcase".
|
53
57
|
- `#snakecase` - Answers a snakecased string. Example: "this_is_snakecase".
|
54
58
|
- `#titleize` - Answers titleized string. Example: "This Is Titleized".
|
55
59
|
|
56
60
|
# Requirements
|
57
61
|
|
58
|
-
0. [
|
62
|
+
0. [Ruby 2.3.x](https://www.ruby-lang.org).
|
59
63
|
0. A solid understanding of [Ruby refinements and lexical scope](https://www.youtube.com/watch?v=qXC9Gk4dCEw).
|
60
64
|
|
61
65
|
# Setup
|
@@ -65,8 +69,9 @@ For a secure install, type the following from the command line (recommended):
|
|
65
69
|
gem cert --add <(curl --location --silent https://www.alchemists.io/gem-public.pem)
|
66
70
|
gem install refinements --trust-policy MediumSecurity
|
67
71
|
|
68
|
-
NOTE: A HighSecurity trust policy would be best but MediumSecurity enables signed gem verification
|
69
|
-
allowing the installation of unsigned dependencies since they are beyond the scope of this
|
72
|
+
NOTE: A HighSecurity trust policy would be best but MediumSecurity enables signed gem verification
|
73
|
+
while allowing the installation of unsigned dependencies since they are beyond the scope of this
|
74
|
+
gem.
|
70
75
|
|
71
76
|
For an insecure install, type the following (not recommended):
|
72
77
|
|
@@ -80,38 +85,41 @@ Add the following to your Gemfile file:
|
|
80
85
|
|
81
86
|
## Requires
|
82
87
|
|
83
|
-
Due to this gem being a collection of Ruby refinements, none of the refinements are auto-loaded by
|
84
|
-
|
85
|
-
require one or all of the following:
|
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:
|
86
91
|
|
87
|
-
require "refinements/
|
88
|
-
require "refinements/
|
89
|
-
require "refinements/
|
90
|
-
require "refinements/
|
92
|
+
require "refinements/arrays"
|
93
|
+
require "refinements/big_decimals"
|
94
|
+
require "refinements/hashes"
|
95
|
+
require "refinements/strings"
|
91
96
|
|
92
97
|
## Using
|
93
98
|
|
94
|
-
In addition to requiring the appropriate refinement
|
95
|
-
refinement by using the `using` keyword within your object. You'll want to use one or all of
|
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:
|
96
102
|
|
97
103
|
class Example
|
98
|
-
using Refinements::
|
99
|
-
using Refinements::
|
100
|
-
using Refinements::
|
101
|
-
using Refinements::
|
104
|
+
using Refinements::Arrays
|
105
|
+
using Refinements::BigDecimals
|
106
|
+
using Refinements::Hashes
|
107
|
+
using Refinements::Strings
|
102
108
|
end
|
103
109
|
|
104
110
|
## Examples
|
105
111
|
|
106
|
-
With the appropriate refinements required and used within your objects, the following sections
|
107
|
-
refinement enriches your objects with new capabilities.
|
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.
|
108
114
|
|
109
115
|
### String
|
110
116
|
|
111
|
-
|
112
|
-
example.
|
113
|
-
|
114
|
-
|
117
|
+
" \n\t\r".blank? # => true
|
118
|
+
"example".up # => "Example"
|
119
|
+
"EXAMPLE".down # => "eXAMPLE"
|
120
|
+
"this_is_an_example".camelcase # => "ThisIsAnExample"
|
121
|
+
"ThisIsAnExample".snakecase # => "this_is_an_example"
|
122
|
+
"ThisIsAnExample".titleize # => "This Is An Example"
|
115
123
|
|
116
124
|
### Big Decimal
|
117
125
|
|
@@ -130,6 +138,14 @@ refinement enriches your objects with new capabilities.
|
|
130
138
|
|
131
139
|
### Hash
|
132
140
|
|
141
|
+
example = {a: 1, b: nil}
|
142
|
+
example.compact # => {a: 1}
|
143
|
+
example # => {a: 1, b: nil}
|
144
|
+
|
145
|
+
example = {a: 1, b: nil}
|
146
|
+
example.compact! # => {a: 1}
|
147
|
+
example # => {a: 1}
|
148
|
+
|
133
149
|
example = {a: "A", b: {one: "One", two: "Two"}}
|
134
150
|
example.deep_merge b: {one: 1} # => {a: "A", b: {one: 1, two: "Two"}}
|
135
151
|
example # => {a: "A", b: {one: "One", two: "Two"}}
|
@@ -156,14 +172,14 @@ To test, run:
|
|
156
172
|
|
157
173
|
Read [Semantic Versioning](http://semver.org) for details. Briefly, it means:
|
158
174
|
|
159
|
-
- Patch (x.y.Z) - Incremented for small, backwards compatible bug fixes.
|
160
|
-
- Minor (x.Y.z) - Incremented for new, backwards compatible public API enhancements
|
175
|
+
- Patch (x.y.Z) - Incremented for small, backwards compatible, bug fixes.
|
176
|
+
- Minor (x.Y.z) - Incremented for new, backwards compatible, public API enhancements/fixes.
|
161
177
|
- Major (X.y.z) - Incremented for any backwards incompatible public API changes.
|
162
178
|
|
163
179
|
# Code of Conduct
|
164
180
|
|
165
|
-
Please note that this project is released with a [CODE OF CONDUCT](CODE_OF_CONDUCT.md). By
|
166
|
-
you agree to abide by its terms.
|
181
|
+
Please note that this project is released with a [CODE OF CONDUCT](CODE_OF_CONDUCT.md). By
|
182
|
+
participating in this project you agree to abide by its terms.
|
167
183
|
|
168
184
|
# Contributions
|
169
185
|
|
@@ -172,13 +188,14 @@ Read [CONTRIBUTING](CONTRIBUTING.md) for details.
|
|
172
188
|
# License
|
173
189
|
|
174
190
|
Copyright (c) 2015 [Alchemists](https://www.alchemists.io).
|
175
|
-
Read
|
191
|
+
Read [LICENSE](LICENSE.md) for details.
|
176
192
|
|
177
193
|
# History
|
178
194
|
|
179
|
-
Read
|
195
|
+
Read [CHANGES](CHANGES.md) for details.
|
180
196
|
Built with [Gemsmith](https://github.com/bkuhlmann/gemsmith).
|
181
197
|
|
182
198
|
# Credits
|
183
199
|
|
184
|
-
Developed by [Brooke Kuhlmann](https://www.alchemists.io) at
|
200
|
+
Developed by [Brooke Kuhlmann](https://www.alchemists.io) at
|
201
|
+
[Alchemists](https://www.alchemists.io).
|
@@ -2,13 +2,18 @@
|
|
2
2
|
|
3
3
|
module Refinements
|
4
4
|
# Refinements for Hashes.
|
5
|
-
module
|
5
|
+
module Hashes
|
6
|
+
# rubocop:disable Metrics/BlockLength
|
6
7
|
refine Hash do
|
8
|
+
# TODO: Remove when Ruby 2.4 is released.
|
7
9
|
def compact
|
10
|
+
puts "[DEPRECATION]: #compact is deprecated and is included, by default, in Ruby 2.4."
|
8
11
|
dup.compact!
|
9
12
|
end
|
10
13
|
|
14
|
+
# TODO: Remove when Ruby 2.4 is released.
|
11
15
|
def compact!
|
16
|
+
puts "[DEPRECATION]: #compact! is deprecated and is included, by default, in Ruby 2.4."
|
12
17
|
reject! { |_, value| value.nil? }
|
13
18
|
end
|
14
19
|
|
data/lib/refinements/identity.rb
CHANGED
@@ -0,0 +1,72 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Refinements
|
4
|
+
# Refinements for Strings.
|
5
|
+
module Strings
|
6
|
+
refine String.singleton_class do
|
7
|
+
def delimiters
|
8
|
+
%r([a-z][A-Z]|\s*\-\s*|\s*\/\s*|\s*\:+\s*|\s*\_\s*|\s+)
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
# rubocop:disable Metrics/BlockLength
|
13
|
+
refine String do
|
14
|
+
def blank?
|
15
|
+
!match(/\A\s*\z/).nil?
|
16
|
+
end
|
17
|
+
|
18
|
+
def up
|
19
|
+
return self if empty?
|
20
|
+
self[0].upcase + self[1, size]
|
21
|
+
end
|
22
|
+
|
23
|
+
def down
|
24
|
+
return self if empty?
|
25
|
+
self[0].downcase + self[1, size]
|
26
|
+
end
|
27
|
+
|
28
|
+
def camelcase
|
29
|
+
if self =~ self.class.delimiters
|
30
|
+
result = up_and_join split(%r(\s*\-\s*|\s*\/\s*|\s*\:+\s*)), delimiter: "::"
|
31
|
+
up_and_join result.split(/\s*\_\s*|\s+/)
|
32
|
+
else
|
33
|
+
up
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
def snakecase
|
38
|
+
if self =~ self.class.delimiters
|
39
|
+
result = down_and_join split(%r(\s*\-\s*|\s*\/\s*|\s*\:+\s*)), delimiter: "/"
|
40
|
+
down_and_join result.split(/(?=[A-Z])|\s*\_\s*|\s+/), delimiter: "_"
|
41
|
+
else
|
42
|
+
downcase
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
def titleize
|
47
|
+
if self =~ self.class.delimiters
|
48
|
+
result = up_and_join split(/(?=[A-Z])|\s*\_\s*|\s*\-\s*|\s+/), delimiter: " "
|
49
|
+
up_and_join result.split(%r(\s*\/\s*|\s*\:+\s*)), delimiter: "/"
|
50
|
+
else
|
51
|
+
capitalize
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
private
|
56
|
+
|
57
|
+
def up_and_join parts, delimiter: ""
|
58
|
+
parts.reduce "" do |result, part|
|
59
|
+
next part.up if result.empty?
|
60
|
+
"#{result}#{delimiter}#{part.up}"
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
def down_and_join parts, delimiter: ""
|
65
|
+
parts.reduce "" do |result, part|
|
66
|
+
next part.down if result.empty?
|
67
|
+
"#{result}#{delimiter}#{part.down}"
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
data/lib/tasks/rspec.rake
CHANGED
data/lib/tasks/rubocop.rake
CHANGED
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:
|
4
|
+
version: 3.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brooke Kuhlmann
|
@@ -12,25 +12,25 @@ cert_chain:
|
|
12
12
|
-----BEGIN CERTIFICATE-----
|
13
13
|
MIIDeDCCAmCgAwIBAgIBATANBgkqhkiG9w0BAQUFADBBMQ8wDQYDVQQDDAZicm9v
|
14
14
|
a2UxGjAYBgoJkiaJk/IsZAEZFgphbGNoZW1pc3RzMRIwEAYKCZImiZPyLGQBGRYC
|
15
|
-
|
15
|
+
aW8wHhcNMTYxMDE5MTY0NDEzWhcNMTcxMDE5MTY0NDEzWjBBMQ8wDQYDVQQDDAZi
|
16
16
|
cm9va2UxGjAYBgoJkiaJk/IsZAEZFgphbGNoZW1pc3RzMRIwEAYKCZImiZPyLGQB
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
17
|
+
GRYCaW8wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCgryPL4/IbWDcL
|
18
|
+
fnqpnoJALqj+ega7hSsvvD8sac57HPNLeKcOmSafFiQLAnTmmE132ZlFc8kyZRVn
|
19
|
+
zmqSESowO5jd+ggFuy1ySqQJXhwgik04KedKRUjpIDZePrjw+M5UJT1qzKCKL2xI
|
20
|
+
nx5cOKP1fSWJ1RRu8JhaDeSloGtYMdw2c28wnKPNIsWDood4xhbLcY9IqeISft2e
|
21
|
+
oTAHTHandHbvt24X3/n67ceNjLBbsVZPXCC1C8C8ccjHjA4Tm2uiFoDwThMcPggg
|
22
|
+
90H6fh0vLFcNAobdPEchbge8tWtfmMPz2+C4yklANn81GA+ANsBS1uwx6mxJoMQU
|
23
|
+
BNVp0aLvAgMBAAGjezB5MAkGA1UdEwQCMAAwCwYDVR0PBAQDAgSwMB0GA1UdDgQW
|
24
|
+
BBRS85Rn1BaqeIONByw4t46DMDMzHDAfBgNVHREEGDAWgRRicm9va2VAYWxjaGVt
|
25
25
|
aXN0cy5pbzAfBgNVHRIEGDAWgRRicm9va2VAYWxjaGVtaXN0cy5pbzANBgkqhkiG
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
26
|
+
9w0BAQUFAAOCAQEAZMb57Y4wdpbX8XxTukEO7VC1pndccUsxdbziGsAOiuHET3Aq
|
27
|
+
ygLvrfdYrN88/w+qxncW5bxbO3a6UGkuhIFUPM8zRSE/rh6bCcJljTJrExVt42eV
|
28
|
+
aYCb7WJNsx3eNXHn3uQodq3tD+lmNJzz2bFeT3smGSKEnALBjqorO/2mpDh4FJ3S
|
29
|
+
4CcDYsJ1ywep8LDJDBBGdKz9moL+axryzpeTpgTT/fFYFzRzWrURPyDvPOikh9TX
|
30
|
+
n/LUZ1dKhIHzfKx1B4+TEIefArObGfkLIDM8+Dq1RX7TF1k81Men7iu4MgE9bYBn
|
31
|
+
3dE+xI3FdB5gWcdWxdtgRCmWjtXeYYyb4z6NQQ==
|
32
32
|
-----END CERTIFICATE-----
|
33
|
-
date: 2016-
|
33
|
+
date: 2016-11-02 00:00:00.000000000 Z
|
34
34
|
dependencies:
|
35
35
|
- !ruby/object:Gem::Dependency
|
36
36
|
name: rake
|
@@ -52,211 +52,169 @@ dependencies:
|
|
52
52
|
requirements:
|
53
53
|
- - "~>"
|
54
54
|
- !ruby/object:Gem::Version
|
55
|
-
version: '7.
|
55
|
+
version: '7.7'
|
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.
|
62
|
+
version: '7.7'
|
63
63
|
- !ruby/object:Gem::Dependency
|
64
64
|
name: pry
|
65
65
|
requirement: !ruby/object:Gem::Requirement
|
66
66
|
requirements:
|
67
|
-
- - "
|
67
|
+
- - "~>"
|
68
68
|
- !ruby/object:Gem::Version
|
69
|
-
version: '0'
|
69
|
+
version: '0.10'
|
70
70
|
type: :development
|
71
71
|
prerelease: false
|
72
72
|
version_requirements: !ruby/object:Gem::Requirement
|
73
73
|
requirements:
|
74
|
-
- - "
|
74
|
+
- - "~>"
|
75
75
|
- !ruby/object:Gem::Version
|
76
|
-
version: '0'
|
76
|
+
version: '0.10'
|
77
77
|
- !ruby/object:Gem::Dependency
|
78
78
|
name: pry-byebug
|
79
79
|
requirement: !ruby/object:Gem::Requirement
|
80
80
|
requirements:
|
81
|
-
- - "
|
81
|
+
- - "~>"
|
82
82
|
- !ruby/object:Gem::Version
|
83
|
-
version: '
|
83
|
+
version: '3.4'
|
84
84
|
type: :development
|
85
85
|
prerelease: false
|
86
86
|
version_requirements: !ruby/object:Gem::Requirement
|
87
87
|
requirements:
|
88
|
-
- - "
|
88
|
+
- - "~>"
|
89
89
|
- !ruby/object:Gem::Version
|
90
|
-
version: '
|
90
|
+
version: '3.4'
|
91
91
|
- !ruby/object:Gem::Dependency
|
92
92
|
name: pry-state
|
93
93
|
requirement: !ruby/object:Gem::Requirement
|
94
94
|
requirements:
|
95
|
-
- - "
|
95
|
+
- - "~>"
|
96
96
|
- !ruby/object:Gem::Version
|
97
|
-
version: '0'
|
97
|
+
version: '0.1'
|
98
98
|
type: :development
|
99
99
|
prerelease: false
|
100
100
|
version_requirements: !ruby/object:Gem::Requirement
|
101
101
|
requirements:
|
102
|
-
- - "
|
102
|
+
- - "~>"
|
103
103
|
- !ruby/object:Gem::Version
|
104
|
-
version: '0'
|
104
|
+
version: '0.1'
|
105
105
|
- !ruby/object:Gem::Dependency
|
106
106
|
name: bond
|
107
107
|
requirement: !ruby/object:Gem::Requirement
|
108
108
|
requirements:
|
109
|
-
- - "
|
109
|
+
- - "~>"
|
110
110
|
- !ruby/object:Gem::Version
|
111
|
-
version: '0'
|
111
|
+
version: '0.5'
|
112
112
|
type: :development
|
113
113
|
prerelease: false
|
114
114
|
version_requirements: !ruby/object:Gem::Requirement
|
115
115
|
requirements:
|
116
|
-
- - "
|
116
|
+
- - "~>"
|
117
117
|
- !ruby/object:Gem::Version
|
118
|
-
version: '0'
|
118
|
+
version: '0.5'
|
119
119
|
- !ruby/object:Gem::Dependency
|
120
120
|
name: wirb
|
121
121
|
requirement: !ruby/object:Gem::Requirement
|
122
122
|
requirements:
|
123
|
-
- - "
|
123
|
+
- - "~>"
|
124
124
|
- !ruby/object:Gem::Version
|
125
|
-
version: '0'
|
125
|
+
version: '2.0'
|
126
126
|
type: :development
|
127
127
|
prerelease: false
|
128
128
|
version_requirements: !ruby/object:Gem::Requirement
|
129
129
|
requirements:
|
130
|
-
- - "
|
130
|
+
- - "~>"
|
131
131
|
- !ruby/object:Gem::Version
|
132
|
-
version: '0'
|
132
|
+
version: '2.0'
|
133
133
|
- !ruby/object:Gem::Dependency
|
134
134
|
name: hirb
|
135
135
|
requirement: !ruby/object:Gem::Requirement
|
136
136
|
requirements:
|
137
|
-
- - "
|
137
|
+
- - "~>"
|
138
138
|
- !ruby/object:Gem::Version
|
139
|
-
version: '0'
|
139
|
+
version: '0.7'
|
140
140
|
type: :development
|
141
141
|
prerelease: false
|
142
142
|
version_requirements: !ruby/object:Gem::Requirement
|
143
143
|
requirements:
|
144
|
-
- - "
|
144
|
+
- - "~>"
|
145
145
|
- !ruby/object:Gem::Version
|
146
|
-
version: '0'
|
146
|
+
version: '0.7'
|
147
147
|
- !ruby/object:Gem::Dependency
|
148
148
|
name: awesome_print
|
149
149
|
requirement: !ruby/object:Gem::Requirement
|
150
150
|
requirements:
|
151
|
-
- - "
|
151
|
+
- - "~>"
|
152
152
|
- !ruby/object:Gem::Version
|
153
|
-
version: '
|
153
|
+
version: '1.7'
|
154
154
|
type: :development
|
155
155
|
prerelease: false
|
156
156
|
version_requirements: !ruby/object:Gem::Requirement
|
157
157
|
requirements:
|
158
|
-
- - "
|
158
|
+
- - "~>"
|
159
159
|
- !ruby/object:Gem::Version
|
160
|
-
version: '
|
160
|
+
version: '1.7'
|
161
161
|
- !ruby/object:Gem::Dependency
|
162
162
|
name: rspec
|
163
163
|
requirement: !ruby/object:Gem::Requirement
|
164
164
|
requirements:
|
165
165
|
- - "~>"
|
166
166
|
- !ruby/object:Gem::Version
|
167
|
-
version: '3.
|
167
|
+
version: '3.5'
|
168
168
|
type: :development
|
169
169
|
prerelease: false
|
170
170
|
version_requirements: !ruby/object:Gem::Requirement
|
171
171
|
requirements:
|
172
172
|
- - "~>"
|
173
173
|
- !ruby/object:Gem::Version
|
174
|
-
version: '3.
|
175
|
-
- !ruby/object:Gem::Dependency
|
176
|
-
name: rb-fsevent
|
177
|
-
requirement: !ruby/object:Gem::Requirement
|
178
|
-
requirements:
|
179
|
-
- - ">="
|
180
|
-
- !ruby/object:Gem::Version
|
181
|
-
version: '0'
|
182
|
-
type: :development
|
183
|
-
prerelease: false
|
184
|
-
version_requirements: !ruby/object:Gem::Requirement
|
185
|
-
requirements:
|
186
|
-
- - ">="
|
187
|
-
- !ruby/object:Gem::Version
|
188
|
-
version: '0'
|
174
|
+
version: '3.5'
|
189
175
|
- !ruby/object:Gem::Dependency
|
190
176
|
name: guard-rspec
|
191
177
|
requirement: !ruby/object:Gem::Requirement
|
192
178
|
requirements:
|
193
|
-
- - "
|
194
|
-
- !ruby/object:Gem::Version
|
195
|
-
version: '0'
|
196
|
-
type: :development
|
197
|
-
prerelease: false
|
198
|
-
version_requirements: !ruby/object:Gem::Requirement
|
199
|
-
requirements:
|
200
|
-
- - ">="
|
201
|
-
- !ruby/object:Gem::Version
|
202
|
-
version: '0'
|
203
|
-
- !ruby/object:Gem::Dependency
|
204
|
-
name: terminal-notifier
|
205
|
-
requirement: !ruby/object:Gem::Requirement
|
206
|
-
requirements:
|
207
|
-
- - ">="
|
208
|
-
- !ruby/object:Gem::Version
|
209
|
-
version: '0'
|
210
|
-
type: :development
|
211
|
-
prerelease: false
|
212
|
-
version_requirements: !ruby/object:Gem::Requirement
|
213
|
-
requirements:
|
214
|
-
- - ">="
|
215
|
-
- !ruby/object:Gem::Version
|
216
|
-
version: '0'
|
217
|
-
- !ruby/object:Gem::Dependency
|
218
|
-
name: terminal-notifier-guard
|
219
|
-
requirement: !ruby/object:Gem::Requirement
|
220
|
-
requirements:
|
221
|
-
- - ">="
|
179
|
+
- - "~>"
|
222
180
|
- !ruby/object:Gem::Version
|
223
|
-
version: '
|
181
|
+
version: '4.7'
|
224
182
|
type: :development
|
225
183
|
prerelease: false
|
226
184
|
version_requirements: !ruby/object:Gem::Requirement
|
227
185
|
requirements:
|
228
|
-
- - "
|
186
|
+
- - "~>"
|
229
187
|
- !ruby/object:Gem::Version
|
230
|
-
version: '
|
188
|
+
version: '4.7'
|
231
189
|
- !ruby/object:Gem::Dependency
|
232
190
|
name: rubocop
|
233
191
|
requirement: !ruby/object:Gem::Requirement
|
234
192
|
requirements:
|
235
193
|
- - "~>"
|
236
194
|
- !ruby/object:Gem::Version
|
237
|
-
version: '0.
|
195
|
+
version: '0.44'
|
238
196
|
type: :development
|
239
197
|
prerelease: false
|
240
198
|
version_requirements: !ruby/object:Gem::Requirement
|
241
199
|
requirements:
|
242
200
|
- - "~>"
|
243
201
|
- !ruby/object:Gem::Version
|
244
|
-
version: '0.
|
202
|
+
version: '0.44'
|
245
203
|
- !ruby/object:Gem::Dependency
|
246
204
|
name: codeclimate-test-reporter
|
247
205
|
requirement: !ruby/object:Gem::Requirement
|
248
206
|
requirements:
|
249
|
-
- - "
|
207
|
+
- - "~>"
|
250
208
|
- !ruby/object:Gem::Version
|
251
|
-
version: '0'
|
209
|
+
version: '0.6'
|
252
210
|
type: :development
|
253
211
|
prerelease: false
|
254
212
|
version_requirements: !ruby/object:Gem::Requirement
|
255
213
|
requirements:
|
256
|
-
- - "
|
214
|
+
- - "~>"
|
257
215
|
- !ruby/object:Gem::Version
|
258
|
-
version: '0'
|
259
|
-
description:
|
216
|
+
version: '0.6'
|
217
|
+
description:
|
260
218
|
email:
|
261
219
|
- brooke@alchemists.io
|
262
220
|
executables: []
|
@@ -268,12 +226,11 @@ files:
|
|
268
226
|
- LICENSE.md
|
269
227
|
- README.md
|
270
228
|
- lib/refinements.rb
|
271
|
-
- lib/refinements/
|
272
|
-
- lib/refinements/
|
273
|
-
- lib/refinements/
|
229
|
+
- lib/refinements/arrays.rb
|
230
|
+
- lib/refinements/big_decimals.rb
|
231
|
+
- lib/refinements/hashes.rb
|
274
232
|
- lib/refinements/identity.rb
|
275
|
-
- lib/refinements/
|
276
|
-
- lib/tasks/console.rake
|
233
|
+
- lib/refinements/strings.rb
|
277
234
|
- lib/tasks/rspec.rake
|
278
235
|
- lib/tasks/rubocop.rake
|
279
236
|
homepage: https://github.com/bkuhlmann/refinements
|
@@ -296,8 +253,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
296
253
|
version: '0'
|
297
254
|
requirements: []
|
298
255
|
rubyforge_project:
|
299
|
-
rubygems_version: 2.6.
|
256
|
+
rubygems_version: 2.6.8
|
300
257
|
signing_key:
|
301
258
|
specification_version: 4
|
302
|
-
summary: Provides a collection of refinements
|
259
|
+
summary: Provides a collection of refinements to core Ruby objects.
|
303
260
|
test_files: []
|
metadata.gz.sig
CHANGED
Binary file
|
@@ -1,21 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Refinements
|
4
|
-
# Refinements for Strings.
|
5
|
-
module StringExtensions
|
6
|
-
refine String do
|
7
|
-
def camelcase
|
8
|
-
return self if self =~ /\A\w+\z/ && self =~ /[A-Z]/ && self =~ /[a-z]/
|
9
|
-
snakecase.split("_").map(&:capitalize).join ""
|
10
|
-
end
|
11
|
-
|
12
|
-
def snakecase
|
13
|
-
downcase.gsub(/[^a-z]/, "_").squeeze "_"
|
14
|
-
end
|
15
|
-
|
16
|
-
def titleize
|
17
|
-
snakecase.split("_").map(&:capitalize).join " "
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|