merge_enum 0.1.0 → 0.2.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7f11e6fdb56034a498252cdfd1682977434abac7
4
- data.tar.gz: 40462c704b94a9c87b7a7eeea633d23ba266af40
3
+ metadata.gz: 38f7ffbcb61ff421a338c08cb2b01db4811f89eb
4
+ data.tar.gz: 21a2e709d217ea3eb7db6b6fc58a96d8f455356f
5
5
  SHA512:
6
- metadata.gz: d2f20337d0f8773b49a00dad126d2e45f1a18c985e781d37dca45e0c70040e44720c744f2555e732ef8a9a470b05b5a4e908ad515cac6bb280384f55232683cb
7
- data.tar.gz: c991d180ff3bd84ea4090b79d4a3444cc3b6147954f10f1fef56d3d555ab772f3470b42a1bba700d9ee92cbb27c40a13e287a6c94d5c382f40c506cd716bb160
6
+ metadata.gz: b3d2a02cc175a108a19e39077aafe42ff1d46f82f8e7bbd879b7112524fd5a85f8cca72d0ede96e94282a0a29605ba1b2a78ca465bcf46a3c29059ff667a83ba
7
+ data.tar.gz: b1191ff673f06b96a7caebefa28ef527a561afc7a12d86554b5e5bcd3a65612810fedc276ea901a66c09ee764411fa7fa4987e20b68e32586d478236aeb2889d
data/README.md CHANGED
@@ -1,7 +1,8 @@
1
1
  # MergeEnum
2
2
 
3
- 複数のEnumeraleを合成するEnumerableです。
4
- 要素が必要になった時点で効率的に追加するように動作します。
3
+ 複数のEnumeraleを連結(合成)するEnumerableです。
4
+ 要素が必要になった時点で追加するように動作します。
5
+ 効率的なはずです。
5
6
 
6
7
  ## Installation
7
8
 
@@ -19,7 +20,6 @@ Or install it yourself as:
19
20
 
20
21
  ## Usage
21
22
 
22
- > require 'merge_enum'
23
23
  > m_enum = MergeEnum::MergeEnumerable.new(
24
24
  [0,1,2,3,4,5,6,7,8,9],
25
25
  10...20,
@@ -27,7 +27,7 @@ Or install it yourself as:
27
27
  -> (c) { 30...40 }, # c => 25
28
28
  Proc.new { 40...50 },
29
29
  Proc.new { |c| 50...60 }, # c => 5
30
- Proc.new { 70...80 }, # => never called
30
+ Proc.new { 60...70 }, # => never called
31
31
  first: 55
32
32
  )
33
33
  > m_enum.is_a? Enumerable
@@ -0,0 +1,9 @@
1
+ # encoding: utf-8
2
+ module Enumerable
3
+
4
+ def merge_enum *args
5
+ MergeEnum::MergeEnumerable.new self, *args
6
+ end
7
+
8
+ end
9
+
@@ -1,4 +1,4 @@
1
- # -*- coding: utf-8 -*-
1
+ # encoding: utf-8
2
2
  module MergeEnum
3
3
 
4
4
  class MergeEnumerable
@@ -40,6 +40,15 @@ module MergeEnum
40
40
  self
41
41
  end
42
42
 
43
+ def concat arg
44
+ self.class.new *@collections, arg, @options
45
+ end
46
+
47
+ def concat! arg
48
+ @collections.push arg
49
+ self
50
+ end
51
+
43
52
  end
44
53
 
45
54
  end
@@ -1,3 +1,5 @@
1
+ # encoding: utf-8
1
2
  module MergeEnum
2
- VERSION = "0.1.0"
3
+ VERSION = "0.2.0"
3
4
  end
5
+
data/lib/merge_enum.rb CHANGED
@@ -1,6 +1,9 @@
1
- require "merge_enum/version"
2
- require "merge_enum/merge_enumerable"
1
+ # encoding: utf-8
2
+ require 'merge_enum/version'
3
3
 
4
4
  module MergeEnum
5
+ autoload :MergeEnumerable, 'merge_enum/merge_enumerable'
5
6
  end
6
7
 
