merge_enum 0.2.1 → 0.2.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/README.md +5 -5
- data/lib/merge_enum/merge_enumerable.rb +15 -4
- data/lib/merge_enum/version.rb +1 -1
- data/spec/merge_enum/merge_enumerable_spec.rb +15 -11
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 83c9df67a3bf180ed443689aa752ffb05daa2776
|
4
|
+
data.tar.gz: eafcdd7dfa4844eab8b96e1bb0dd31670ee19e58
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6feac7d52703573869924e008a5dbea02ea08a2ec204a4e935147e1bc5e367cb4827c1d643790ba7bb77bc77e891fdc40e3b7db1db052e9a58866be60df973f4
|
7
|
+
data.tar.gz: 21a08e2bcf620c15a2e95e3aa978738c86b4a005dece07d97a1fd22a2c827d24bbc3fec8615644ffe084800fe1ee77124e51fc8ecf16574a086a286cbff5a5dd
|
data/README.md
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
# MergeEnum
|
2
|
-
###### ver 0.2.
|
2
|
+
###### ver 0.2.2
|
3
3
|
|
4
4
|
複数のEnumerale(*1)を連結(合成)するEnumerableです。
|
5
5
|
要素が必要になった時点で追加するように動作します。
|
6
|
-
|
6
|
+
効率的です。
|
7
7
|
|
8
|
-
(*1) `each`,`first
|
8
|
+
(*1) `each`,`first`メソッドが定義されていればEnumerableでなくてもよく、それを返すProc, Lambdaでもよい。
|
9
9
|
|
10
10
|
## Installation
|
11
11
|
|
@@ -42,12 +42,12 @@ Or install it yourself as:
|
|
42
42
|
> m_enum.count
|
43
43
|
=> 55
|
44
44
|
|
45
|
-
#### Enumerable#merge_enum
|
45
|
+
#### Enumerable#merge_enum から生成できる
|
46
46
|
|
47
47
|
> m_enum = (0...10).merge_enum(first: 13)
|
48
48
|
=> #<MergeEnum::MergeEnumerable:0x007fa...>
|
49
49
|
|
50
|
-
#### concat, concat!
|
50
|
+
#### concat, concat! で連結できる
|
51
51
|
|
52
52
|
> m_enum = (0...10).merge_enum(first: 13)
|
53
53
|
=> #<MergeEnum::MergeEnumerable:0x007fb...>
|
@@ -24,18 +24,29 @@ module MergeEnum
|
|
24
24
|
fst = opt_fst - cnt
|
25
25
|
break if fst <= 0
|
26
26
|
end
|
27
|
+
called_first = false
|
27
28
|
if c.is_a? Proc
|
28
29
|
if c.arity == 0
|
29
30
|
c = c.call
|
30
31
|
else
|
31
32
|
c = c.call fst
|
33
|
+
called_first = true
|
32
34
|
end
|
33
35
|
end
|
34
|
-
|
35
|
-
|
36
|
-
|
36
|
+
if fst
|
37
|
+
c = c.first fst unless called_first
|
38
|
+
_cnt = 0
|
39
|
+
c.each.with_index 1 do |e, i|
|
40
|
+
block.call e
|
41
|
+
_cnt = i
|
42
|
+
break if fst <= _cnt
|
43
|
+
end
|
44
|
+
cnt += _cnt
|
45
|
+
else
|
46
|
+
c.each do |e|
|
47
|
+
block.call e
|
48
|
+
end
|
37
49
|
end
|
38
|
-
cnt += c.count
|
39
50
|
end
|
40
51
|
self
|
41
52
|
end
|
data/lib/merge_enum/version.rb
CHANGED
@@ -248,8 +248,8 @@ describe MergeEnum::MergeEnumerable do
|
|
248
248
|
it "equality enumerator" do
|
249
249
|
enum = MergeEnum::MergeEnumerable.new(
|
250
250
|
0...100,
|
251
|
-
-> (c) {
|
252
|
-
Proc.new { |c|
|
251
|
+
-> (c) { 200...250 },
|
252
|
+
Proc.new { |c| 300...330 },
|
253
253
|
first: 200
|
254
254
|
)
|
255
255
|
enum_sub = enum.each
|
@@ -262,14 +262,18 @@ describe MergeEnum::MergeEnumerable do
|
|
262
262
|
|
263
263
|
describe "Whitebox" do
|
264
264
|
it "call first method" do
|
265
|
-
|
265
|
+
ary_1 = 0...100
|
266
|
+
ary_2 = 200...250
|
267
|
+
ary_3 = 300...330
|
266
268
|
enum = MergeEnum::MergeEnumerable.new(
|
267
|
-
|
268
|
-
-> (c) {
|
269
|
-
Proc.new {
|
269
|
+
ary_1,
|
270
|
+
-> (c) { ary_2 },
|
271
|
+
Proc.new { ary_3 },
|
270
272
|
first: 200
|
271
273
|
)
|
272
|
-
expect(
|
274
|
+
expect(ary_1).to receive(:first).with(200).and_return(ary_1)
|
275
|
+
ary_2.stub(:first) { raise "unexpected" }
|
276
|
+
expect(ary_3).to receive(:first).with(50).and_return(ary_3)
|
273
277
|
expect(enum.count).to be 180
|
274
278
|
end
|
275
279
|
end
|
@@ -277,8 +281,8 @@ describe MergeEnum::MergeEnumerable do
|
|
277
281
|
describe ":concat Method" do
|
278
282
|
it "equality enumerator" do
|
279
283
|
enm_1 = 0...100
|
280
|
-
enm_2 = -> (c) {
|
281
|
-
enm_3 = Proc.new { |c|
|
284
|
+
enm_2 = -> (c) { 200...250 }
|
285
|
+
enm_3 = Proc.new { |c| 300...330 }
|
282
286
|
enum = MergeEnum::MergeEnumerable.new(
|
283
287
|
enm_1, enm_2,
|
284
288
|
first: 130
|
@@ -296,8 +300,8 @@ describe MergeEnum::MergeEnumerable do
|
|
296
300
|
describe ":concat! Method" do
|
297
301
|
it "equality enumerator" do
|
298
302
|
enm_1 = 0...100
|
299
|
-
enm_2 = -> (c) {
|
300
|
-
enm_3 = Proc.new { |c|
|
303
|
+
enm_2 = -> (c) { 200...250 }
|
304
|
+
enm_3 = Proc.new { |c| 300...330 }
|
301
305
|
enum = MergeEnum::MergeEnumerable.new(
|
302
306
|
enm_1, enm_2,
|
303
307
|
first: 130
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: merge_enum
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- brightgenerous
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-05-
|
11
|
+
date: 2014-05-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|