lab42_streams 0.1.2 → 0.1.3
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
+
[![Build Status](https://travis-ci.org/RobertDober/lab42_streams.svg?branch=master)](https://travis-ci.org/RobertDober/lab42_streams)
|
8
|
+
[![Code Climate](https://codeclimate.com/github/RobertDober/lab42_streams/badges/gpa.svg)](https://codeclimate.com/github/RobertDober/lab42_streams)
|
9
|
+
[![Test Coverage](https://codeclimate.com/github/RobertDober/lab42_streams/badges/coverage.svg)](https://codeclimate.com/github/RobertDober/lab42_streams)
|
10
|
+
[![Gem Version](https://badge.fury.io/rb/lab42_streams.svg)](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
|