lite-ruby 1.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 +7 -0
- data/.fasterer.yml +19 -0
- data/.gitignore +11 -0
- data/.rspec +4 -0
- data/.rubocop.yml +32 -0
- data/.travis.yml +24 -0
- data/CHANGELOG.md +11 -0
- data/CODE_OF_CONDUCT.md +74 -0
- data/Gemfile +6 -0
- data/Gemfile.lock +119 -0
- data/LICENSE.txt +21 -0
- data/README.md +96 -0
- data/Rakefile +8 -0
- data/_config.yml +1 -0
- data/bin/console +15 -0
- data/bin/setup +8 -0
- data/docs/ARRAY.md +284 -0
- data/docs/DATE.md +78 -0
- data/docs/ENUMERABLE.md +174 -0
- data/docs/HASH.md +282 -0
- data/docs/INTEGER.md +43 -0
- data/docs/KERNEL.md +31 -0
- data/docs/NUMERIC.md +302 -0
- data/docs/OBJECT.md +322 -0
- data/docs/RANGE.md +55 -0
- data/docs/STRING.md +463 -0
- data/docs/TIME.md +86 -0
- data/lib/generators/lite/ruby/install_generator.rb +17 -0
- data/lib/generators/lite/ruby/templates/install.rb +15 -0
- data/lib/lite/ruby.rb +16 -0
- data/lib/lite/ruby/array.rb +290 -0
- data/lib/lite/ruby/configuration.rb +42 -0
- data/lib/lite/ruby/date.rb +27 -0
- data/lib/lite/ruby/enumerable.rb +167 -0
- data/lib/lite/ruby/hash.rb +284 -0
- data/lib/lite/ruby/helpers/date_helper.rb +105 -0
- data/lib/lite/ruby/helpers/time_helper.rb +84 -0
- data/lib/lite/ruby/integer.rb +45 -0
- data/lib/lite/ruby/kernel.rb +29 -0
- data/lib/lite/ruby/numeric.rb +210 -0
- data/lib/lite/ruby/object.rb +182 -0
- data/lib/lite/ruby/range.rb +32 -0
- data/lib/lite/ruby/string.rb +412 -0
- data/lib/lite/ruby/time.rb +26 -0
- data/lib/lite/ruby/version.rb +9 -0
- data/lite-ruby.gemspec +48 -0
- metadata +200 -0
data/_config.yml
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
theme: jekyll-theme-leap-day
|
data/bin/console
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
require 'bundler/setup'
|
5
|
+
require 'lite/ruby'
|
6
|
+
|
7
|
+
# You can add fixtures and/or initialization code here to make experimenting
|
8
|
+
# with your gem easier. You can also use a different console, if you like.
|
9
|
+
|
10
|
+
# (If you use this, don't forget to add pry to your Gemfile!)
|
11
|
+
# require "pry"
|
12
|
+
# Pry.start
|
13
|
+
|
14
|
+
require 'irb'
|
15
|
+
IRB.start(__FILE__)
|
data/bin/setup
ADDED
data/docs/ARRAY.md
ADDED
@@ -0,0 +1,284 @@
|
|
1
|
+
# Array
|
2
|
+
|
3
|
+
`assert_valid_values!`
|
4
|
+
------
|
5
|
+
Raises an error if key is not included in a list of values.
|
6
|
+
|
7
|
+
```ruby
|
8
|
+
{}.assert_valid_values!(:foo) #=> {}
|
9
|
+
{ foo: 'bar' }.assert_valid_values!(:foo) #=> { foo: 'bar' }
|
10
|
+
{ baz: 'boz' }.assert_valid_values!(:foo, :boo) #=> raises ArgumentError: 'Invalid value: ":baz". Allowed values are: ":foo", ":boo"'
|
11
|
+
```
|
12
|
+
|
13
|
+
`assert_all_valid_values!`
|
14
|
+
------
|
15
|
+
Raises like an error like `assert_valid_values!` but also on empty.
|
16
|
+
|
17
|
+
```ruby
|
18
|
+
{}.assert_all_valid_values!(:foo) #=> raises ArgumentError: 'An empty array is not allowed'
|
19
|
+
```
|
20
|
+
|
21
|
+
`after`
|
22
|
+
------
|
23
|
+
Returns the value after a given value.
|
24
|
+
|
25
|
+
```ruby
|
26
|
+
['1', '2', '3'].after('2') #=> '3'
|
27
|
+
['1', '2', '3'].after('3') #=> '1'
|
28
|
+
['1', '2', '3'].after('4') #=> nil
|
29
|
+
```
|
30
|
+
|
31
|
+
`bury`
|
32
|
+
------
|
33
|
+
Updates a deeply nested value.
|
34
|
+
|
35
|
+
```ruby
|
36
|
+
['1', ['2']].bury(1, '3') #=> ['1', '3']
|
37
|
+
['1', ['2']].bury(1, 0, '3') #=> ['1', ['3']]
|
38
|
+
['1', ['2']].bury(1) #=> raises ArgumentError: '2 or more arguments required'
|
39
|
+
```
|
40
|
+
|
41
|
+
`before`
|
42
|
+
------
|
43
|
+
Returns the value before a given value.
|
44
|
+
|
45
|
+
```ruby
|
46
|
+
['1', '2', '3'].before('2') #=> '1'
|
47
|
+
['1', '2', '3'].before('1') #=> '3'
|
48
|
+
['1', '2', '3'].before('4') #=> nil
|
49
|
+
```
|
50
|
+
|
51
|
+
`delete_first(!)`
|
52
|
+
------
|
53
|
+
Removes the first element from an array. Like `shift`, but returns the array instead of the removed element.
|
54
|
+
|
55
|
+
```ruby
|
56
|
+
['1', '2', '3'].delete_first #=> ['2', '3']
|
57
|
+
```
|
58
|
+
|
59
|
+
`delete_last(!)`
|
60
|
+
------
|
61
|
+
Removes the last element from an array. Like `pop`, but returns the array instead of the removed element.
|
62
|
+
|
63
|
+
```ruby
|
64
|
+
['1', '2', '3'].delete_last #=> ['1', '2']
|
65
|
+
```
|
66
|
+
|
67
|
+
`delete_values`
|
68
|
+
------
|
69
|
+
Delete multiple values from array.
|
70
|
+
|
71
|
+
```ruby
|
72
|
+
[1, 2, 3, 4].delete_values(1, 3) #=> [2, 4]
|
73
|
+
```
|
74
|
+
|
75
|
+
`demote(!)`
|
76
|
+
------
|
77
|
+
Moves a given value to the tail of array.
|
78
|
+
|
79
|
+
```ruby
|
80
|
+
[1, 2, 2, 3].demote(2) #=> [1, 3, 2, 2]
|
81
|
+
[1, 2, 2, 3].demote!(4) #=> [1, 2, 2, 3]
|
82
|
+
```
|
83
|
+
|
84
|
+
`denillify(!)`
|
85
|
+
------
|
86
|
+
Converts `nil` into a given value.
|
87
|
+
|
88
|
+
```ruby
|
89
|
+
[nil, 3, 4].denillify #=> [0, 3, 4]
|
90
|
+
[nil, 3, 4].denillify!(9) #=> [9, 3, 4]
|
91
|
+
```
|
92
|
+
|
93
|
+
`duplicates`
|
94
|
+
------
|
95
|
+
Returns a list of duplicate elements.
|
96
|
+
|
97
|
+
```ruby
|
98
|
+
[1, 1, 2, 2, 2, 3].duplicates #=> [1, 2]
|
99
|
+
[1, 1, 2, 2, 2, 3].duplicates(3) #=> [2]
|
100
|
+
```
|
101
|
+
|
102
|
+
`from`
|
103
|
+
------
|
104
|
+
Returns the tail of the array from a given position.
|
105
|
+
|
106
|
+
```ruby
|
107
|
+
['1', '2', '3'].from(0) #=> ['1', '2', '3']
|
108
|
+
['1', '2', '3'].from(1) #=> ['2', '3']
|
109
|
+
['1', '2', '3'].from(-1) #=> ['3']
|
110
|
+
```
|
111
|
+
|
112
|
+
`fulfill`
|
113
|
+
------
|
114
|
+
Returns an array filled to given size.
|
115
|
+
|
116
|
+
```ruby
|
117
|
+
['1', '2'].fulfill('x', 4) #=> ['1', '2', 'x', 'x']
|
118
|
+
```
|
119
|
+
|
120
|
+
`groups`
|
121
|
+
------
|
122
|
+
Splits or iterates over the array to a given number of groups.
|
123
|
+
|
124
|
+
```ruby
|
125
|
+
%w(1 2 3 4 5 6 7 8 9 10).groups(3) #=> [['1', '2', '3', '4'], ['5', '6', '7'], ['8', '9', '10']]
|
126
|
+
```
|
127
|
+
|
128
|
+
`in_groups`
|
129
|
+
------
|
130
|
+
Splits or iterates over the array to a given number of groups, padding any remaining slots with filler unless it is `false`.
|
131
|
+
|
132
|
+
```ruby
|
133
|
+
%w(1 2 3 4 5 6 7 8 9 10).in_groups(3) #=> [['1', '2', '3', '4'], ['5', '6', '7', nil], ['8', '9', '10', nil]]
|
134
|
+
%w(1 2 3 4 5 6 7 8 9 10).in_groups(3, ' ') #=> [['1', '2', '3', '4'], ['5', '6', '7', ' '], ['8', '9', '10', ' ']]
|
135
|
+
%w(1 2 3 4 5 6 7 8 9 10).in_groups(3, false) #=> [['1', '2', '3', '4'], ['5', '6', '7'], ['8', '9', '10']]
|
136
|
+
```
|
137
|
+
|
138
|
+
`in_groups_of`
|
139
|
+
------
|
140
|
+
Splits or iterates over the array in groups of a given size number, padding any remaining slots with filler unless it is `false`.
|
141
|
+
|
142
|
+
```ruby
|
143
|
+
%w(1 2 3 4 5 6 7 8 9 10).in_groups_of(3) #=> [['1', '2', '3'], ['4', '5', '6'], ['7', '8', '9'], ['10', nil, nil]]
|
144
|
+
%w(1 2 3 4 5 6 7 8 9 10).in_groups_of(3, ' ') #=> [['1', '2', '3'], ['4', '5', '6'], ['7', '8', '9'], ['10', ' ', ' ']]
|
145
|
+
%w(1 2 3 4 5 6 7 8 9 10).in_groups_of(3, false) #=> [['1', '2', '3'], ['4', '5', '6'], ['7', '8', '9'], ['10']]
|
146
|
+
```
|
147
|
+
|
148
|
+
`indexes` aka `indicies`
|
149
|
+
------
|
150
|
+
Returns all indexes of the matching value.
|
151
|
+
|
152
|
+
```ruby
|
153
|
+
[:a,:b,:a,:c].indexes(:a) #=> [0, 2]
|
154
|
+
```
|
155
|
+
|
156
|
+
`merge(!)`
|
157
|
+
------
|
158
|
+
Concats multiple arrays.
|
159
|
+
|
160
|
+
```ruby
|
161
|
+
[1, 2].merge([3, 4], [5, 6]) #=> [1, 2, 3, 4, 5, 6]
|
162
|
+
```
|
163
|
+
|
164
|
+
`nillify(!)`
|
165
|
+
------
|
166
|
+
Converts blank values into `nil`.
|
167
|
+
|
168
|
+
```ruby
|
169
|
+
[nil, 3, 4].nillify #=> [nil, 3, 4]
|
170
|
+
[' ', 3, 4].nillify #=> [nil, 3, 4]
|
171
|
+
['', 3, 4].nillify! #=> [nil, 3, 4]
|
172
|
+
```
|
173
|
+
|
174
|
+
`probability`
|
175
|
+
------
|
176
|
+
Generates a hash mapping each unique element in the array to the relative frequency, i.e. the probability, of it appearance.
|
177
|
+
|
178
|
+
```ruby
|
179
|
+
[:a,:b,:c,:c].probability #=> { a: 0.25,b: 0.25,c: 0.5 }
|
180
|
+
```
|
181
|
+
|
182
|
+
`promote(!)`
|
183
|
+
------
|
184
|
+
Moves a given value to head of array.
|
185
|
+
|
186
|
+
```ruby
|
187
|
+
[1, 2, 2, 3].promote(2) #=> [2, 2, 1, 3]
|
188
|
+
[1, 2, 2, 3].promote!(4) #=> [1, 2, 2, 3]
|
189
|
+
```
|
190
|
+
|
191
|
+
`position`
|
192
|
+
------
|
193
|
+
Returns the position of the first matching value.
|
194
|
+
|
195
|
+
```ruby
|
196
|
+
[:a,:b,:a,:c].position(:a) #=> 1
|
197
|
+
```
|
198
|
+
|
199
|
+
`positions`
|
200
|
+
------
|
201
|
+
Returns all of the positions of the matching value.
|
202
|
+
|
203
|
+
```ruby
|
204
|
+
[:a,:b,:a,:c].positions(:a) #=> [1, 3]
|
205
|
+
```
|
206
|
+
|
207
|
+
`reject_values`
|
208
|
+
------
|
209
|
+
Delete multiple values from a `dup` copy of the original array.
|
210
|
+
|
211
|
+
```ruby
|
212
|
+
[1, 2, 3, 4, 5].reject_values(2, 4) #=> [1, 3, 5]
|
213
|
+
```
|
214
|
+
|
215
|
+
`rposition`
|
216
|
+
------
|
217
|
+
Returns the position of the last matching value.
|
218
|
+
|
219
|
+
```ruby
|
220
|
+
[:a,:b,:a,:c].rposition(:a) #=> 3
|
221
|
+
```
|
222
|
+
|
223
|
+
`sample!`
|
224
|
+
------
|
225
|
+
Deletes a random value and returns that value.
|
226
|
+
|
227
|
+
```ruby
|
228
|
+
[1, 2, 3, 4, 5].sample! #=> 2
|
229
|
+
```
|
230
|
+
|
231
|
+
`split`
|
232
|
+
------
|
233
|
+
Divides the array into one or more subarrays based on a delimiting value or the result of an optional block.
|
234
|
+
|
235
|
+
```ruby
|
236
|
+
[1, 2, 3, 4, 5].split(3) # => [[1, 2], [4, 5]]
|
237
|
+
(1..10).to_a.split { |i| i % 3 == 0 } # => [[1, 2], [4, 5], [7, 8], [10]]
|
238
|
+
```
|
239
|
+
|
240
|
+
`strip(!)`
|
241
|
+
------
|
242
|
+
Removes blank elements from an array.
|
243
|
+
|
244
|
+
```ruby
|
245
|
+
['this', '', 'that', nil, false].strip #=> ['this', 'that']
|
246
|
+
'this is a test'.split(' ').strip #=> ['this', 'is', 'a', 'test']
|
247
|
+
```
|
248
|
+
|
249
|
+
`swap`
|
250
|
+
------
|
251
|
+
Switches the places of two elements.
|
252
|
+
|
253
|
+
```ruby
|
254
|
+
[1, 2, 3].swap(0, 2) #=> [3, 2, 1]
|
255
|
+
```
|
256
|
+
|
257
|
+
`to`
|
258
|
+
------
|
259
|
+
Returns the beginning of the array up to a given position.
|
260
|
+
|
261
|
+
```ruby
|
262
|
+
['1', '2', '3'].to(0) #=> ['1']
|
263
|
+
['1', '2', '3'].to(1) #=> ['1', '2']
|
264
|
+
['1', '2', '3'].to(-1) #=> ['3']
|
265
|
+
```
|
266
|
+
|
267
|
+
`to_sentence`
|
268
|
+
------
|
269
|
+
Converts the array to a comma-separated sentence where the last element is joined by the connector word.
|
270
|
+
|
271
|
+
Option | Type | Default
|
272
|
+
--- | --- | ---
|
273
|
+
words_connector | string | ', '
|
274
|
+
two_words_connector | string | ' and '
|
275
|
+
last_word_connector | string | ', and '
|
276
|
+
|
277
|
+
```ruby
|
278
|
+
[].to_sentence #=> ''
|
279
|
+
['one'].to_sentence #=> 'one'
|
280
|
+
['one', 'two'].to_sentence #=> 'one and two'
|
281
|
+
['one', 'two', 'three'].to_sentence #=> 'one,two,and three'
|
282
|
+
['one', 'two'].to_sentence(two_words_connector: '-') #=> 'one-two'
|
283
|
+
['one', 'two', 'three'].to_sentence(words_connector: ' or ',last_word_connector: ' or at least ') #=> 'one or two or at least three'
|
284
|
+
```
|
data/docs/DATE.md
ADDED
@@ -0,0 +1,78 @@
|
|
1
|
+
# Date
|
2
|
+
|
3
|
+
`format`
|
4
|
+
------
|
5
|
+
Converts a `date` object to `strftime` it using a human readable string.
|
6
|
+
|
7
|
+
| Directive | Type | Key | `strftime` | Result |
|
8
|
+
| --- | --- | --- | --- | --- |
|
9
|
+
| Weekday | Monday | `w`, `weekday` | %u | (1..7) |
|
10
|
+
| Weekday | Sunday | `ww`, `weekday_offset` | %w | (0..6) |
|
11
|
+
| Weekday | Name | `www`, `weekday_name` | %A | Sunday |
|
12
|
+
| Weekday | Name abbr | `wwww`, `weekday_name_abbr` | %a | Sun |
|
13
|
+
| Day | Zero-padded | `d`, `day`, `day_padded` | %d | (01..31) |
|
14
|
+
| Day | Unpadded | `dd`, `Day`, `day_unpadded` | %-d | (1..31) |
|
15
|
+
| Day | Blank-padded | `ddd`, `DAY`, `day_blank` | %_d | ( 1..31) |
|
16
|
+
| Day | Day of the year | `dddd`, `day_of_the_year` | %j | (001..366) |
|
17
|
+
| Month | Zero-padded | `m`, `month`, `month_padded` | %m | (01..12) |
|
18
|
+
| Month | Unpadded | `mm`, `Month`, `month_unpadded` | %-m | (1..12) |
|
19
|
+
| Month | Blank-padded | `mmm`, `MONTH`, `day_blank` | %_m | ( 1..12) |
|
20
|
+
| Month | Name | `mmmm`, `month_name` | %B | January |
|
21
|
+
| Month | Name abbr | `mmmmm`, `month_name_abbr` | %b | Jan |
|
22
|
+
| Week | ISO | `we`, `week` | %V | (00..53) |
|
23
|
+
| Week | Monday | `mwe`, `monday_week` | %W | (00..53) |
|
24
|
+
| Week | Sunday | `swe`, `sunday_week` | %U | (00..53) |
|
25
|
+
| Year | 2 Digits | `yy`, `yr` | %y | (00..99) |
|
26
|
+
| Year | 4 Digits | `yyyy`, `year` | %Y | 1999 |
|
27
|
+
|
28
|
+
```ruby
|
29
|
+
Date.today.format('month_name day, year') #=> 'May 05, 2000'
|
30
|
+
```
|
31
|
+
|
32
|
+
`stamp` aka `to_format`
|
33
|
+
------
|
34
|
+
Converts a `date` object to a predefined format.
|
35
|
+
|
36
|
+
#### Base
|
37
|
+
|
38
|
+
| Directive | Type | Key | `strftime` | Result |
|
39
|
+
| --- | --- | --- | --- | --- |
|
40
|
+
| Weekday | Zero-padded | `weekday`, `:weekday_padded` | %d | (01..31) |
|
41
|
+
| Weekday | Blank-padded | `:weekday_blank` | %_d | ( 1..31) |
|
42
|
+
| Weekday | Unpadded | `:weekday_unpadded` | %-d | (1..31) |
|
43
|
+
| Weekday | Name | `:weekday_name` | %A | Sunday |
|
44
|
+
| Weekday | Name abbr | `:weekday_name_abbr` | %a | Sun |
|
45
|
+
| Month | Zero-padded | `:month`, `:month_padded` | %m | (01..12) |
|
46
|
+
| Month | Unpadded | `:month_unpadded` | %-m | (1..12) |
|
47
|
+
| Month | Blank-padded | `:month_blank` | %_m | ( 1..12) |
|
48
|
+
| Month | Name | `:month_name` | %B | January |
|
49
|
+
| Month | Name abbr | `:month_name_abbr` | %b | Jan |
|
50
|
+
| Week | ISO | `:week_iso` | %V | (00..53) |
|
51
|
+
| Week | Sunday | `:week_sunday` | %U | (00..53) |
|
52
|
+
| Week | Monday | `:week_monday` | %W | (00..53) |
|
53
|
+
| Year | 2 Digits | `:yr`, `:year_abbr` | %y | (00..99) |
|
54
|
+
| Year | 4 Digits | `:year` | %Y | 1999 |
|
55
|
+
|
56
|
+
#### Combinations
|
57
|
+
|
58
|
+
| Directive | Type | Key | `strftime` | Result |
|
59
|
+
| --- | --- | --- | --- | --- |
|
60
|
+
| Combo | Month day | `:day` | %B %-d | January 9 |
|
61
|
+
| Combo | Month day | `:day_abbr` | %b %-d | Jan 9 |
|
62
|
+
| Combo | Month day | `:day_iso` | %m-%d | 01-09 |
|
63
|
+
| Combo | Month year | `:month_year`, `:month_padded_year` | %m %Y | (01..12) 2015 |
|
64
|
+
| Combo | Month year | `:month_blank_year` | %_m %Y | ( 1..12) 2015 |
|
65
|
+
| Combo | Month year | `:month_unpadded_year` | %-m %Y | (1..12) 2015 |
|
66
|
+
| Combo | Month year | `:month_name_year` | %B %Y | January 2015 |
|
67
|
+
| Combo | Month year | `:month_name_abbr_year` | %b %Y | Jan 2015 |
|
68
|
+
| Combo | Week year | `:week_year_iso` | %V-%G | 04-2014 |
|
69
|
+
| Combo | Year day | `:year_day` | %Y-%m-%d | 1999-01-21 |
|
70
|
+
| Combo | Year week | `:year_week` | %G-%V | 1999-52 |
|
71
|
+
| Combo | Year month | `:year_month` | %Y-%m | 1999-01 |
|
72
|
+
| Combo | Date | `:date` | %B %-d, %Y | January 9, 2014 |
|
73
|
+
| Combo | Date | `:date_abbr` | %b %-d, %Y | Jan 9, 2014 |
|
74
|
+
| Combo | Date | `:date_iso` | %Y-%m-%d | 2014-01-09 |
|
75
|
+
|
76
|
+
```ruby
|
77
|
+
Date.today.to_format(:year) #=> '2014'
|
78
|
+
```
|
data/docs/ENUMERABLE.md
ADDED
@@ -0,0 +1,174 @@
|
|
1
|
+
# Enumerable
|
2
|
+
|
3
|
+
`cluster`
|
4
|
+
------
|
5
|
+
Groups together adjacent elements into a list of sub-arrays.
|
6
|
+
|
7
|
+
```ruby
|
8
|
+
[2,2,2,3,3,4,2,2,1].cluster { |x| x } #=> [[2,2,2],[3,3],[4],[2,2],[1]]
|
9
|
+
```
|
10
|
+
|
11
|
+
`deduce`
|
12
|
+
------
|
13
|
+
Returns the difference of a collection of numbers.
|
14
|
+
|
15
|
+
```ruby
|
16
|
+
[].deduce #=> 0
|
17
|
+
[].deduce(nil) #=> nil
|
18
|
+
[1,2,3].deduce #=> -4
|
19
|
+
```
|
20
|
+
|
21
|
+
`divisible`
|
22
|
+
------
|
23
|
+
Returns the division of a collection of numbers.
|
24
|
+
|
25
|
+
```ruby
|
26
|
+
[].divisible #=> 0
|
27
|
+
[].divisible(nil) #=> nil
|
28
|
+
[16,4,2].divisible #=> 2
|
29
|
+
```
|
30
|
+
|
31
|
+
`drop_last`
|
32
|
+
------
|
33
|
+
Drops the last number of elements in a collection.
|
34
|
+
|
35
|
+
```ruby
|
36
|
+
[].drop_last(1) #=> []
|
37
|
+
[1,2,3].drop_last(1) #=> [1,2]
|
38
|
+
[1,2,3].drop_last(2) #=> [1]
|
39
|
+
```
|
40
|
+
|
41
|
+
`drop_last_if`
|
42
|
+
------
|
43
|
+
Drops the last number of elements in a collection while it meets a criteria.
|
44
|
+
|
45
|
+
```ruby
|
46
|
+
[].drop_last_if(&:odd?) #=> []
|
47
|
+
[1,2,3].drop_last_if(&:odd?) #=> [1,2]
|
48
|
+
[1,2,3,4].drop_last_if(&:odd?) #=> [1,2,3,4]
|
49
|
+
```
|
50
|
+
|
51
|
+
`exactly?`
|
52
|
+
------
|
53
|
+
Returns if there are exactly the number of an element type.
|
54
|
+
|
55
|
+
```ruby
|
56
|
+
[].exactly?(1) #=> false
|
57
|
+
[1,2,3].exactly?(3) #=> true
|
58
|
+
[1,1,3,3].exactly?(2, &:even?) #=> false
|
59
|
+
```
|
60
|
+
|
61
|
+
`excase?`
|
62
|
+
------
|
63
|
+
The same as `exclude?` but tested using `===` instead of `==`.
|
64
|
+
|
65
|
+
```ruby
|
66
|
+
[1,2,'a'].excase?(String) #=> false
|
67
|
+
[1,2,'a'].excase?(3) #=> true
|
68
|
+
```
|
69
|
+
|
70
|
+
`exclude?`
|
71
|
+
------
|
72
|
+
Returns if the collection does not include an object.
|
73
|
+
|
74
|
+
```ruby
|
75
|
+
[1,2,3].exclude?(4) #=> true
|
76
|
+
[1,2,3].exclude?(3) #=> false
|
77
|
+
```
|
78
|
+
|
79
|
+
`expand`
|
80
|
+
------
|
81
|
+
Expand all elements of an Enumerable object.
|
82
|
+
|
83
|
+
```ruby
|
84
|
+
[0,2..3,5..7].expand #=> [0,[2,3],[5,6,7]]
|
85
|
+
```
|
86
|
+
|
87
|
+
`exponential`
|
88
|
+
------
|
89
|
+
Returns the exponential of a collection of numbers.
|
90
|
+
|
91
|
+
```ruby
|
92
|
+
[].exponential #=> 0
|
93
|
+
[].exponential(nil) #=> nil
|
94
|
+
[2,3,4].exponential #=> 4096
|
95
|
+
```
|
96
|
+
|
97
|
+
`incase?`
|
98
|
+
------
|
99
|
+
The same as `include?` but tested using `===` instead of `==`.
|
100
|
+
|
101
|
+
```ruby
|
102
|
+
[1,2,'a'].incase?(String) #=> true
|
103
|
+
[1,2,'a'].incase?(3) #=> false
|
104
|
+
```
|
105
|
+
|
106
|
+
`interpose`
|
107
|
+
------
|
108
|
+
Returns an Enumerator to add seperators.
|
109
|
+
|
110
|
+
```ruby
|
111
|
+
[1,2,'a'].interpose(:sep).to_a #=> [1,:sep,2,:sep,'a']
|
112
|
+
```
|
113
|
+
|
114
|
+
`many?`
|
115
|
+
------
|
116
|
+
Returns if a collection has more than one element while respecting `nil` and `false` as an element.
|
117
|
+
|
118
|
+
```ruby
|
119
|
+
[].many? #=> false
|
120
|
+
[1,2,3].many? #=> true
|
121
|
+
[1,false,nil].many? #=> true
|
122
|
+
[1,1,3,3].many?(&:even?) #=> false
|
123
|
+
|
124
|
+
```
|
125
|
+
|
126
|
+
`multiple`
|
127
|
+
------
|
128
|
+
Returns the multiplication of a collection of numbers.
|
129
|
+
|
130
|
+
```ruby
|
131
|
+
[].multiple #=> 0
|
132
|
+
[].multiple(nil) #=> nil
|
133
|
+
[1,2,3].multiple #=> 6
|
134
|
+
```
|
135
|
+
|
136
|
+
`occurrences`
|
137
|
+
------
|
138
|
+
Returns a hash of the number of times a value appears in an array.
|
139
|
+
|
140
|
+
```ruby
|
141
|
+
[].occurrences #=> {}
|
142
|
+
[1,:symbol,'string',3,:symbol,1].occurrences #=> { 1 => 2,:symbol => 2,'string' => 1,3 => 1 }
|
143
|
+
```
|
144
|
+
|
145
|
+
`several?`
|
146
|
+
------
|
147
|
+
Returns if collection has more than one element while not respecting `nil` and `false` as an element.
|
148
|
+
|
149
|
+
```ruby
|
150
|
+
[].several? #=> false
|
151
|
+
[1,2,3].several? #=> true
|
152
|
+
[1,false,nil].several? #=> false
|
153
|
+
[1,1,3,3].several?(&:even?) #=> false
|
154
|
+
```
|
155
|
+
|
156
|
+
`take_last`
|
157
|
+
------
|
158
|
+
Returns the last number of elements of a collection.
|
159
|
+
|
160
|
+
```ruby
|
161
|
+
[].take_last(1) #=> []
|
162
|
+
[1,2,3].take_last(1) #=> [3]
|
163
|
+
[1,2,3].take_last(2) #=> [2,3]
|
164
|
+
```
|
165
|
+
|
166
|
+
`take_last_if`
|
167
|
+
------
|
168
|
+
Returns the last number of elements of a collection while it meets a criteria.
|
169
|
+
|
170
|
+
```ruby
|
171
|
+
[].take_last_if(&:odd?) #=> []
|
172
|
+
[1,2,3].take_last_if(&:odd?) #=> [3]
|
173
|
+
[1,2,3,4].take_last_if(&:odd?) #=> []
|
174
|
+
```
|