lite-ruby 1.0.20 → 1.0.21
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 +2 -2
- data/CHANGELOG.md +6 -0
- data/Gemfile.lock +28 -28
- data/docs/ENUMERABLE.md +36 -8
- data/lib/lite/ruby/enumerable.rb +21 -0
- data/lib/lite/ruby/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: '0820619dfad934f57b67a5faa46ff2ab0f89ca1aaa24bbc739958a1cf61ac9e7'
|
4
|
+
data.tar.gz: e1ce115ea05862624cf0d64836d898030a8fba0aaa2c66acc01268cecec59493
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0c7cdff31df3ba265ea340b853058dc067aeaf12fe539999a005eb81190c8ad03a20074deadcf0c08ed804866c7636a943ad724eae837e9c00d2152104e93af3
|
7
|
+
data.tar.gz: 7dfbdf038e781405a248c293e3b0d78934c9bac86e8039f28b57bfe486c2b5a42480bf44e28f746e8827549ca8cfb801afbef2a786b84897e5e6c6db4f2c6fbc
|
data/.rubocop.yml
CHANGED
@@ -5,8 +5,6 @@ AllCops:
|
|
5
5
|
TargetRubyVersion: 2.6
|
6
6
|
DisplayCopNames: true
|
7
7
|
DisplayStyleGuide: true
|
8
|
-
LineLength:
|
9
|
-
Max: 100
|
10
8
|
Layout/EmptyLinesAroundBlockBody:
|
11
9
|
Exclude:
|
12
10
|
- 'spec/**/**/*'
|
@@ -20,6 +18,8 @@ Metrics/BlockLength:
|
|
20
18
|
- '*.gemspec'
|
21
19
|
Metrics/ClassLength:
|
22
20
|
Enabled: false
|
21
|
+
Metrics/LineLength:
|
22
|
+
Max: 100
|
23
23
|
Metrics/ModuleLength:
|
24
24
|
Enabled: false
|
25
25
|
RSpec/DescribeClass:
|
data/CHANGELOG.md
CHANGED
@@ -6,6 +6,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
6
6
|
|
7
7
|
## [Unreleased]
|
8
8
|
|
9
|
+
## [1.0.21] - 2019-11-02
|
10
|
+
### Added
|
11
|
+
- Added Enumerable => `excluding`
|
12
|
+
- Added Enumerable => `including`
|
13
|
+
- Added Enumerable => `pluck`
|
14
|
+
|
9
15
|
## [1.0.20] - 2019-09-29
|
10
16
|
### Added
|
11
17
|
- Added Array => `rand_sample`
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
lite-ruby (1.0.
|
4
|
+
lite-ruby (1.0.21)
|
5
5
|
|
6
6
|
GEM
|
7
7
|
remote: https://rubygems.org/
|
@@ -29,28 +29,28 @@ GEM
|
|
29
29
|
builder (3.2.3)
|
30
30
|
colorize (0.8.1)
|
31
31
|
concurrent-ruby (1.1.5)
|
32
|
-
crass (1.0.
|
32
|
+
crass (1.0.5)
|
33
33
|
diff-lcs (1.3)
|
34
34
|
erubi (1.9.0)
|
35
|
-
fasterer (0.7.
|
35
|
+
fasterer (0.7.1)
|
36
36
|
colorize (~> 0.7)
|
37
37
|
ruby_parser (>= 3.13.0)
|
38
38
|
generator_spec (0.9.4)
|
39
39
|
activesupport (>= 3.0.0)
|
40
40
|
railties (>= 3.0.0)
|
41
|
-
i18n (1.
|
41
|
+
i18n (1.7.0)
|
42
42
|
concurrent-ruby (~> 1.0)
|
43
|
-
jaro_winkler (1.5.
|
44
|
-
loofah (2.3.
|
43
|
+
jaro_winkler (1.5.4)
|
44
|
+
loofah (2.3.1)
|
45
45
|
crass (~> 1.0.2)
|
46
46
|
nokogiri (>= 1.5.9)
|
47
47
|
method_source (0.9.2)
|
48
48
|
mini_portile2 (2.4.0)
|
49
|
-
minitest (5.
|
50
|
-
nokogiri (1.10.
|
49
|
+
minitest (5.13.0)
|
50
|
+
nokogiri (1.10.5)
|
51
51
|
mini_portile2 (~> 2.4.0)
|
52
|
-
parallel (1.
|
53
|
-
parser (2.6.
|
52
|
+
parallel (1.18.0)
|
53
|
+
parser (2.6.5.0)
|
54
54
|
ast (~> 2.4.0)
|
55
55
|
rack (2.0.7)
|
56
56
|
rack-test (1.1.0)
|
@@ -58,8 +58,8 @@ GEM
|
|
58
58
|
rails-dom-testing (2.0.3)
|
59
59
|
activesupport (>= 4.2.0)
|
60
60
|
nokogiri (>= 1.6)
|
61
|
-
rails-html-sanitizer (1.
|
62
|
-
loofah (~> 2.
|
61
|
+
rails-html-sanitizer (1.3.0)
|
62
|
+
loofah (~> 2.3)
|
63
63
|
railties (6.0.0)
|
64
64
|
actionpack (= 6.0.0)
|
65
65
|
activesupport (= 6.0.0)
|
@@ -68,32 +68,32 @@ GEM
|
|
68
68
|
thor (>= 0.20.3, < 2.0)
|
69
69
|
rainbow (3.0.0)
|
70
70
|
rake (13.0.0)
|
71
|
-
rspec (3.
|
72
|
-
rspec-core (~> 3.
|
73
|
-
rspec-expectations (~> 3.
|
74
|
-
rspec-mocks (~> 3.
|
75
|
-
rspec-core (3.
|
76
|
-
rspec-support (~> 3.
|
77
|
-
rspec-expectations (3.
|
71
|
+
rspec (3.9.0)
|
72
|
+
rspec-core (~> 3.9.0)
|
73
|
+
rspec-expectations (~> 3.9.0)
|
74
|
+
rspec-mocks (~> 3.9.0)
|
75
|
+
rspec-core (3.9.0)
|
76
|
+
rspec-support (~> 3.9.0)
|
77
|
+
rspec-expectations (3.9.0)
|
78
78
|
diff-lcs (>= 1.2.0, < 2.0)
|
79
|
-
rspec-support (~> 3.
|
80
|
-
rspec-mocks (3.
|
79
|
+
rspec-support (~> 3.9.0)
|
80
|
+
rspec-mocks (3.9.0)
|
81
81
|
diff-lcs (>= 1.2.0, < 2.0)
|
82
|
-
rspec-support (~> 3.
|
83
|
-
rspec-support (3.
|
84
|
-
rubocop (0.
|
82
|
+
rspec-support (~> 3.9.0)
|
83
|
+
rspec-support (3.9.0)
|
84
|
+
rubocop (0.76.0)
|
85
85
|
jaro_winkler (~> 1.5.1)
|
86
86
|
parallel (~> 1.10)
|
87
87
|
parser (>= 2.6)
|
88
88
|
rainbow (>= 2.2.2, < 4.0)
|
89
89
|
ruby-progressbar (~> 1.7)
|
90
90
|
unicode-display_width (>= 1.4.0, < 1.7)
|
91
|
-
rubocop-performance (1.
|
91
|
+
rubocop-performance (1.5.0)
|
92
92
|
rubocop (>= 0.71.0)
|
93
93
|
rubocop-rspec (1.36.0)
|
94
94
|
rubocop (>= 0.68.1)
|
95
95
|
ruby-progressbar (1.10.1)
|
96
|
-
ruby_parser (3.14.
|
96
|
+
ruby_parser (3.14.1)
|
97
97
|
sexp_processor (~> 4.9)
|
98
98
|
sexp_processor (4.13.0)
|
99
99
|
thor (0.20.3)
|
@@ -101,7 +101,7 @@ GEM
|
|
101
101
|
tzinfo (1.2.5)
|
102
102
|
thread_safe (~> 0.1)
|
103
103
|
unicode-display_width (1.6.0)
|
104
|
-
zeitwerk (2.1
|
104
|
+
zeitwerk (2.2.1)
|
105
105
|
|
106
106
|
PLATFORMS
|
107
107
|
ruby
|
@@ -118,4 +118,4 @@ DEPENDENCIES
|
|
118
118
|
rubocop-rspec
|
119
119
|
|
120
120
|
BUNDLED WITH
|
121
|
-
2.0.
|
121
|
+
2.0.2
|
data/docs/ENUMERABLE.md
CHANGED
@@ -74,6 +74,15 @@ Returns if the collection does not include an object.
|
|
74
74
|
[1,2,3].exclude?(3) #=> false
|
75
75
|
```
|
76
76
|
|
77
|
+
`excluding` aka `without`
|
78
|
+
------
|
79
|
+
Returns the object without the given keys.
|
80
|
+
|
81
|
+
```ruby
|
82
|
+
[1, 2, 3].excluding(2, 3) #=> [1]
|
83
|
+
{ foo: 1, bar: 2, baz: 3 }.excluding(:foo, :baz) #=> { bar: 2 }
|
84
|
+
```
|
85
|
+
|
77
86
|
`expand`
|
78
87
|
------
|
79
88
|
Expand all elements of an Enumerable object.
|
@@ -117,6 +126,14 @@ Returns an Enumerator to add seperators.
|
|
117
126
|
[1,2,'a'].interpose(:sep).to_a #=> [1,:sep,2,:sep,'a']
|
118
127
|
```
|
119
128
|
|
129
|
+
`including` aka `with`
|
130
|
+
------
|
131
|
+
Returns an array with the given values.
|
132
|
+
|
133
|
+
```ruby
|
134
|
+
[1, 2, 3].including(4, 5) #=> [1,2,3,4,5]
|
135
|
+
```
|
136
|
+
|
120
137
|
`many?`
|
121
138
|
------
|
122
139
|
Returns if a collection has more than one element while respecting `nil` and `false` as an element.
|
@@ -134,11 +151,22 @@ Returns if a collection has more than one element while respecting `nil` and `fa
|
|
134
151
|
Returns an array of elements for the elements that occur n times.
|
135
152
|
|
136
153
|
```ruby
|
137
|
-
a1 = [1,
|
154
|
+
a1 = [1,1,2,3,3,4,5,5]
|
155
|
+
|
156
|
+
a1.occur(2) #=> [1,3,5]
|
157
|
+
a1.occur(2..3) #=> [1,3,5]
|
158
|
+
a1.occur { |n| n > 1 } #=> [1,3,5]
|
159
|
+
```
|
160
|
+
|
161
|
+
`pluck`
|
162
|
+
------
|
163
|
+
Returns an array of values from a set of given keys.
|
164
|
+
|
165
|
+
```ruby
|
166
|
+
a1 = [{ id: 1, name: 'a' }, { id: 2, name: 'b' }]
|
138
167
|
|
139
|
-
a1.
|
140
|
-
a1.
|
141
|
-
a1.occur { |n| n > 1 } #=> [1, 3, 5]
|
168
|
+
a1.pluck(:id) #=> [1,2]
|
169
|
+
a1.pluck(:id, :name) #=> [[1,'a'], [2,'b']]
|
142
170
|
```
|
143
171
|
|
144
172
|
`produce`
|
@@ -177,11 +205,11 @@ Returns if collection has more than one element while not respecting `nil` and `
|
|
177
205
|
Squeeze out the same elements.
|
178
206
|
|
179
207
|
```ruby
|
180
|
-
a1 = [1,
|
208
|
+
a1 = [1,2,2,3,3,2,1]
|
181
209
|
|
182
|
-
a1.squeeze #=> [1,
|
183
|
-
a1.sort.squeeze #=> [1,
|
184
|
-
a1.squeeze(3) #=> [1,
|
210
|
+
a1.squeeze #=> [1,2,3,2,1]
|
211
|
+
a1.sort.squeeze #=> [1,2,3]
|
212
|
+
a1.squeeze(3) #=> [1,2,2,3,2,1]
|
185
213
|
```
|
186
214
|
|
187
215
|
`take_last`
|
data/lib/lite/ruby/enumerable.rb
CHANGED
@@ -65,6 +65,13 @@ if Lite::Ruby.configuration.monkey_patches.include?('enumerable')
|
|
65
65
|
!include?(object)
|
66
66
|
end
|
67
67
|
|
68
|
+
def excluding(*elements)
|
69
|
+
elements.flatten!(1)
|
70
|
+
reject { |element| elements.include?(element) }
|
71
|
+
end
|
72
|
+
|
73
|
+
alias without excluding
|
74
|
+
|
68
75
|
def expand
|
69
76
|
map { |val| val.is_a?(Enumerable) ? val.expand : val }
|
70
77
|
end
|
@@ -89,6 +96,12 @@ if Lite::Ruby.configuration.monkey_patches.include?('enumerable')
|
|
89
96
|
end
|
90
97
|
# rubocop:enable Style/CaseEquality
|
91
98
|
|
99
|
+
def including(*elements)
|
100
|
+
to_a.including(*elements)
|
101
|
+
end
|
102
|
+
|
103
|
+
alias with including
|
104
|
+
|
92
105
|
# rubocop:disable Metrics/MethodLength
|
93
106
|
def interpose(sep, &block)
|
94
107
|
enum = Enumerator.new do |val|
|
@@ -165,6 +178,14 @@ if Lite::Ruby.configuration.monkey_patches.include?('enumerable')
|
|
165
178
|
end
|
166
179
|
# rubocop:enable Metrics/AbcSize, Metrics/MethodLength
|
167
180
|
|
181
|
+
def pluck(*keys)
|
182
|
+
if keys.many?
|
183
|
+
map { |element| keys.map { |key| element[key] } }
|
184
|
+
else
|
185
|
+
map { |element| element[keys.first] }
|
186
|
+
end
|
187
|
+
end
|
188
|
+
|
168
189
|
def produce(identity = 0, &block)
|
169
190
|
if block_given?
|
170
191
|
map(&block).produce(identity)
|
data/lib/lite/ruby/version.rb
CHANGED
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.0.
|
4
|
+
version: 1.0.21
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Juan Gomez
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-11-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -202,7 +202,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
202
202
|
- !ruby/object:Gem::Version
|
203
203
|
version: '0'
|
204
204
|
requirements: []
|
205
|
-
rubygems_version: 3.0.
|
205
|
+
rubygems_version: 3.0.6
|
206
206
|
signing_key:
|
207
207
|
specification_version: 4
|
208
208
|
summary: Collection of useful Ruby methods for its primitive classes
|