lite-ruby 1.1.5 → 1.1.10
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
- data/.rubocop.yml +1 -0
- data/CHANGELOG.md +30 -0
- data/Gemfile.lock +33 -30
- data/docs/ARRAY.md +19 -1
- data/docs/ENUMERABLE.md +13 -0
- data/docs/OPEN_STRUCT.md +0 -20
- data/docs/STRUCT.md +1 -0
- data/docs/TIME.md +8 -0
- data/lib/lite/ruby/array.rb +6 -2
- data/lib/lite/ruby/enumerable.rb +4 -8
- data/lib/lite/ruby/hash.rb +2 -2
- data/lib/lite/ruby/integer.rb +6 -2
- data/lib/lite/ruby/object.rb +2 -2
- data/lib/lite/ruby/open_struct.rb +10 -13
- data/lib/lite/ruby/range.rb +2 -2
- data/lib/lite/ruby/safe/array.rb +3 -0
- data/lib/lite/ruby/safe/enumerable.rb +12 -1
- data/lib/lite/ruby/string.rb +2 -2
- data/lib/lite/ruby/struct.rb +1 -1
- data/lib/lite/ruby/time.rb +6 -2
- data/lib/lite/ruby/version.rb +1 -1
- data/lite-ruby.gemspec +1 -0
- metadata +17 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 63d0d01fd2b88f0a9362009571181cd8d13f1c504662138d2c5b811cf1e8282c
|
4
|
+
data.tar.gz: b1f8de0ba8ab9c9516a59e949108d476527d285d0397c392cd03968f771e032c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: da98aab18c440e3b346ace43c94773688930837ce9df4ada5ecab7e8512e957e63cb126103b5d7e4dceaa3d124af0983797dc352a53767b1791fa83389ed9cf4
|
7
|
+
data.tar.gz: 56a911edc10244b5316665eabb0b8b68d2c572362e28a7a3b60ca6760008875c9736f92904f70b1c0367cb503f7a6c9eb9459464273c15bfcc26364caf774221
|
data/.rubocop.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -6,6 +6,36 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
6
6
|
|
7
7
|
## [Unreleased]
|
8
8
|
|
9
|
+
## [1.1.10] - 2021-06-21
|
10
|
+
### Changed
|
11
|
+
- Struct `[]` to be accessible via `attributes`
|
12
|
+
### Removed
|
13
|
+
- OpenStruct `[]` and `[]=` existing methods
|
14
|
+
|
15
|
+
## [1.1.9] - 2021-05-26
|
16
|
+
### Added
|
17
|
+
- Added Array => `match`
|
18
|
+
- Added Array => `strip` to `compact_blank` alias
|
19
|
+
- Added Enumerable => `pick`
|
20
|
+
### Changed
|
21
|
+
- Move safe requires to bottom of file
|
22
|
+
|
23
|
+
## [1.1.8] - 2021-07-05
|
24
|
+
### Changed
|
25
|
+
- Linter fixes
|
26
|
+
|
27
|
+
## [1.1.7] - 2021-03-04
|
28
|
+
### Added
|
29
|
+
- Added Integer => `SQL_SMALLINT`
|
30
|
+
- Added Integer => `SQL_INTEGER`
|
31
|
+
- Added Integer => `SQL_BIGINT`
|
32
|
+
|
33
|
+
## [1.1.6] - 2021-02-17
|
34
|
+
### Added
|
35
|
+
- Added Time => `monotonic`
|
36
|
+
### Changed
|
37
|
+
- Time `elapse` to use monotonic time
|
38
|
+
|
9
39
|
## [1.1.5] - 2021-02-16
|
10
40
|
### Added
|
11
41
|
- Added Array => `divergence`
|
data/Gemfile.lock
CHANGED
@@ -1,25 +1,25 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
lite-ruby (1.1.
|
4
|
+
lite-ruby (1.1.10)
|
5
5
|
|
6
6
|
GEM
|
7
7
|
remote: https://rubygems.org/
|
8
8
|
specs:
|
9
|
-
actionpack (6.1.2
|
10
|
-
actionview (= 6.1.2
|
11
|
-
activesupport (= 6.1.2
|
9
|
+
actionpack (6.1.3.2)
|
10
|
+
actionview (= 6.1.3.2)
|
11
|
+
activesupport (= 6.1.3.2)
|
12
12
|
rack (~> 2.0, >= 2.0.9)
|
13
13
|
rack-test (>= 0.6.3)
|
14
14
|
rails-dom-testing (~> 2.0)
|
15
15
|
rails-html-sanitizer (~> 1.0, >= 1.2.0)
|
16
|
-
actionview (6.1.2
|
17
|
-
activesupport (= 6.1.2
|
16
|
+
actionview (6.1.3.2)
|
17
|
+
activesupport (= 6.1.3.2)
|
18
18
|
builder (~> 3.1)
|
19
19
|
erubi (~> 1.4)
|
20
20
|
rails-dom-testing (~> 2.0)
|
21
21
|
rails-html-sanitizer (~> 1.1, >= 1.2.0)
|
22
|
-
activesupport (6.1.2
|
22
|
+
activesupport (6.1.3.2)
|
23
23
|
concurrent-ruby (~> 1.0, >= 1.0.2)
|
24
24
|
i18n (>= 1.6, < 2)
|
25
25
|
minitest (>= 5.1)
|
@@ -28,7 +28,7 @@ GEM
|
|
28
28
|
ast (2.4.2)
|
29
29
|
builder (3.2.4)
|
30
30
|
colorize (0.8.1)
|
31
|
-
concurrent-ruby (1.1.
|
31
|
+
concurrent-ruby (1.1.9)
|
32
32
|
crass (1.0.6)
|
33
33
|
diff-lcs (1.4.4)
|
34
34
|
erubi (1.10.0)
|
@@ -38,19 +38,19 @@ GEM
|
|
38
38
|
generator_spec (0.9.4)
|
39
39
|
activesupport (>= 3.0.0)
|
40
40
|
railties (>= 3.0.0)
|
41
|
-
i18n (1.8.
|
41
|
+
i18n (1.8.10)
|
42
42
|
concurrent-ruby (~> 1.0)
|
43
|
-
loofah (2.
|
43
|
+
loofah (2.10.0)
|
44
44
|
crass (~> 1.0.2)
|
45
45
|
nokogiri (>= 1.5.9)
|
46
46
|
method_source (1.0.0)
|
47
|
-
mini_portile2 (2.5.
|
48
|
-
minitest (5.14.
|
49
|
-
nokogiri (1.11.
|
47
|
+
mini_portile2 (2.5.3)
|
48
|
+
minitest (5.14.4)
|
49
|
+
nokogiri (1.11.7)
|
50
50
|
mini_portile2 (~> 2.5.0)
|
51
51
|
racc (~> 1.4)
|
52
52
|
parallel (1.20.1)
|
53
|
-
parser (3.0.
|
53
|
+
parser (3.0.1.1)
|
54
54
|
ast (~> 2.4.1)
|
55
55
|
racc (1.5.2)
|
56
56
|
rack (2.2.3)
|
@@ -61,16 +61,16 @@ GEM
|
|
61
61
|
nokogiri (>= 1.6)
|
62
62
|
rails-html-sanitizer (1.3.0)
|
63
63
|
loofah (~> 2.3)
|
64
|
-
railties (6.1.2
|
65
|
-
actionpack (= 6.1.2
|
66
|
-
activesupport (= 6.1.2
|
64
|
+
railties (6.1.3.2)
|
65
|
+
actionpack (= 6.1.3.2)
|
66
|
+
activesupport (= 6.1.3.2)
|
67
67
|
method_source
|
68
68
|
rake (>= 0.8.7)
|
69
69
|
thor (~> 1.0)
|
70
70
|
rainbow (3.0.0)
|
71
71
|
rake (13.0.3)
|
72
|
-
regexp_parser (2.
|
73
|
-
rexml (3.2.
|
72
|
+
regexp_parser (2.1.1)
|
73
|
+
rexml (3.2.5)
|
74
74
|
rspec (3.10.0)
|
75
75
|
rspec-core (~> 3.10.0)
|
76
76
|
rspec-expectations (~> 3.10.0)
|
@@ -84,27 +84,29 @@ GEM
|
|
84
84
|
diff-lcs (>= 1.2.0, < 2.0)
|
85
85
|
rspec-support (~> 3.10.0)
|
86
86
|
rspec-support (3.10.2)
|
87
|
-
rubocop (1.
|
87
|
+
rubocop (1.17.0)
|
88
88
|
parallel (~> 1.10)
|
89
89
|
parser (>= 3.0.0.0)
|
90
90
|
rainbow (>= 2.2.2, < 4.0)
|
91
91
|
regexp_parser (>= 1.8, < 3.0)
|
92
92
|
rexml
|
93
|
-
rubocop-ast (>= 1.
|
93
|
+
rubocop-ast (>= 1.7.0, < 2.0)
|
94
94
|
ruby-progressbar (~> 1.7)
|
95
95
|
unicode-display_width (>= 1.4.0, < 3.0)
|
96
|
-
rubocop-ast (1.
|
97
|
-
parser (>=
|
98
|
-
rubocop-performance (1.
|
99
|
-
rubocop (>=
|
96
|
+
rubocop-ast (1.7.0)
|
97
|
+
parser (>= 3.0.1.1)
|
98
|
+
rubocop-performance (1.11.3)
|
99
|
+
rubocop (>= 1.7.0, < 2.0)
|
100
100
|
rubocop-ast (>= 0.4.0)
|
101
|
-
rubocop-
|
101
|
+
rubocop-rake (0.5.1)
|
102
|
+
rubocop
|
103
|
+
rubocop-rspec (2.4.0)
|
102
104
|
rubocop (~> 1.0)
|
103
105
|
rubocop-ast (>= 1.1.0)
|
104
106
|
ruby-progressbar (1.11.0)
|
105
|
-
ruby_parser (3.
|
106
|
-
sexp_processor (~> 4.
|
107
|
-
sexp_processor (4.15.
|
107
|
+
ruby_parser (3.16.0)
|
108
|
+
sexp_processor (~> 4.15, >= 4.15.1)
|
109
|
+
sexp_processor (4.15.3)
|
108
110
|
thor (1.1.0)
|
109
111
|
tzinfo (2.0.4)
|
110
112
|
concurrent-ruby (~> 1.0)
|
@@ -123,7 +125,8 @@ DEPENDENCIES
|
|
123
125
|
rspec
|
124
126
|
rubocop
|
125
127
|
rubocop-performance
|
128
|
+
rubocop-rake
|
126
129
|
rubocop-rspec
|
127
130
|
|
128
131
|
BUNDLED WITH
|
129
|
-
2.2.
|
132
|
+
2.2.19
|
data/docs/ARRAY.md
CHANGED
@@ -137,6 +137,14 @@ Moves a given value to the tail of array.
|
|
137
137
|
[1, 2, 2, 3].demote!(4) #=> [1, 2, 2, 3]
|
138
138
|
```
|
139
139
|
|
140
|
+
`divergence`
|
141
|
+
------
|
142
|
+
Returns a list of elements not found in either array.
|
143
|
+
|
144
|
+
```ruby
|
145
|
+
[1, 2, 2].divergence([2, 3, 4]) #=> [1, 3, 4]
|
146
|
+
```
|
147
|
+
|
140
148
|
`denillify(!)`
|
141
149
|
------
|
142
150
|
Converts `nil` into a given value.
|
@@ -227,6 +235,15 @@ Returns all indexes of the matching value.
|
|
227
235
|
[:a,:b,:a,:c].indexes(:a) #=> [0, 2]
|
228
236
|
```
|
229
237
|
|
238
|
+
`match`
|
239
|
+
------
|
240
|
+
Select a given value from the array.
|
241
|
+
|
242
|
+
```ruby
|
243
|
+
[1, 2, 3, 4].match(1) #=> 1
|
244
|
+
[1, 2, 3, 4].match(9) #=> nil
|
245
|
+
```
|
246
|
+
|
230
247
|
`merge(!)`
|
231
248
|
------
|
232
249
|
Concats multiple arrays.
|
@@ -251,6 +268,7 @@ Selects given values from the array.
|
|
251
268
|
|
252
269
|
```ruby
|
253
270
|
[1, 2, 3, 4].only(1, 3) #=> [1, 3]
|
271
|
+
[1, 2, 3, 4].only!(8, 9) #=> []
|
254
272
|
```
|
255
273
|
|
256
274
|
`probability`
|
@@ -320,7 +338,7 @@ Divides the array into one or more subarrays based on a delimiting value or the
|
|
320
338
|
(1..10).to_a.split { |i| i % 3 == 0 } # => [[1, 2], [4, 5], [7, 8], [10]]
|
321
339
|
```
|
322
340
|
|
323
|
-
`strip(!)`
|
341
|
+
`strip(!)` aka `compact_blank(!)`
|
324
342
|
------
|
325
343
|
Removes blank elements from an array.
|
326
344
|
|
data/docs/ENUMERABLE.md
CHANGED
@@ -158,6 +158,18 @@ a1.occur(2..3) #=> [1,3,5]
|
|
158
158
|
a1.occur { |n| n > 1 } #=> [1,3,5]
|
159
159
|
```
|
160
160
|
|
161
|
+
`pick`
|
162
|
+
------
|
163
|
+
Returns a value from a set of given keys.
|
164
|
+
|
165
|
+
```ruby
|
166
|
+
a1 = [{ id: 1, name: 'a' }, { id: 2, name: 'b' }]
|
167
|
+
|
168
|
+
a1.pick(:id) #=> 1
|
169
|
+
a1.pick(:id, :name) #=> [1,'a']
|
170
|
+
a1.pick(:fake) #=> nil
|
171
|
+
```
|
172
|
+
|
161
173
|
`pluck`
|
162
174
|
------
|
163
175
|
Returns an array of values from a set of given keys.
|
@@ -167,6 +179,7 @@ a1 = [{ id: 1, name: 'a' }, { id: 2, name: 'b' }]
|
|
167
179
|
|
168
180
|
a1.pluck(:id) #=> [1,2]
|
169
181
|
a1.pluck(:id, :name) #=> [[1,'a'], [2,'b']]
|
182
|
+
a1.pluck(:fake) #=> [nil,nil]
|
170
183
|
```
|
171
184
|
|
172
185
|
`produce`
|
data/docs/OPEN_STRUCT.md
CHANGED
@@ -9,26 +9,6 @@ OpenStruct.new(name: 'bob', age: 60) do |o|
|
|
9
9
|
end
|
10
10
|
```
|
11
11
|
|
12
|
-
`[]`
|
13
|
-
------
|
14
|
-
Access a value in the OpenStruct by key, like a Hash.
|
15
|
-
|
16
|
-
```ruby
|
17
|
-
person = OpenStruct.new(name: 'bob', age: 60)
|
18
|
-
|
19
|
-
person['name'] #=> 'bob'
|
20
|
-
```
|
21
|
-
|
22
|
-
`[]=`
|
23
|
-
------
|
24
|
-
Store a value in the OpenStruct by key, like a Hash.
|
25
|
-
|
26
|
-
```ruby
|
27
|
-
person = OpenStruct.new(name: 'bob', age: 60)
|
28
|
-
|
29
|
-
person['name'] = 'tim'
|
30
|
-
```
|
31
|
-
|
32
12
|
`attributes`
|
33
13
|
------
|
34
14
|
Returns the key values as a hash of the assigned struct.
|
data/docs/STRUCT.md
CHANGED
data/docs/TIME.md
CHANGED
@@ -35,6 +35,14 @@ Converts a `time` object to `strftime` it using a human readable string.
|
|
35
35
|
Time.now.format('month_name day, year hour:minute ampm') #=> 'January 09, 2014 02:31 pm'
|
36
36
|
```
|
37
37
|
|
38
|
+
`monotonic`
|
39
|
+
------
|
40
|
+
Returns the monotonic time.
|
41
|
+
|
42
|
+
```ruby
|
43
|
+
Time.monotonic #=> 5834550.444132
|
44
|
+
```
|
45
|
+
|
38
46
|
`stamp` aka `to_format`
|
39
47
|
------
|
40
48
|
Converts a `time` object to a predefined format.
|
data/lib/lite/ruby/array.rb
CHANGED
@@ -1,8 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
if Lite::Ruby.configuration.monkey_patches.include?('array')
|
4
|
-
require 'lite/ruby/safe/array' unless defined?(ActiveSupport)
|
5
|
-
|
6
4
|
class Array
|
7
5
|
|
8
6
|
def assert_min_values!(*valid_values)
|
@@ -188,6 +186,10 @@ if Lite::Ruby.configuration.monkey_patches.include?('array')
|
|
188
186
|
array
|
189
187
|
end
|
190
188
|
|
189
|
+
def match(value)
|
190
|
+
find { |val| value == val }
|
191
|
+
end
|
192
|
+
|
191
193
|
def merge(*values)
|
192
194
|
dup.merge!(*values)
|
193
195
|
end
|
@@ -282,4 +284,6 @@ if Lite::Ruby.configuration.monkey_patches.include?('array')
|
|
282
284
|
alias select_values! only!
|
283
285
|
|
284
286
|
end
|
287
|
+
|
288
|
+
require 'lite/ruby/safe/array' unless defined?(ActiveSupport)
|
285
289
|
end
|
data/lib/lite/ruby/enumerable.rb
CHANGED
@@ -1,8 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
if Lite::Ruby.configuration.monkey_patches.include?('enumerable')
|
4
|
-
require 'lite/ruby/safe/enumerable' unless defined?(ActiveSupport)
|
5
|
-
|
6
4
|
module Enumerable
|
7
5
|
|
8
6
|
def cluster
|
@@ -57,11 +55,9 @@ if Lite::Ruby.configuration.monkey_patches.include?('enumerable')
|
|
57
55
|
found_count > num ? false : num == found_count
|
58
56
|
end
|
59
57
|
|
60
|
-
# rubocop:disable Style/CaseEquality
|
61
58
|
def excase?(object)
|
62
|
-
none?
|
59
|
+
none?(object)
|
63
60
|
end
|
64
|
-
# rubocop:enable Style/CaseEquality
|
65
61
|
|
66
62
|
def expand
|
67
63
|
map { |val| val.is_a?(Enumerable) ? val.expand : val }
|
@@ -79,11 +75,9 @@ if Lite::Ruby.configuration.monkey_patches.include?('enumerable')
|
|
79
75
|
each_with_object(Hash.new(0)) { |val, hash| hash[val] += 1 }
|
80
76
|
end
|
81
77
|
|
82
|
-
# rubocop:disable Style/CaseEquality
|
83
78
|
def incase?(object)
|
84
|
-
any?
|
79
|
+
any?(object)
|
85
80
|
end
|
86
|
-
# rubocop:enable Style/CaseEquality
|
87
81
|
|
88
82
|
# rubocop:disable Metrics/MethodLength
|
89
83
|
def interpose(sep, &block)
|
@@ -213,4 +207,6 @@ if Lite::Ruby.configuration.monkey_patches.include?('enumerable')
|
|
213
207
|
alias occurrences frequency
|
214
208
|
|
215
209
|
end
|
210
|
+
|
211
|
+
require 'lite/ruby/safe/enumerable' unless defined?(ActiveSupport)
|
216
212
|
end
|
data/lib/lite/ruby/hash.rb
CHANGED
@@ -1,8 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
if Lite::Ruby.configuration.monkey_patches.include?('hash')
|
4
|
-
require 'lite/ruby/safe/hash' unless defined?(ActiveSupport)
|
5
|
-
|
6
4
|
class Hash
|
7
5
|
|
8
6
|
class << self
|
@@ -405,4 +403,6 @@ if Lite::Ruby.configuration.monkey_patches.include?('hash')
|
|
405
403
|
alias to_o to_object
|
406
404
|
|
407
405
|
end
|
406
|
+
|
407
|
+
require 'lite/ruby/safe/hash' unless defined?(ActiveSupport)
|
408
408
|
end
|
data/lib/lite/ruby/integer.rb
CHANGED
@@ -4,10 +4,14 @@ if Lite::Ruby.configuration.monkey_patches.include?('integer')
|
|
4
4
|
class Integer
|
5
5
|
|
6
6
|
ROMAN_NUMERALS = {
|
7
|
-
M: 1000, CM: 900, D: 500, CD: 400, C: 100, XC: 90, L: 50,
|
8
|
-
I: 1
|
7
|
+
M: 1000, CM: 900, D: 500, CD: 400, C: 100, XC: 90, L: 50,
|
8
|
+
XL: 40, X: 10, IX: 9, V: 5, IV: 4, I: 1
|
9
9
|
}.freeze
|
10
10
|
|
11
|
+
SQL_SMALLINT = 32_767
|
12
|
+
SQL_INTEGER = 2_147_483_647
|
13
|
+
SQL_BIGINT = 9_223_372_036_854_775_807
|
14
|
+
|
11
15
|
def bit(bit)
|
12
16
|
if bit.negative?
|
13
17
|
mask = (1 << ~bit)
|
data/lib/lite/ruby/object.rb
CHANGED
@@ -1,8 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
if Lite::Ruby.configuration.monkey_patches.include?('object')
|
4
|
-
require 'lite/ruby/safe/object' unless defined?(ActiveSupport)
|
5
|
-
|
6
4
|
class Object
|
7
5
|
|
8
6
|
FALSE_VALUES = %w[
|
@@ -168,4 +166,6 @@ if Lite::Ruby.configuration.monkey_patches.include?('object')
|
|
168
166
|
alias to_b to_bool
|
169
167
|
|
170
168
|
end
|
169
|
+
|
170
|
+
require 'lite/ruby/safe/object' unless defined?(ActiveSupport)
|
171
171
|
end
|
@@ -20,24 +20,12 @@ if Lite::Ruby.configuration.monkey_patches.include?('open_struct')
|
|
20
20
|
yield self if block && block.arity == 1
|
21
21
|
end
|
22
22
|
|
23
|
-
def [](key)
|
24
|
-
key = key.to_sym unless key.is_a?(Symbol)
|
25
|
-
@table[key]
|
26
|
-
end
|
27
|
-
|
28
|
-
def []=(key, val)
|
29
|
-
raise TypeError, "can't modify frozen #{self.class}", caller(1) if frozen?
|
30
|
-
|
31
|
-
key = key.to_sym unless key.is_a?(Symbol)
|
32
|
-
@table[key] = val
|
33
|
-
end
|
34
|
-
|
35
23
|
def attributes
|
36
24
|
@table
|
37
25
|
end
|
38
26
|
|
39
27
|
def replace(args)
|
40
|
-
args.
|
28
|
+
args.each { |key, val| send("#{key}=", val) }
|
41
29
|
end
|
42
30
|
|
43
31
|
def to_hash(table: true)
|
@@ -53,5 +41,14 @@ if Lite::Ruby.configuration.monkey_patches.include?('open_struct')
|
|
53
41
|
alias as_json to_json
|
54
42
|
alias to_h to_hash
|
55
43
|
|
44
|
+
private
|
45
|
+
|
46
|
+
def new_ostruct_member!(name)
|
47
|
+
return if is_method_protected!(name)
|
48
|
+
|
49
|
+
define_singleton_method!(name) { @table[name] }
|
50
|
+
define_singleton_method!("#{name}=") { |x| @table[name] = x }
|
51
|
+
end
|
52
|
+
|
56
53
|
end
|
57
54
|
end
|
data/lib/lite/ruby/range.rb
CHANGED
@@ -1,8 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
if Lite::Ruby.configuration.monkey_patches.include?('range')
|
4
|
-
require 'lite/ruby/safe/range' unless defined?(ActiveSupport)
|
5
|
-
|
6
4
|
class Range
|
7
5
|
|
8
6
|
def combine(other)
|
@@ -29,4 +27,6 @@ if Lite::Ruby.configuration.monkey_patches.include?('range')
|
|
29
27
|
end
|
30
28
|
|
31
29
|
end
|
30
|
+
|
31
|
+
require 'lite/ruby/safe/range' unless defined?(ActiveSupport)
|
32
32
|
end
|
data/lib/lite/ruby/safe/array.rb
CHANGED
@@ -28,11 +28,22 @@ module Enumerable
|
|
28
28
|
end
|
29
29
|
end
|
30
30
|
|
31
|
+
def pick(*keys)
|
32
|
+
return if none?
|
33
|
+
|
34
|
+
if keys.many?
|
35
|
+
keys.map { |key| first[key] }
|
36
|
+
else
|
37
|
+
first[keys.first]
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
31
41
|
def pluck(*keys)
|
32
42
|
if keys.many?
|
33
43
|
map { |element| keys.map { |key| element[key] } }
|
34
44
|
else
|
35
|
-
|
45
|
+
key = keys.first
|
46
|
+
map { |element| element[key] }
|
36
47
|
end
|
37
48
|
end
|
38
49
|
|
data/lib/lite/ruby/string.rb
CHANGED
@@ -1,8 +1,6 @@
|
|
1
1
|
# frozen_string_literal: false
|
2
2
|
|
3
3
|
if Lite::Ruby.configuration.monkey_patches.include?('string')
|
4
|
-
require 'lite/ruby/safe/string' unless defined?(ActiveSupport)
|
5
|
-
|
6
4
|
class String
|
7
5
|
|
8
6
|
TRANSLITERATIONS = {
|
@@ -482,4 +480,6 @@ if Lite::Ruby.configuration.monkey_patches.include?('string')
|
|
482
480
|
alias titlecase! titleize!
|
483
481
|
|
484
482
|
end
|
483
|
+
|
484
|
+
require 'lite/ruby/safe/string' unless defined?(ActiveSupport)
|
485
485
|
end
|
data/lib/lite/ruby/struct.rb
CHANGED
data/lib/lite/ruby/time.rb
CHANGED
@@ -9,15 +9,19 @@ if Lite::Ruby.configuration.monkey_patches.include?('time')
|
|
9
9
|
class << self
|
10
10
|
|
11
11
|
def elapse(verbose: false)
|
12
|
-
started_at =
|
12
|
+
started_at = monotonic
|
13
13
|
yield
|
14
|
-
ended_at =
|
14
|
+
ended_at = monotonic
|
15
15
|
runtime = ended_at - started_at
|
16
16
|
return runtime unless verbose
|
17
17
|
|
18
18
|
{ started_at: started_at, ended_at: ended_at, runtime: runtime }
|
19
19
|
end
|
20
20
|
|
21
|
+
def monotonic
|
22
|
+
Process.clock_gettime(Process::CLOCK_MONOTONIC)
|
23
|
+
end
|
24
|
+
|
21
25
|
end
|
22
26
|
|
23
27
|
private
|
data/lib/lite/ruby/version.rb
CHANGED
data/lite-ruby.gemspec
CHANGED
@@ -44,5 +44,6 @@ Gem::Specification.new do |spec|
|
|
44
44
|
spec.add_development_dependency 'rspec'
|
45
45
|
spec.add_development_dependency 'rubocop'
|
46
46
|
spec.add_development_dependency 'rubocop-performance'
|
47
|
+
spec.add_development_dependency 'rubocop-rake'
|
47
48
|
spec.add_development_dependency 'rubocop-rspec'
|
48
49
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lite-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.10
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Juan Gomez
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-06-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -108,6 +108,20 @@ dependencies:
|
|
108
108
|
- - ">="
|
109
109
|
- !ruby/object:Gem::Version
|
110
110
|
version: '0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: rubocop-rake
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ">="
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ">="
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
111
125
|
- !ruby/object:Gem::Dependency
|
112
126
|
name: rubocop-rspec
|
113
127
|
requirement: !ruby/object:Gem::Requirement
|
@@ -208,7 +222,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
208
222
|
- !ruby/object:Gem::Version
|
209
223
|
version: '0'
|
210
224
|
requirements: []
|
211
|
-
rubygems_version: 3.2.
|
225
|
+
rubygems_version: 3.2.19
|
212
226
|
signing_key:
|
213
227
|
specification_version: 4
|
214
228
|
summary: Collection of useful Ruby methods for its primitive classes
|