8
+ require 'merge_enum/extention/enumerable'
9
+
@@ -0,0 +1,39 @@
1
+ # encoding: utf-8
2
+ require File.expand_path(File.join('../../', 'spec_helper'), File.dirname(__FILE__))
3
+
4
+ describe Enumerable do
5
+
6
+ describe ":merge_enum Method" do
7
+ it "Enumerable" do
8
+ enm_1 = 0...100
9
+ enum = enm_1.to_a.merge_enum(
10
+ first: 200
11
+ )
12
+ expect(enum.count).to be 100
13
+
14
+ enum_2 = MergeEnum::MergeEnumerable.new(
15
+ enm_1,
16
+ first: 200
17
+ )
18
+ expect(enum.to_a).to eq(enum_2.to_a)
19
+ end
20
+ it "Enumerable, Proc, Lambda" do
21
+ enm_1 = 0...100
22
+ enm_2 = -> (c) { arg1 = c; 200...250 }
23
+ enm_3 = Proc.new { |c| arg2 = c; 300...330 }
24
+ enum = enm_1.to_a.merge_enum(
25
+ enm_2, enm_3,
26
+ first: 200
27
+ )
28
+ expect(enum.count).to be 180
29
+
30
+ enum_2 = MergeEnum::MergeEnumerable.new(
31
+ enm_1, enm_2, enm_3,
32
+ first: 200
33
+ )
34
+ expect(enum.to_a).to eq(enum_2.to_a)
35
+ end
36
+ end
37
+
38
+ end
39
+
@@ -274,5 +274,48 @@ describe MergeEnum::MergeEnumerable do
274
274
  end
275
275
  end
276
276
 
277
+ describe ":concat Method" do
278
+ it "equality enumerator" do
279
+ enm_1 = 0...100
280
+ enm_2 = -> (c) { arg1 = c; 200...250 }
281
+ enm_3 = Proc.new { |c| arg2 = c; 300...330 }
282
+ enum = MergeEnum::MergeEnumerable.new(
283
+ enm_1, enm_2,
284
+ first: 130
285
+ )
286
+ expect(enum.concat enm_3).not_to be(enum)
287
+
288
+ enum_2 = MergeEnum::MergeEnumerable.new(
289
+ enm_1, enm_2, enm_3,
290
+ first: 130
291
+ )
292
+ expect(enum.concat(enm_3).to_a).to eq(enum_2.to_a)
293
+ end
294
+ end
295
+
296
+ describe ":concat! Method" do
297
+ it "equality enumerator" do
298
+ enm_1 = 0...100
299
+ enm_2 = -> (c) { arg1 = c; 200...250 }
300
+ enm_3 = Proc.new { |c| arg2 = c; 300...330 }
301
+ enum = MergeEnum::MergeEnumerable.new(
302
+ enm_1, enm_2,
303
+ first: 130
304
+ )
305
+ expect(enum.concat! enm_3).to be(enum)
306
+
307
+ enum = MergeEnum::MergeEnumerable.new(
308
+ enm_1, enm_2,
309
+ first: 130
310
+ )
311
+
312
+ enum_2 = MergeEnum::MergeEnumerable.new(
313
+ enm_1, enm_2, enm_3,
314
+ first: 130
315
+ )
316
+ expect(enum.concat!(enm_3).to_a).to eq(enum_2.to_a)
317
+ end
318
+ end
319
+
277
320
  end
278
321
 
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.1.0
4
+ version: 0.2.0
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-10 00:00:00.000000000 Z
11
+ date: 2014-05-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -51,10 +51,12 @@ files:
51
51
  - README.md
52
52
  - Rakefile
53
53
  - lib/merge_enum.rb
54
+ - lib/merge_enum/extention/enumerable.rb
54
55
  - lib/merge_enum/merge_enumerable.rb
55
56
  - lib/merge_enum/version.rb
56
57
  - merge_enum.gemspec
57
- - spec/merge_enum/merge_emunerable.rb
58
+ - spec/merge_enum/extention/enumerable_spec.rb
59
+ - spec/merge_enum/merge_enumerable_spec.rb
58
60
  - spec/spec_helper.rb
59
61
  homepage: ''
60
62
  licenses:
@@ -81,5 +83,6 @@ signing_key:
81
83
  specification_version: 4
82
84
  summary: merge enumerable
83
85
  test_files:
84
- - spec/merge_enum/merge_emunerable.rb
86
+ - spec/merge_enum/extention/enumerable_spec.rb
87
+ - spec/merge_enum/merge_enumerable_spec.rb
85
88
  - spec/spec_helper.rb