corefines 1.11.0 → 1.11.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/CHANGELOG.adoc +78 -0
- data/LICENSE +21 -0
- data/README.adoc +215 -0
- data/Rakefile +23 -0
- data/lib/corefines/hash.rb +21 -9
- data/lib/corefines/version.rb +1 -1
- metadata +11 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: e1786b22dad695d512f646e225334eeae9ecb2621a067461dc5c01151137ead0
|
4
|
+
data.tar.gz: 128135d2233f9b74976347ee1bbb4cae8b91327227aa4ed0e13432011f51d689
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5159cba9976f0b56054472b43a3f0c28ce100eda5e6efe79896b97fdba42f078edc91327066b7dd99c3e9698b87c7ae643ad6989057ccf9d1b728f315bfd990d
|
7
|
+
data.tar.gz: a0158e47cc535f3e604a992ffac923812b1df13af300a2b91c56e77ab9a1983a374a5f630dfb11f005bbfd29926ca0504a17c976504b7feb0abf206a5b6f7b47
|
data/CHANGELOG.adoc
ADDED
@@ -0,0 +1,78 @@
|
|
1
|
+
= Corefines Changelog
|
2
|
+
:repo-uri: https://github.com/jirutka/corefines
|
3
|
+
:doc-base-url: http://www.rubydoc.info/github/jirutka/corefines/Corefines
|
4
|
+
:issue-uri: {repo-uri}/issues
|
5
|
+
|
6
|
+
|
7
|
+
== 1.11.1 (2021-07-21)
|
8
|
+
|
9
|
+
* Fix String#rekey with symbol proc (e.g. `&:to_s`) failing on Ruby 3.0.
|
10
|
+
|
11
|
+
|
12
|
+
== 1.11.0 (2017-09-15)
|
13
|
+
|
14
|
+
* Add new refinement {doc-base-url}/Hash/Recurse[Hash#recurse].
|
15
|
+
* Add new refinement {doc-base-url}/Hash/FlatMap[Hash#flat_map].
|
16
|
+
|
17
|
+
|
18
|
+
== 1.10.0 (2017-07-26)
|
19
|
+
|
20
|
+
* Replace deprecated `Fixnum` with `Integer`.
|
21
|
+
|
22
|
+
|
23
|
+
== 1.9.0 (2016-02-03)
|
24
|
+
|
25
|
+
* Add new refinement {doc-base-url}/Enumerable/MapBy[Enumerable#map_by].
|
26
|
+
|
27
|
+
|
28
|
+
== 1.8.0 (2015-07-06)
|
29
|
+
|
30
|
+
* Add new refinement {doc-base-url}/Class/Descendants[Class#descendants].
|
31
|
+
|
32
|
+
|
33
|
+
== 1.7.0 (2015-07-05)
|
34
|
+
|
35
|
+
* Add new refinement {doc-base-url}/Enumerable/MapTo[Enumerable#map_to].
|
36
|
+
* Add new refinement {doc-base-url}/Array/Wrap[Array#wrap].
|
37
|
+
* Add new refinement {doc-base-url}/Enumerable/Many[Enumerable#many?].
|
38
|
+
|
39
|
+
|
40
|
+
== 1.6.0 (2015-05-16)
|
41
|
+
|
42
|
+
* Add new refinement {doc-base-url}/String/Camelcase[String#camelcase].
|
43
|
+
* Add new refinement {doc-base-url}/String/SnakeCase[String#snake_case].
|
44
|
+
|
45
|
+
|
46
|
+
== 1.5.0 (2015-05-03)
|
47
|
+
|
48
|
+
* Rename String refinement `#to_regexp` to `#to_re` to avoid bug https://bugs.ruby-lang.org/issues/11117[#11117] in MRI.
|
49
|
+
|
50
|
+
|
51
|
+
== 1.4.0 (2015-05-03)
|
52
|
+
|
53
|
+
* Add new refinement {doc-base-url}/String/ForceUTF8[String#force_utf8].
|
54
|
+
|
55
|
+
|
56
|
+
== 1.3.0 (2015-04-29)
|
57
|
+
|
58
|
+
* Add new refinement {doc-base-url}/String/ToRegexp[String#to_regexp].
|
59
|
+
* Add new refinement {doc-base-url}/String/RelativePathFrom[String#relative_path_from].
|
60
|
+
* Add new refinement {doc-base-url}/Hash/Except[Hash#except].
|
61
|
+
* Add new refinement {doc-base-url}/Hash/Only[Hash#only].
|
62
|
+
|
63
|
+
|
64
|
+
== 1.2.0 (2015-04-27)
|
65
|
+
|
66
|
+
* Add new refinement {doc-base-url}/String/Indent[String#indent].
|
67
|
+
|
68
|
+
|
69
|
+
== 1.1.0 (2015-04-25)
|
70
|
+
|
71
|
+
* Add new refinement {doc-base-url}/String/ToB[String#to_b].
|
72
|
+
* Change alias for operator `+` from `OpPlus` to `OpAdd` and for operator `-` from `OpMinus` to `OpSub`.
|
73
|
+
* Support operators `+@` (alias `OpPlus`) and `-@` (alias `OpMinus`).
|
74
|
+
|
75
|
+
|
76
|
+
== 1.0.0 (2015-04-02)
|
77
|
+
|
78
|
+
The first stable release.
|
data/LICENSE
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
The MIT License
|
2
|
+
|
3
|
+
Copyright 2015-2017 Jakub Jirutka <jakub@jirutka.cz>.
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in
|
13
|
+
all copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
21
|
+
THE SOFTWARE.
|
data/README.adoc
ADDED
@@ -0,0 +1,215 @@
|
|
1
|
+
= Corefines
|
2
|
+
Jakub Jirutka <https://github.com/jirutka[@jirutka]>
|
3
|
+
:source-language: ruby
|
4
|
+
// custom
|
5
|
+
:gem-name: corefines
|
6
|
+
:gem-version: 1.11.1
|
7
|
+
:gh-name: jirutka/{gem-name}
|
8
|
+
:gh-branch: master
|
9
|
+
:badge-style: flat
|
10
|
+
:doc-base-url: http://www.rubydoc.info/github/{gh-name}/{gh-branch}/Corefines
|
11
|
+
|
12
|
+
ifdef::env-github[]
|
13
|
+
image:https://img.shields.io/travis/{gh-name}/{gh-branch}.svg?style={badge-style}[Build Status, link="https://travis-ci.org/{gh-name}"]
|
14
|
+
image:https://img.shields.io/codeclimate/coverage/github/{gh-name}.svg?style={badge-style}[Test Coverage, link="https://codeclimate.com/github/{gh-name}"]
|
15
|
+
image:https://img.shields.io/codeclimate/github/{gh-name}.svg?style={badge-style}[Code Climate, link="https://codeclimate.com/github/{gh-name}"]
|
16
|
+
image:https://img.shields.io/gem/v/{gem-name}.svg?style={badge-style}[Gem Version, link="https://rubygems.org/gems/{gem-name}"]
|
17
|
+
image:https://img.shields.io/badge/yard-docs-blue.svg?style={badge-style}[Yard Docs, link="http://www.rubydoc.info/github/{gh-name}/{gh-branch}"]
|
18
|
+
endif::env-github[]
|
19
|
+
|
20
|
+
Corefines is a collection of general purpose _refinements_ for extending the core capabilities of Ruby’s built-in classes.
|
21
|
+
It also provides a <<compatibility-mode>> for older Ruby versions and alternative Ruby implementations that don’t support refinements (yet).
|
22
|
+
|
23
|
+
|
24
|
+
== Why refinements?
|
25
|
+
|
26
|
+
Extending core classes with so called monkey-paching pollutes the _global_ scope, so it affects all files on the `$LOAD_PATH`, i.e. whole application including used gems.
|
27
|
+
It’s not usually so big deal when you’re doing it in your application, but it’s very dangerous when used in a gem (library).
|
28
|
+
This can result in strange and hard to debug behaviour if another gem overrides a core class with the same method as your gem, but different implementation, and both gems are used together.
|
29
|
+
|
30
|
+
Refinements basically allows you to put monkey patches in an isolated namespace, so that your changes to core classes don’t affect other code.
|
31
|
+
|
32
|
+
TODO
|
33
|
+
|
34
|
+
|
35
|
+
== Installation
|
36
|
+
|
37
|
+
Add this line to your application’s Gemfile:
|
38
|
+
|
39
|
+
[source, subs="+attributes"]
|
40
|
+
gem '{gem-name}', '~> {gem-version}'
|
41
|
+
|
42
|
+
or to your gemspec:
|
43
|
+
|
44
|
+
[source, subs="+attributes"]
|
45
|
+
s.add_runtime_dependency '{gem-name}', '~> {gem-version}'
|
46
|
+
|
47
|
+
and then execute:
|
48
|
+
|
49
|
+
[source, sh]
|
50
|
+
$ bundle install
|
51
|
+
|
52
|
+
|
53
|
+
== Using
|
54
|
+
|
55
|
+
First, you must require `corefines` prior using:
|
56
|
+
|
57
|
+
[source]
|
58
|
+
require 'corefines'
|
59
|
+
|
60
|
+
This will _not_ activate any extensions (just register them), even when running in compatibility mode.
|
61
|
+
Extensions (refinements) are activated selectively with the method http://ruby-doc.org/core-2.2.0/Module.html#method-i-using[`using`].
|
62
|
+
|
63
|
+
Refinements are organized into modules by class which they refine, and further into submodules for individual methods.
|
64
|
+
When an extension refines multiple classes, then it’s included in a module named after their nearest common ancestor (superclass).
|
65
|
+
|
66
|
+
[source, plain]
|
67
|
+
Corefines::<CLASS>::<METHOD>
|
68
|
+
|
69
|
+
A single extension can be imported into the current scope classically, e.g.:
|
70
|
+
|
71
|
+
[source]
|
72
|
+
using Corefines::Object::ThenIf
|
73
|
+
|
74
|
+
or preferably using its “alias”:
|
75
|
+
|
76
|
+
[source]
|
77
|
+
using Corefines::Object::then_if
|
78
|
+
|
79
|
+
If you want to include all extensions for the class, then you can just import the parent module, e.g.:
|
80
|
+
|
81
|
+
[source]
|
82
|
+
using Corefines::Object
|
83
|
+
|
84
|
+
But more often you want to include multiple extensions for the class, but not all of them, e.g.:
|
85
|
+
|
86
|
+
[source]
|
87
|
+
using Corefines::Object::then_if
|
88
|
+
using Corefines::Object::in?
|
89
|
+
|
90
|
+
this can be abbreviated to:
|
91
|
+
|
92
|
+
[source]
|
93
|
+
using Corefines::Object[:then_if, :in?]
|
94
|
+
|
95
|
+
If you feel that _Corefines_ is too long, then you can also use abbreviation _CF_ instead:
|
96
|
+
|
97
|
+
[source]
|
98
|
+
using CF::Object::then_if
|
99
|
+
|
100
|
+
Refinements can be activated (with `using`) at top-level (per file), inside a class, module or a method.
|
101
|
+
|
102
|
+
|
103
|
+
== Compatibility mode
|
104
|
+
|
105
|
+
Refinements are still a young feature, so there’s a possibility that your gem or application will have to work on a Ruby platform that doesn’t fully support refinements yet.
|
106
|
+
|
107
|
+
The main Ruby implementation, https://en.wikipedia.org/wiki/Ruby_MRI[MRI] (aka CRuby), supports refinements since version 2.1.0 (https://www.ruby-lang.org/en/news/2013/12/25/ruby-2-1-0-is-released/[released in 25 Dec 2013]).
|
108
|
+
footnote:[Actually, refinements has been introduced to MRI in 2.0.0, as an experimental feature. However, its design and implementation has been changed then, so refinements in 2.0.x and 2.1+ behaves quite differently.]
|
109
|
+
Version 2.0.0 (https://www.ruby-lang.org/en/news/2013/02/24/ruby-2-0-0-p0-is-released/[released in 24 Feb 2013]) is still supported though.
|
110
|
+
http://www.jruby.org/[JRuby] doesn’t support refinements yet, it’s planned in the upcoming version 9.0.0.0 (https://github.com/jruby/jruby/issues/1062[#1062]).
|
111
|
+
http://rubini.us/[Rubinius] also doesn’t support refinements yet.
|
112
|
+
|
113
|
+
This gem is a collection of pure refinements, and yet, it works even on older Rubies that don’t support refinements.
|
114
|
+
Wait… how?
|
115
|
+
Well, when you use the gem with an older Ruby, it’s actually cheating.
|
116
|
+
Instead of locally scoped changes, it falls back to global monkey-patching.
|
117
|
+
|
118
|
+
The Corefines gem adds `refine` and `using` methods to the core classes, so you can define and use refinements just like in newer Rubies.
|
119
|
+
But internally it works very differently.
|
120
|
+
The `refine` method adds a given block to a collection of pending “refinements” inside its module.
|
121
|
+
When `using` is called _first time_ for the module, it _evaluates_ module’s “refinements” in context of the target classes (i.e. do a monkey-patch).
|
122
|
+
|
123
|
+
Not ideal indeed, but probably the best of what we can achieve.
|
124
|
+
|
125
|
+
|
126
|
+
== List of refinements
|
127
|
+
|
128
|
+
* {doc-base-url}/Array[Array]
|
129
|
+
** {doc-base-url}/Array/Second[#second]
|
130
|
+
** {doc-base-url}/Array/Third[#third]
|
131
|
+
** {doc-base-url}/Array/Wrap[.wrap]
|
132
|
+
* {doc-base-url}/Class[Class]
|
133
|
+
** {doc-base-url}/Class/Descendants[#descendants]
|
134
|
+
* {doc-base-url}/Enumerable[Enumerable]
|
135
|
+
** {doc-base-url}/Enumerable/IndexBy[#index_by]
|
136
|
+
** {doc-base-url}/Enumerable/Many[#many?]
|
137
|
+
** {doc-base-url}/Enumerable/MapBy[#map_by]
|
138
|
+
** {doc-base-url}/Enumerable/MapSend[#map_send]
|
139
|
+
** {doc-base-url}/Enumerable/MapTo[#map_to]
|
140
|
+
* {doc-base-url}/Hash[Hash]
|
141
|
+
** {doc-base-url}/Hash/OpAdd[#+]
|
142
|
+
** {doc-base-url}/Hash/Compact[#compact]
|
143
|
+
** {doc-base-url}/Hash/Compact[#compact!]
|
144
|
+
** {doc-base-url}/Hash/Except[#except]
|
145
|
+
** {doc-base-url}/Hash/Except[#except!]
|
146
|
+
** {doc-base-url}/Hash/FlatMap[#flat_map]
|
147
|
+
** {doc-base-url}/Hash/Only[#only]
|
148
|
+
** {doc-base-url}/Hash/Only[#only!]
|
149
|
+
** {doc-base-url}/Hash/Recurse[#recurse]
|
150
|
+
** {doc-base-url}/Hash/Rekey[#rekey]
|
151
|
+
** {doc-base-url}/Hash/Rekey[#rekey!]
|
152
|
+
** {doc-base-url}/Hash/SymbolizeKeys[#symbolize_keys]
|
153
|
+
** {doc-base-url}/Hash/SymbolizeKeys[#symbolize_keys!]
|
154
|
+
* {doc-base-url}/Module[Module]
|
155
|
+
** {doc-base-url}/Module/AliasClassMethod[#alias_class_method]
|
156
|
+
** {doc-base-url}/Module/AliasMethodChain[#alias_method_chain]
|
157
|
+
* {doc-base-url}/Object[Object]
|
158
|
+
** {doc-base-url}/Object/Blank[#blank?]
|
159
|
+
** {doc-base-url}/Object/DeepDup[#deep_dup]
|
160
|
+
** {doc-base-url}/Object/Else[#else]
|
161
|
+
** {doc-base-url}/Object/In[#in?]
|
162
|
+
** {doc-base-url}/Object/InstanceValues[#instance_values]
|
163
|
+
** {doc-base-url}/Object/Blank[#presence]
|
164
|
+
** {doc-base-url}/Object/Then[#then]
|
165
|
+
** {doc-base-url}/Object/ThenIf[#then_if]
|
166
|
+
** {doc-base-url}/Object/Try[#try]
|
167
|
+
** {doc-base-url}/Object/Try[#try!]
|
168
|
+
* {doc-base-url}/String[String]
|
169
|
+
** {doc-base-url}/String/Camelcase[#camelcase]
|
170
|
+
** {doc-base-url}/String/Color[#color]
|
171
|
+
** {doc-base-url}/String/Concat[#concat!]
|
172
|
+
** {doc-base-url}/String/Decolor[#decolor]
|
173
|
+
** {doc-base-url}/String/ForceUTF8[#force_utf8]
|
174
|
+
** {doc-base-url}/String/ForceUTF8[#force_utf8!]
|
175
|
+
** {doc-base-url}/String/Indent[#indent]
|
176
|
+
** {doc-base-url}/String/RelativePathFrom[#relative_path_from]
|
177
|
+
** {doc-base-url}/String/Remove[#remove]
|
178
|
+
** {doc-base-url}/String/SnakeCase[#snake_case]
|
179
|
+
** {doc-base-url}/String/ToB[#to_b]
|
180
|
+
** {doc-base-url}/String/ToRe[#to_re]
|
181
|
+
** {doc-base-url}/String/Unindent[#unindent] (alias `#strip_heredoc`)
|
182
|
+
* {doc-base-url}/Symbol[Symbol]
|
183
|
+
** {doc-base-url}/Symbol/Call[#call]
|
184
|
+
|
185
|
+
|
186
|
+
== Acknowledgement
|
187
|
+
|
188
|
+
Most of the extension methods are based on, or highly inspired from:
|
189
|
+
|
190
|
+
* https://github.com/rails/rails/tree/master/activesupport[Active Support (Ruby extensions)]
|
191
|
+
* https://github.com/rubyworks/facets[Ruby Facets]
|
192
|
+
* https://github.com/gregwebs/methodchain[methodchain]
|
193
|
+
* https://github.com/fazibear/colorize[colorize]
|
194
|
+
* https://github.com/seamusabshere/to_regexp[to_regexp]
|
195
|
+
|
196
|
+
Very useful articles about refinements and how to “trick” them:
|
197
|
+
|
198
|
+
* https://www.new-bamboo.co.uk/blog/2014/02/05/refinements-under-the-knife/[
|
199
|
+
Refinements under the knife] by https://github.com/leemachin[@leemachin]
|
200
|
+
* http://qiita.com/joker1007/items/68d066a12bc763bd2cb4[Refinement関係の小技とできない事をまとめてみた] by https://github.com/joker1007[@joker1007]
|
201
|
+
|
202
|
+
|
203
|
+
== Contributing
|
204
|
+
|
205
|
+
. Fork it.
|
206
|
+
. Create your feature branch (`git checkout -b my-new-feature`).
|
207
|
+
. Commit your changes (`git commit -am 'Add some feature'`).
|
208
|
+
. Push to the branch (`git push origin my-new-feature`).
|
209
|
+
. Create a new Pull Request.
|
210
|
+
|
211
|
+
|
212
|
+
== License
|
213
|
+
|
214
|
+
This project is licensed under http://opensource.org/licenses/MIT/[MIT License].
|
215
|
+
For the full text of the license, see the link:LICENSE[LICENSE] file.
|
data/Rakefile
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'bundler/gem_tasks'
|
2
|
+
|
3
|
+
begin
|
4
|
+
require 'rspec/core/rake_task'
|
5
|
+
|
6
|
+
RSpec::Core::RakeTask.new(:spec)
|
7
|
+
|
8
|
+
task :test => :spec
|
9
|
+
task :default => :spec
|
10
|
+
|
11
|
+
rescue LoadError => e
|
12
|
+
warn "#{e.path} is not available"
|
13
|
+
end
|
14
|
+
|
15
|
+
begin
|
16
|
+
require 'yard'
|
17
|
+
|
18
|
+
# options are defined in .yardopts
|
19
|
+
YARD::Rake::YardocTask.new(:yard)
|
20
|
+
|
21
|
+
rescue LoadError => e
|
22
|
+
warn "#{e.path} is not available"
|
23
|
+
end
|
data/lib/corefines/hash.rb
CHANGED
@@ -179,7 +179,11 @@ module Corefines
|
|
179
179
|
#
|
180
180
|
# @example
|
181
181
|
# hash = {"a" => 1, "b" => {"c" => {"e" => 5}, "d" => 4}}
|
182
|
-
#
|
182
|
+
#
|
183
|
+
# hash.recurse { |h| h.symbolize_keys } # => {a: 1, b: {c: {e: 5}, d: 4}}
|
184
|
+
# hash # => {"a" => 1, "b" => {"c" => {"e" => 5}, "d" => 4}}
|
185
|
+
#
|
186
|
+
# hash.recurse { |h| h.symbolize_keys! } # => {a: 1, b: {c: {e: 5}, d: 4}}
|
183
187
|
# hash # => {a: 1, b: {c: {e: 5}, d: 4}}
|
184
188
|
#
|
185
189
|
# @yield [Hash] gives this hash and every sub-hash (recursively).
|
@@ -243,20 +247,28 @@ module Corefines
|
|
243
247
|
refine ::Hash do
|
244
248
|
def rekey(key_map = nil, &block)
|
245
249
|
fail ArgumentError, "provide key_map, or block, not both" if key_map && block
|
246
|
-
block = ->(k, _) { k.to_sym rescue k } if !key_map && !block
|
247
250
|
|
248
251
|
# Note: self.dup is used to preserve the default_proc.
|
249
|
-
if
|
250
|
-
|
251
|
-
|
252
|
+
if key_map
|
253
|
+
key_map.each_with_object(dup) do |(from, to), hash|
|
254
|
+
hash[to] = hash.delete(from) if hash.key? from
|
255
|
+
end
|
256
|
+
else
|
257
|
+
transform_key = if !block
|
258
|
+
->(k, _) { k.to_sym rescue k }
|
259
|
+
elsif block.arity.abs == 1 || block.lambda? && block.arity != 2
|
260
|
+
# This is needed for "symbol procs" (e.g. &:to_s). It behaves
|
261
|
+
# differently since Ruby 3.0!
|
262
|
+
# Ruby <3.0: block.arity => -1, block.lambda? => false
|
263
|
+
# Ruby 3.0: block.arity => -2, block.lambda? => true
|
264
|
+
->(k, _) { block[k] }
|
265
|
+
else
|
266
|
+
block
|
267
|
+
end
|
252
268
|
|
253
269
|
each_with_object(dup.clear) do |(key, value), hash|
|
254
270
|
hash[ transform_key[key, value] ] = value
|
255
271
|
end
|
256
|
-
else
|
257
|
-
key_map.each_with_object(dup) do |(from, to), hash|
|
258
|
-
hash[to] = hash.delete(from) if hash.key? from
|
259
|
-
end
|
260
272
|
end
|
261
273
|
end
|
262
274
|
|
data/lib/corefines/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: corefines
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.11.
|
4
|
+
version: 1.11.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jakub Jirutka
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-07-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: asciidoctor
|
@@ -44,14 +44,14 @@ dependencies:
|
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
47
|
+
version: '12.0'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
54
|
+
version: '12.0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: rspec
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -86,14 +86,14 @@ dependencies:
|
|
86
86
|
requirements:
|
87
87
|
- - "~>"
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version: '0.
|
89
|
+
version: '0.9'
|
90
90
|
type: :development
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
94
|
- - "~>"
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version: '0.
|
96
|
+
version: '0.9'
|
97
97
|
description: |
|
98
98
|
Corefines is a collection of general purpose refinements for extending the core
|
99
99
|
capabilities of Ruby's built-in classes. It also provides a compatibility mode
|
@@ -104,6 +104,10 @@ executables: []
|
|
104
104
|
extensions: []
|
105
105
|
extra_rdoc_files: []
|
106
106
|
files:
|
107
|
+
- CHANGELOG.adoc
|
108
|
+
- LICENSE
|
109
|
+
- README.adoc
|
110
|
+
- Rakefile
|
107
111
|
- lib/corefines.rb
|
108
112
|
- lib/corefines/array.rb
|
109
113
|
- lib/corefines/class.rb
|
@@ -181,7 +185,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
181
185
|
version: '0'
|
182
186
|
requirements: []
|
183
187
|
rubyforge_project:
|
184
|
-
rubygems_version: 2.
|
188
|
+
rubygems_version: 2.7.3
|
185
189
|
signing_key:
|
186
190
|
specification_version: 4
|
187
191
|
summary: A collection of refinements for Ruby core classes.
|