lab42_streams 0.1.1 → 0.1.2
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/lib/lab42/stream/core/enumerable.rb +17 -0
- data/lib/lab42/stream/enumerable.rb +1 -3
- data/lib/lab42/stream/kernel.rb +27 -0
- data/lib/lab42/stream/utility.rb +2 -1
- data/lib/lab42/stream/version.rb +1 -1
- metadata +11 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2df3a1a7c797bd48984548ffd51d883a1cd91528
|
4
|
+
data.tar.gz: 1db8a911626c365787a3c0eea92679f2881ff1a5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 20ee52d46dfb842b5a54dbef370f144a90c6a21e068cfc459d163141bf2ec165392477288f4391e8804a3164c84ee7f68be34ab2133955e24dcd8441e0639b5a
|
7
|
+
data.tar.gz: 3eb81d594c491c5b17a2b40d48c6c6d01c52d7628b44325cd1f60cf47611c9ee1ff689c4abc56b362913a75aee43b257898687ee401f2d5b7122987b5a5cbabb
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Enumerable
|
2
|
+
def ordered_by *beh, &blk
|
3
|
+
raise ArgumentError, 'need exactly one of block and behavior' if !blk == beh.empty?
|
4
|
+
|
5
|
+
beh = blk || (Symbol === beh.first ? sendmsg( *beh ) : beh.first )
|
6
|
+
|
7
|
+
|
8
|
+
sort do | a, b |
|
9
|
+
a == b ? 0 : (
|
10
|
+
beh.(a, b) ? -1 : 1
|
11
|
+
)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def to_stream; finite_stream self end
|
16
|
+
end
|
17
|
+
|
data/lib/lab42/stream/kernel.rb
CHANGED
@@ -14,6 +14,13 @@ module Kernel
|
|
14
14
|
Lab42::Stream.new head, tail
|
15
15
|
end
|
16
16
|
|
17
|
+
def cons_stream_n first_head, *more_heads, &tail
|
18
|
+
return cons_stream( first_head, &tail ) if more_heads.empty?
|
19
|
+
return cons_stream( first_head ){
|
20
|
+
cons_stream_n( *more_heads, &tail )
|
21
|
+
}
|
22
|
+
end
|
23
|
+
|
17
24
|
def const_stream const
|
18
25
|
c = cons_stream( const ){ c }
|
19
26
|
end
|
@@ -46,6 +53,11 @@ module Kernel
|
|
46
53
|
end
|
47
54
|
end
|
48
55
|
|
56
|
+
def merge_streams_by *streams_and_beh, &blk
|
57
|
+
beh = blk || streams_and_beh.pop
|
58
|
+
__merge_streams_by__ beh, streams_and_beh
|
59
|
+
end
|
60
|
+
|
49
61
|
def iterate *args, &blk
|
50
62
|
if blk
|
51
63
|
cons_stream(*args){ iterate( blk.(*args), &blk ) }
|
@@ -59,4 +71,19 @@ module Kernel
|
|
59
71
|
end
|
60
72
|
end
|
61
73
|
alias_method :stream_by, :iterate
|
74
|
+
|
75
|
+
private
|
76
|
+
def __merge_streams_by__ beh, streams
|
77
|
+
# TODO: Get rid of Symbol#to_proc kludge
|
78
|
+
still_there = streams.reject( &:empty? )
|
79
|
+
return empty_stream if still_there.empty?
|
80
|
+
|
81
|
+
ordered_heads = still_there
|
82
|
+
.map( &:head )
|
83
|
+
.ordered_by( beh )
|
84
|
+
|
85
|
+
cons_stream_n( *ordered_heads ){
|
86
|
+
__merge_streams_by__ beh, still_there.map( &:tail )
|
87
|
+
}
|
88
|
+
end
|
62
89
|
end
|
data/lib/lab42/stream/utility.rb
CHANGED
data/lib/lab42/stream/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lab42_streams
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Robert Dober
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-08-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: forwarder2
|
@@ -16,42 +16,42 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 0.2
|
19
|
+
version: '0.2'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 0.2
|
26
|
+
version: '0.2'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: lab42_core
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 0.0
|
33
|
+
version: '0.0'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 0.0
|
40
|
+
version: '0.0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: pry
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 0.9
|
47
|
+
version: '0.9'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 0.9
|
54
|
+
version: '0.9'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: pry-nav
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -72,14 +72,14 @@ dependencies:
|
|
72
72
|
requirements:
|
73
73
|
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: 2.14
|
75
|
+
version: '2.14'
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
80
|
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version: 2.14
|
82
|
+
version: '2.14'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: qed
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -134,6 +134,7 @@ files:
|
|
134
134
|
- lib/lab42/stream/array.rb
|
135
135
|
- lib/lab42/stream/auto_import.rb
|
136
136
|
- lib/lab42/stream/class_methods.rb
|
137
|
+
- lib/lab42/stream/core/enumerable.rb
|
137
138
|
- lib/lab42/stream/delayed.rb
|
138
139
|
- lib/lab42/stream/empty.rb
|
139
140
|
- lib/lab42/stream/empty/enumerable.rb
|