lite-ruby 1.0.1 → 1.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +2 -0
- data/CHANGELOG.md +55 -1
- data/Gemfile.lock +1 -1
- data/README.md +2 -1
- data/docs/ARRAY.md +1 -1
- data/docs/ENUMERABLE.md +51 -20
- data/docs/HASH.md +149 -0
- data/docs/INTEGER.md +45 -0
- data/docs/NUMERIC.md +36 -2
- data/docs/OPEN_STRUCT.md +51 -0
- data/docs/STRING.md +123 -1
- data/docs/STRUCT.md +24 -0
- data/lib/generators/lite/ruby/templates/install.rb +1 -1
- data/lib/lite/ruby/configuration.rb +2 -1
- data/lib/lite/ruby/enumerable.rb +75 -15
- data/lib/lite/ruby/hash.rb +132 -6
- data/lib/lite/ruby/integer.rb +32 -0
- data/lib/lite/ruby/numeric.rb +44 -1
- data/lib/lite/ruby/open_struct.rb +44 -0
- data/lib/lite/ruby/string.rb +249 -72
- data/lib/lite/ruby/struct.rb +8 -0
- data/lib/lite/ruby/version.rb +1 -1
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 19db11fb7da5ef86006b94cc266336955175013164f4f631cf207c607d4286e8
|
4
|
+
data.tar.gz: fbe955d7730e10acafb3d288e577e2cfcdf065426543a573fe331427bcb414fc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6af442178978f4528406e0ce3d219157cebbd75a70ca2575dadbf03ae58a87ce71d9e1285127422172e536620fad132951d73cd3b173112563bce7b50a5761c6
|
7
|
+
data.tar.gz: 56307ba25fe5b2d7d523ca9b3fba1908ec30443ce25547fcacc28361674f53bd9ef2ef6874957e4932cf66a62b3815e440a3c2f12ba069b42c00830bc67e096b
|
data/.rubocop.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -6,12 +6,66 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
6
6
|
|
7
7
|
## [Unreleased]
|
8
8
|
|
9
|
+
## [1.0.2] - 2019-07-21
|
10
|
+
### Added
|
11
|
+
- Added Enumerable => `cluster_by`
|
12
|
+
- Added Enumerable => `frequency`
|
13
|
+
- Added Enumerable => `occur`
|
14
|
+
- Added Enumerable => `squeeze`
|
15
|
+
- Added Hash => `alias`
|
16
|
+
- Added Hash => `collate`
|
17
|
+
- Added Hash => `dearray_values`
|
18
|
+
- Added Hash => `dearray_singular_values`
|
19
|
+
- Added Hash => `delete_unless`
|
20
|
+
- Added Hash => `delete_values`
|
21
|
+
- Added Hash => `diff`
|
22
|
+
- Added Hash => `insert`
|
23
|
+
- Added Hash => `invert`
|
24
|
+
- Added Hash => `keys?`
|
25
|
+
- Added Hash => `only_keys?`
|
26
|
+
- Added Hash => `update_each`
|
27
|
+
- Added Hash => `update_keys`
|
28
|
+
- Added Hash => `update_values`
|
29
|
+
- Added Hash => `zip`
|
30
|
+
- Added Integer => `bit`
|
31
|
+
- Added Integer => `bit?`
|
32
|
+
- Added Integer => `bit_clear`
|
33
|
+
- Added Integer => `bitmask`
|
34
|
+
- Added Integer => `bitmask?`
|
35
|
+
- Added Numeric => `at_least?`
|
36
|
+
- Added Numeric => `at_most?`
|
37
|
+
- Added Numeric => `close?`
|
38
|
+
- Added Numeric => `delimit`
|
39
|
+
- Added Numeric => `delta`
|
40
|
+
- Added Numeric => `range`
|
41
|
+
- Added OpenStruct extensions
|
42
|
+
- Added String => `ascii_only`
|
43
|
+
- Added String => `capitalized?`
|
44
|
+
- Added String => `each_word`
|
45
|
+
- Added String => `encode_only`
|
46
|
+
- Added String => `lchomp`
|
47
|
+
- Added String => `methodize`
|
48
|
+
- Added String => `modulize`
|
49
|
+
- Added String => `pathize`
|
50
|
+
- Added String => `quote`
|
51
|
+
- Added String => `rotate`
|
52
|
+
- Added String => `unquote`
|
53
|
+
- Added String => `variablize`
|
54
|
+
- Added String => `words`
|
55
|
+
- Added String => `words_without_punctuation`
|
56
|
+
- Added Struct => `[]`
|
57
|
+
- Added Struct => `[]=`
|
58
|
+
### Changed
|
59
|
+
- Rename Time => `emperical => imperical`
|
60
|
+
- Rename Enumerable => `multiply => produce`
|
61
|
+
- Rename Enumerable => `divisible => quotient`
|
62
|
+
|
9
63
|
## [1.0.1] - 2019-07-12
|
10
64
|
### Added
|
11
65
|
- Added String => `acronym`
|
12
66
|
- Added Struct extensions
|
13
67
|
- Added Time => `elapse`
|
14
|
-
|
68
|
+
### Changed
|
15
69
|
- Configuration
|
16
70
|
|
17
71
|
## [1.0.0] - 2019-07-12
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -38,7 +38,7 @@ Or install it yourself as:
|
|
38
38
|
```ruby
|
39
39
|
Lite::Ruby.configure do |config|
|
40
40
|
config.monkey_patches = %w[
|
41
|
-
array date enumerable hash integer kernel numeric object range string struct time
|
41
|
+
array date enumerable hash integer kernel numeric object open_struct range string struct time
|
42
42
|
]
|
43
43
|
end
|
44
44
|
```
|
@@ -53,6 +53,7 @@ end
|
|
53
53
|
* [Kernel](https://github.com/drexed/lite-ruby/blob/master/docs/KERNEL.md)
|
54
54
|
* [Numeric](https://github.com/drexed/lite-ruby/blob/master/docs/NUMERIC.md)
|
55
55
|
* [Object](https://github.com/drexed/lite-ruby/blob/master/docs/OBJECT.md)
|
56
|
+
* [Open Struct](https://github.com/drexed/lite-ruby/blob/master/docs/OPEN_STRUCT.md)
|
56
57
|
* [Range](https://github.com/drexed/lite-ruby/blob/master/docs/RANGE.md)
|
57
58
|
* [String](https://github.com/drexed/lite-ruby/blob/master/docs/STRING.md)
|
58
59
|
* [Struct](https://github.com/drexed/lite-ruby/blob/master/docs/STRUCT.md)
|
data/docs/ARRAY.md
CHANGED
@@ -176,7 +176,7 @@ Converts blank values into `nil`.
|
|
176
176
|
Generates a hash mapping each unique element in the array to the relative frequency, i.e. the probability, of it appearance.
|
177
177
|
|
178
178
|
```ruby
|
179
|
-
[:a,:b,:c,:c].probability #=> { a: 0.25,b: 0.25,c: 0.5 }
|
179
|
+
[:a,:b,:c,:c].probability #=> { a: 0.25, b: 0.25, c: 0.5 }
|
180
180
|
```
|
181
181
|
|
182
182
|
`promote(!)`
|
data/docs/ENUMERABLE.md
CHANGED
@@ -5,27 +5,25 @@
|
|
5
5
|
Groups together adjacent elements into a list of sub-arrays.
|
6
6
|
|
7
7
|
```ruby
|
8
|
-
[2,2,2,3,3,4,2,2,1].cluster { |x| x } #=> [[2,2,2],[3,3],[4],[2,2],[1]]
|
8
|
+
[2, 2, 2, 3, 3, 4, 2, 2, 1].cluster { |x| x } #=> [[2, 2, 2], [3, 3], [4], [2, 2], [1]]
|
9
9
|
```
|
10
10
|
|
11
|
-
`
|
11
|
+
`cluster_by`
|
12
12
|
------
|
13
|
-
|
13
|
+
Similar to `group_by` but returns an array of the groups.
|
14
14
|
|
15
15
|
```ruby
|
16
|
-
[].
|
17
|
-
[].deduce(nil) #=> nil
|
18
|
-
[1,2,3].deduce #=> -4
|
16
|
+
%w[this is a test].cluster_by { |x| x[0] } #=> [['a'], ['is'], ['this', 'test']]
|
19
17
|
```
|
20
18
|
|
21
|
-
`
|
19
|
+
`deduce`
|
22
20
|
------
|
23
|
-
Returns the
|
21
|
+
Returns the difference of a collection of numbers.
|
24
22
|
|
25
23
|
```ruby
|
26
|
-
[].
|
27
|
-
[].
|
28
|
-
[
|
24
|
+
[].deduce #=> 0
|
25
|
+
[].deduce(nil) #=> nil
|
26
|
+
[1,2,3].deduce #=> -4
|
29
27
|
```
|
30
28
|
|
31
29
|
`drop_last`
|
@@ -94,6 +92,14 @@ Returns the exponential of a collection of numbers.
|
|
94
92
|
[2,3,4].exponential #=> 4096
|
95
93
|
```
|
96
94
|
|
95
|
+
`frequency` aka `occurrences`
|
96
|
+
------
|
97
|
+
Generates a hash mapping each unique symbol in the array to the absolute frequency it appears.
|
98
|
+
|
99
|
+
```ruby
|
100
|
+
%i[a a b c c c].frequency #=> { a: 2, b: 1, c: 3 }
|
101
|
+
```
|
102
|
+
|
97
103
|
`incase?`
|
98
104
|
------
|
99
105
|
The same as `include?` but tested using `===` instead of `==`.
|
@@ -123,23 +129,36 @@ Returns if a collection has more than one element while respecting `nil` and `fa
|
|
123
129
|
|
124
130
|
```
|
125
131
|
|
126
|
-
`
|
132
|
+
`occur`
|
133
|
+
------
|
134
|
+
Returns an array of elements for the elements that occur n times.
|
135
|
+
|
136
|
+
```ruby
|
137
|
+
a1 = [1, 1, 2, 3, 3, 4, 5, 5]
|
138
|
+
|
139
|
+
a1.occur(2) #=> [1, 3, 5]
|
140
|
+
a1.occur(2..3) #=> [1, 3, 5]
|
141
|
+
a1.occur { |n| n > 1 } #=> [1, 3, 5]
|
142
|
+
```
|
143
|
+
|
144
|
+
`produce`
|
127
145
|
------
|
128
146
|
Returns the multiplication of a collection of numbers.
|
129
147
|
|
130
148
|
```ruby
|
131
|
-
[].
|
132
|
-
[].
|
133
|
-
[1,2,3].
|
149
|
+
[].produce #=> 0
|
150
|
+
[].produce(nil) #=> nil
|
151
|
+
[1,2,3].produce #=> 6
|
134
152
|
```
|
135
153
|
|
136
|
-
`
|
154
|
+
`quotient`
|
137
155
|
------
|
138
|
-
Returns
|
156
|
+
Returns the division of a collection of numbers.
|
139
157
|
|
140
158
|
```ruby
|
141
|
-
[].
|
142
|
-
[
|
159
|
+
[].quotient #=> 0
|
160
|
+
[].quotient(nil) #=> nil
|
161
|
+
[16,4,2].quotient #=> 2
|
143
162
|
```
|
144
163
|
|
145
164
|
`several?`
|
@@ -153,6 +172,18 @@ Returns if collection has more than one element while not respecting `nil` and `
|
|
153
172
|
[1,1,3,3].several?(&:even?) #=> false
|
154
173
|
```
|
155
174
|
|
175
|
+
`squeeze`
|
176
|
+
------
|
177
|
+
Squeeze out the same elements.
|
178
|
+
|
179
|
+
```ruby
|
180
|
+
a1 = [1, 2, 2, 3, 3, 2, 1]
|
181
|
+
|
182
|
+
a1.squeeze #=> [1, 2, 3, 2, 1]
|
183
|
+
a1.sort.squeeze #=> [1, 2, 3]
|
184
|
+
a1.squeeze(3) #=> [1, 2, 2, 3, 2, 1]
|
185
|
+
```
|
186
|
+
|
156
187
|
`take_last`
|
157
188
|
------
|
158
189
|
Returns the last number of elements of a collection.
|
@@ -160,7 +191,7 @@ Returns the last number of elements of a collection.
|
|
160
191
|
```ruby
|
161
192
|
[].take_last(1) #=> []
|
162
193
|
[1,2,3].take_last(1) #=> [3]
|
163
|
-
[1,2,3].take_last(2) #=> [2,3]
|
194
|
+
[1,2,3].take_last(2) #=> [2, 3]
|
164
195
|
```
|
165
196
|
|
166
197
|
`take_last_if`
|
data/docs/HASH.md
CHANGED
@@ -1,5 +1,24 @@
|
|
1
1
|
# Hash
|
2
2
|
|
3
|
+
`zip`
|
4
|
+
------
|
5
|
+
Creates a new hash from two separate arrays.
|
6
|
+
|
7
|
+
```ruby
|
8
|
+
Hash.zip(%i[a b c], [1, 2, 3]) #=> { a: 1, b: 2, c: 3 }
|
9
|
+
```
|
10
|
+
|
11
|
+
`alias`
|
12
|
+
------
|
13
|
+
Adds a key/value pair from an existing key/value pair.
|
14
|
+
|
15
|
+
```ruby
|
16
|
+
h1 = { foo: 'bar', baz: 'boo' }
|
17
|
+
h1.alias('boo', :foo)
|
18
|
+
|
19
|
+
h1['boo'] #=> 'bar'
|
20
|
+
```
|
21
|
+
|
3
22
|
`assert_valid_keys!`
|
4
23
|
------
|
5
24
|
Raises an error if key is not included in a list of keys.
|
@@ -46,6 +65,14 @@ Updates a deeply nested value.
|
|
46
65
|
{ foo: { baz: 'boo' } }.bury(:foo) #=> raises ArgumentError: '2 or more arguments required'
|
47
66
|
```
|
48
67
|
|
68
|
+
`collate(!)`
|
69
|
+
------
|
70
|
+
Merge the values of this hash with those from another, setting all values to be arrays representing the values from both hashes.
|
71
|
+
|
72
|
+
```ruby
|
73
|
+
{ a: 1, b: 2 }.collate(a: 3, b: 4, c: 5) #=> { a: [1, 3], b: [2, 4], c: [5] }
|
74
|
+
```
|
75
|
+
|
49
76
|
`collect_keys`
|
50
77
|
------
|
51
78
|
Returns an array with all keys converted using the block operation.
|
@@ -64,6 +91,27 @@ Returns an array with all values converted using the block operation.
|
|
64
91
|
{ foo: 'bar', baz: :boo }.collect_values { |k| k.to_s.upcase } #=> ['BAR', BOO']
|
65
92
|
```
|
66
93
|
|
94
|
+
`dearray_values(!)`
|
95
|
+
------
|
96
|
+
Any array values will be replaced with the first element of the array and arrays with no elements will be set to `nil`.
|
97
|
+
|
98
|
+
```ruby
|
99
|
+
h1 = { a: [1], b: [1, 2], c: 3, d: [] }
|
100
|
+
|
101
|
+
h1.dearray_values #=> { a: 1, b: 1, c: 3, d: nil }
|
102
|
+
h1.dearray_values!(1) #=> { a: 1, b: 2, c: 3, d: nil }
|
103
|
+
```
|
104
|
+
|
105
|
+
`dearray_singular_values(!)`
|
106
|
+
------
|
107
|
+
Any array values with one or no elements will be set to the element or `nil`.
|
108
|
+
|
109
|
+
```ruby
|
110
|
+
h1 = { a: [1], b: [1, 2], c: 3, d: [] }
|
111
|
+
|
112
|
+
h1.dearray_singular_values #=> { a: 1, b: [1, 2], c: 3, d: nil }
|
113
|
+
```
|
114
|
+
|
67
115
|
`deep_merge(!)`
|
68
116
|
------
|
69
117
|
Returns a new hash with self and other_hash merged recursively.
|
@@ -75,6 +123,28 @@ h2 = { a: false, b: { x: [3, 4, 5] } }
|
|
75
123
|
h1.deep_merge(h2) #=> { a: false, b: { c: [1, 2, 3], x: [3, 4, 5] } }
|
76
124
|
```
|
77
125
|
|
126
|
+
`delete_unless`
|
127
|
+
------
|
128
|
+
Inverse of `delete_if`.
|
129
|
+
|
130
|
+
```ruby
|
131
|
+
h1 = { a: 1, b: 2, c: 3 }
|
132
|
+
h1.delete_unless { |_, v| v == 1 }
|
133
|
+
|
134
|
+
h1 #=> { a: 1 }
|
135
|
+
```
|
136
|
+
|
137
|
+
`delete_values`
|
138
|
+
------
|
139
|
+
Delete key/value pairs by value.
|
140
|
+
|
141
|
+
```ruby
|
142
|
+
h1 = { a: 1, b: 2 }
|
143
|
+
h1.delete_values(1)
|
144
|
+
|
145
|
+
h1 #=> { b: 2 }
|
146
|
+
```
|
147
|
+
|
78
148
|
`demote(!)`
|
79
149
|
------
|
80
150
|
Moves a key value pair to the tail of the hash.
|
@@ -93,6 +163,18 @@ Converts `nil` into a given value.
|
|
93
163
|
{ abc: nil, xyz: 1 }.denillify!(9) #=> { abc: 9, xyz: 1 }
|
94
164
|
```
|
95
165
|
|
166
|
+
`diff`
|
167
|
+
------
|
168
|
+
Difference comparison of two hashes.
|
169
|
+
|
170
|
+
```ruby
|
171
|
+
h1 = { a: 1, b: 2 }
|
172
|
+
h2 = { a: 1, b: 3 }
|
173
|
+
|
174
|
+
h1.diff(h2) #=> { b: 2 }
|
175
|
+
h2.diff(h1) #=> { b: 3 }
|
176
|
+
```
|
177
|
+
|
96
178
|
`except(!)`
|
97
179
|
------
|
98
180
|
Returns a hash that includes everything but the given keys.
|
@@ -121,6 +203,38 @@ Returns a hash that is transformed in place.
|
|
121
203
|
{ a: 1, b: 2, c: 3 }.hmap { |k, v| { k => v + 3 } } #=> { a: 4, b: 5, c: 6 }
|
122
204
|
```
|
123
205
|
|
206
|
+
`insert`
|
207
|
+
------
|
208
|
+
As with `store` but only if the key isn't already in the hash.
|
209
|
+
|
210
|
+
```ruby
|
211
|
+
h1 = { a: 1, b: 2 }
|
212
|
+
|
213
|
+
h1.insert(:c, 3) #=> true
|
214
|
+
h1.insert(:b, 3) #=> false
|
215
|
+
```
|
216
|
+
|
217
|
+
`invert`
|
218
|
+
------
|
219
|
+
Create an inverse hash by storing multiple values in arrays.
|
220
|
+
|
221
|
+
```ruby
|
222
|
+
h1 = { a: 3, b: 3, c: 3, d: 2, e: 9, f: 3, g: 9 }
|
223
|
+
|
224
|
+
h1.invert #=> { 2 => :d, 3 => %i[f c b a], 9 => %i[g e] }
|
225
|
+
```
|
226
|
+
|
227
|
+
`keys?` aka `has_keys?`
|
228
|
+
------
|
229
|
+
Returns if hash contains the given keys.
|
230
|
+
|
231
|
+
```ruby
|
232
|
+
h1 = { a: 0, b: 1 }
|
233
|
+
|
234
|
+
h1.keys?(:a, :b) #=> true
|
235
|
+
h1.keys?(:z) #=> false
|
236
|
+
```
|
237
|
+
|
124
238
|
`nillify(!)`
|
125
239
|
------
|
126
240
|
Transforms all blank values to `nil`.
|
@@ -138,6 +252,17 @@ Returns only key value pairs matching certain keys and any missing one.
|
|
138
252
|
{ :foo => 1, baz: 2 }.only_fill(:foo, :bar, placeholder: 0) #=> { foo: 1, bar: 0 }
|
139
253
|
```
|
140
254
|
|
255
|
+
`only_keys?` aka `has_only_keys?`
|
256
|
+
------
|
257
|
+
Returns if hash contains only the given keys.
|
258
|
+
|
259
|
+
```ruby
|
260
|
+
h1 = { a: 0, b: 1 }
|
261
|
+
|
262
|
+
h1.only_keys?(:a, :b) #=> true
|
263
|
+
h1.only_keys?(:a) #=> false
|
264
|
+
```
|
265
|
+
|
141
266
|
`pair?`
|
142
267
|
------
|
143
268
|
Returns if the hash has a key with a matching value.
|
@@ -271,6 +396,30 @@ Converts an object to have an object like API.
|
|
271
396
|
{ foo: { bar: true } }.to_object.foo.bar #=> true
|
272
397
|
```
|
273
398
|
|
399
|
+
`update_each`
|
400
|
+
------
|
401
|
+
Iterate over hash updating the key/value pair.
|
402
|
+
|
403
|
+
```ruby
|
404
|
+
{ a: 1, b: 2 }.update_each { |k, v| { "#{k}!" => v + 1 } } #=> { 'a!' => 2, 'b!' => 3 }
|
405
|
+
```
|
406
|
+
|
407
|
+
`update_keys`
|
408
|
+
------
|
409
|
+
Iterate over hash updating just the keys.
|
410
|
+
|
411
|
+
```ruby
|
412
|
+
{ a: 1, b: 2 }.update_keys { |k| "#{k}!" } #=> { 'a!' => 1, 'b!' => 2 }
|
413
|
+
```
|
414
|
+
|
415
|
+
`update_values`
|
416
|
+
------
|
417
|
+
Iterate over hash updating just the values.
|
418
|
+
|
419
|
+
```ruby
|
420
|
+
{ a: 1, b: 2 }.update_values { |v| v + 1 } #=> { a: 2, b: 3 }
|
421
|
+
```
|
422
|
+
|
274
423
|
`vacant?`
|
275
424
|
------
|
276
425
|
Returns if the value of a key is blank?.
|
data/docs/INTEGER.md
CHANGED
@@ -1,5 +1,50 @@
|
|
1
1
|
# Integer
|
2
2
|
|
3
|
+
`bit`
|
4
|
+
------
|
5
|
+
Calculates the bit of an integer.
|
6
|
+
|
7
|
+
```ruby
|
8
|
+
0.bit(4) #=> 16
|
9
|
+
10.bit(-4) #=> 2
|
10
|
+
0b0100.bit(-3) #=> 0
|
11
|
+
```
|
12
|
+
|
13
|
+
`bit?`
|
14
|
+
------
|
15
|
+
Returns if it is a bit set.
|
16
|
+
|
17
|
+
```ruby
|
18
|
+
8.bit?(3) #=> true
|
19
|
+
8.bit?(2) #=> false
|
20
|
+
```
|
21
|
+
|
22
|
+
`bit_clear`
|
23
|
+
------
|
24
|
+
Clears a bit.
|
25
|
+
|
26
|
+
```ruby
|
27
|
+
4.bit_clear(2) #=> 0
|
28
|
+
```
|
29
|
+
|
30
|
+
`bitmask`
|
31
|
+
------
|
32
|
+
Calculates a bitmask of an integer.
|
33
|
+
|
34
|
+
```ruby
|
35
|
+
1.bitmask(6) #=> 7
|
36
|
+
7.bitmask(~2) #=> 5
|
37
|
+
```
|
38
|
+
|
39
|
+
`bitmask?`
|
40
|
+
------
|
41
|
+
Returns if it is a bitmask set.
|
42
|
+
|
43
|
+
```ruby
|
44
|
+
8.bitmask?(3) #=> true
|
45
|
+
8.bitmask?(2) #=> false
|
46
|
+
```
|
47
|
+
|
3
48
|
`factorial`
|
4
49
|
------
|
5
50
|
Calculates the factorial of an integer.
|