lab42_streams 0.1.2 → 0.1.3
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/README.md +5 -0
- data/lib/lab42/stream/enumerable.rb +7 -7
- data/lib/lab42/stream/kernel.rb +25 -19
- data/lib/lab42/stream/version.rb +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d09f7787dde8a103ab385e107f3edfb91cab85cb
|
4
|
+
data.tar.gz: 2fcdf2c0ea44003310d0e05d7df2716a4d1d5ff5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3d87e2f2e764b300379b879ce4a2f7716abfab0d6b56d5894e25e13d7d663d8a571c8e9623a092c22de34315624b6398becac64e3ac29cfa9445453f46d6f999
|
7
|
+
data.tar.gz: df8e4190c2c63dfb1e238e6c60483af3c5b90385248a0117411f40cd77aed7c6f0a274ec102f89b5943caa5ee641e9dea7ef151fb7c4ae8ed8c7af24830baf0b
|
data/README.md
CHANGED
@@ -4,6 +4,11 @@ Bringing Streams to Ruby
|
|
4
4
|
|
5
5
|
An excellent introduction into `Streams` can be found [here](http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-001-structure-and-interpretation-of-computer-programs-spring-2005/video-lectures/6a-streams-part-1/)
|
6
6
|
|
7
|
+
[](https://travis-ci.org/RobertDober/lab42_streams)
|
8
|
+
[](https://codeclimate.com/github/RobertDober/lab42_streams)
|
9
|
+
[](https://codeclimate.com/github/RobertDober/lab42_streams)
|
10
|
+
[](http://badge.fury.io/rb/lab42_streams)
|
11
|
+
|
7
12
|
|
8
13
|
|
9
14
|
Please see the [QED](http://rubyworks.github.io/qed/) demos [here](https://github.com/RobertDober/lab42_streams/blob/master/demo)
|
@@ -107,11 +107,11 @@ module Lab42
|
|
107
107
|
end
|
108
108
|
|
109
109
|
def filter *args, &blk
|
110
|
-
__filter__ blk.make_behavior( *args )
|
110
|
+
__filter__ self, blk.make_behavior( *args )
|
111
111
|
end
|
112
112
|
|
113
113
|
def reject *args, &blk
|
114
|
-
__filter__ blk.make_behavior( *args ).not
|
114
|
+
__filter__ self, blk.make_behavior( *args ).not
|
115
115
|
end
|
116
116
|
|
117
117
|
def flatmap *args, &blk
|
@@ -244,11 +244,11 @@ module Lab42
|
|
244
244
|
}
|
245
245
|
end
|
246
246
|
|
247
|
-
def __filter__ a_proc
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
tail
|
247
|
+
def __filter__ stream, a_proc
|
248
|
+
loop do
|
249
|
+
return stream if stream.empty?
|
250
|
+
return cons_stream( stream.head ){ __filter__ stream.tail, a_proc } if a_proc.( stream.head )
|
251
|
+
stream = stream.tail
|
252
252
|
end
|
253
253
|
end
|
254
254
|
|
data/lib/lab42/stream/kernel.rb
CHANGED
@@ -62,28 +62,34 @@ module Kernel
|
|
62
62
|
if blk
|
63
63
|
cons_stream(*args){ iterate( blk.(*args), &blk ) }
|
64
64
|
else
|
65
|
-
|
66
|
-
if Method === rest.first
|
67
|
-
cons_stream( args.first ){ iterate( rest.first.(*([args.first] + rest.drop(1))), *rest ) }
|
68
|
-
else
|
69
|
-
cons_stream( args.first ){ iterate( sendmsg(*rest).(args.first), *rest ) }
|
70
|
-
end
|
65
|
+
iterate_without_block args
|
71
66
|
end
|
72
67
|
end
|
73
68
|
alias_method :stream_by, :iterate
|
74
69
|
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
.map( &:head )
|
83
|
-
.ordered_by( beh )
|
84
|
-
|
85
|
-
cons_stream_n( *ordered_heads ){
|
86
|
-
__merge_streams_by__ beh, still_there.map( &:tail )
|
87
|
-
}
|
70
|
+
def iterate_without_block args
|
71
|
+
rest = args.drop 1
|
72
|
+
if Method === rest.first
|
73
|
+
cons_stream( args.first ){ iterate( rest.first.(*([args.first] + rest.drop(1))), *rest ) }
|
74
|
+
else
|
75
|
+
cons_stream( args.first ){ iterate( sendmsg(*rest).(args.first), *rest ) }
|
76
|
+
end
|
88
77
|
end
|
78
|
+
|
79
|
+
private
|
80
|
+
def __merge_streams_by__ beh, streams
|
81
|
+
still_there = streams.reject( &:empty? )
|
82
|
+
return empty_stream if still_there.empty?
|
83
|
+
__merge_streams_by_with_present__ beh, still_there, streams
|
84
|
+
end
|
85
|
+
|
86
|
+
def __merge_streams_by_with_present__ beh, still_there, streams
|
87
|
+
ordered_heads = still_there
|
88
|
+
.map( &:head )
|
89
|
+
.ordered_by( beh )
|
90
|
+
|
91
|
+
cons_stream_n( *ordered_heads ){
|
92
|
+
__merge_streams_by__ beh, still_there.map( &:tail )
|
93
|
+
}
|
94
|
+
end
|
89
95
|
end
|
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.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Robert Dober
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-05-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: forwarder2
|
@@ -158,7 +158,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
158
158
|
requirements:
|
159
159
|
- - ">="
|
160
160
|
- !ruby/object:Gem::Version
|
161
|
-
version: 2.
|
161
|
+
version: 2.1.0
|
162
162
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
163
163
|
requirements:
|
164
164
|
- - ">="
|
@@ -166,7 +166,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
166
166
|
version: '0'
|
167
167
|
requirements: []
|
168
168
|
rubyforge_project:
|
169
|
-
rubygems_version: 2.
|
169
|
+
rubygems_version: 2.4.6
|
170
170
|
signing_key:
|
171
171
|
specification_version: 4
|
172
172
|
summary: Streams for Ruby 2.0
|