xenum 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +26 -3
- data/lib/xenum/version.rb +1 -1
- data/lib/xenum.rb +19 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6bbf9d98e7579cf718f304fdde5a13459d5c3b225383d48d20fba38bc25d6f59
|
4
|
+
data.tar.gz: 5d448b96d97c4438fbb491ebfe89e8aee222977c0df42edb568972ef41cb1ccb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: be579d94a4ce9c11aac9e2be34c2542e92e6c6fef2d7624e662cbfcc5f8f277262d58094bb5b245d44d6e6949a85811faf081f1ffed2592dd3bdc8e62d907565
|
7
|
+
data.tar.gz: 6bdabc0c8e78e6dd35ee33d7af734cc15b86bf66e6d40e26b14804900d211dae1ddbd53c8cc86904cd2c90e723bafb55a3d36083551c84154f5feb4f379a497e
|
data/README.md
CHANGED
@@ -14,14 +14,37 @@ If bundler is not being used to manage dependencies, install the gem by executin
|
|
14
14
|
|
15
15
|
## Usage
|
16
16
|
|
17
|
-
|
17
|
+
### lazy_flatten
|
18
|
+
|
19
|
+
works like `Array#flatten`, but for all `Enumerable`, and it is lazy
|
18
20
|
|
19
21
|
```ruby
|
20
|
-
|
22
|
+
[
|
23
|
+
3.times,
|
24
|
+
3,
|
25
|
+
4,
|
26
|
+
[5, [6,7]],
|
27
|
+
(8..10),
|
28
|
+
Enumerator.new{|e| n = 10; loop{e << n+=1}}
|
29
|
+
].lazy_flatten.first(15)
|
30
|
+
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
|
31
|
+
```
|
32
|
+
|
33
|
+
### lazy_product
|
34
|
+
|
35
|
+
works like `Array#product`, but not limited to `Array`
|
36
|
+
|
37
|
+
```ruby
|
38
|
+
3.times.lazy_product(
|
39
|
+
(3..5),
|
40
|
+
[6,7,8]
|
41
|
+
).take(6)
|
21
42
|
# [[0, 3, 6], [0, 3, 7], [0, 3, 8], [0, 4, 6], [0, 4, 7], [0, 4, 8]]
|
22
43
|
```
|
23
44
|
|
24
|
-
|
45
|
+
### merge_sort
|
46
|
+
|
47
|
+
lazily merge sort two sorted `Enumerable`
|
25
48
|
|
26
49
|
```ruby
|
27
50
|
e = (6..8).merge_sort([3,4,5]).merge_sort(3.times)
|
data/lib/xenum/version.rb
CHANGED
data/lib/xenum.rb
CHANGED
@@ -7,6 +7,25 @@ module Xenum
|
|
7
7
|
end
|
8
8
|
|
9
9
|
module Enumerable
|
10
|
+
def lazy_flatten(level = nil)
|
11
|
+
these = self
|
12
|
+
level = -1 if level.nil?
|
13
|
+
|
14
|
+
Enumerator.new do |yielder|
|
15
|
+
level.nil?
|
16
|
+
these.each do |this|
|
17
|
+
if Enumerable === this && level != 0
|
18
|
+
this.lazy_flatten(level - 1).each do |sub|
|
19
|
+
yielder.yield(sub)
|
20
|
+
end
|
21
|
+
next
|
22
|
+
end
|
23
|
+
|
24
|
+
yielder.yield(this)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
10
29
|
def lazy_product(*enums)
|
11
30
|
if enums.empty?
|
12
31
|
return Enumerator.new do |yielder|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: xenum
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- ken
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-03-
|
11
|
+
date: 2024-03-15 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description:
|
14
14
|
email:
|