enumerable_lz 0.1.3 → 0.1.4
Sign up to get free protection for your applications and to get access to all the features.
- data/ChangeLog +5 -1
- data/README.md +4 -4
- data/lib/enumerable_lz/filter.rb +7 -3
- data/lib/enumerable_lz/filter_18.rb +10 -3
- data/lib/enumerable_lz/filter_mrb.rb +8 -3
- data/lib/enumerable_lz/transform.rb +7 -3
- data/lib/enumerable_lz/transform_18.rb +7 -3
- data/lib/enumerable_lz/transform_mrb.rb +8 -0
- data/lib/enumerable_lz.rb +1 -1
- metadata +2 -2
data/ChangeLog
CHANGED
data/README.md
CHANGED
@@ -51,10 +51,10 @@ These expanded methods are inplemented with fundamental filter and transformatio
|
|
51
51
|
|
52
52
|
## Supported Rubies
|
53
53
|
|
54
|
-
* Ruby 1.9.x (testing 1.9.2
|
55
|
-
* Ruby 1.8.7 (testing 1.8.7-
|
56
|
-
* JRuby 1.5.
|
57
|
-
* MacRuby 0.
|
54
|
+
* Ruby 1.9.x (testing 1.9.2 p-180)
|
55
|
+
* Ruby 1.8.7 (testing 1.8.7-p334)
|
56
|
+
* JRuby (testing 1.5.6, 1.6.0)
|
57
|
+
* MacRuby (testing 0.9)
|
58
58
|
|
59
59
|
## Installation
|
60
60
|
|
data/lib/enumerable_lz/filter.rb
CHANGED
@@ -16,9 +16,13 @@ module Enumerable
|
|
16
16
|
@init_block = init_block unless init_block.nil?
|
17
17
|
super() do |y|
|
18
18
|
@init_block.call unless @init_block.nil?
|
19
|
-
compiled_filter =
|
20
|
-
|
21
|
-
|
19
|
+
compiled_filter = @filter.nil? ? Proc.new{true} : lambda{|f|
|
20
|
+
break f[0] if f.size==1
|
21
|
+
codes = f.size.times.map do |idx|
|
22
|
+
"f[#{idx}]===el"
|
23
|
+
end
|
24
|
+
eval "Proc.new{|el|"+codes.join(" && ")+"}"
|
25
|
+
}.call(@filter)
|
22
26
|
catch :do_break do
|
23
27
|
@org_enum.each do |el|
|
24
28
|
y.yield el if compiled_filter===el
|
@@ -20,9 +20,16 @@ module Enumerable
|
|
20
20
|
def each &block
|
21
21
|
return self unless block_given?
|
22
22
|
@init_block.call unless @init_block.nil?
|
23
|
-
compiled_filter = (@filter||[Proc.new{true}]).inject do |r,f|
|
24
|
-
|
25
|
-
end
|
23
|
+
# compiled_filter = (@filter||[Proc.new{true}]).inject do |r,f|
|
24
|
+
# Proc.new{|el| r[el] && f[el]}
|
25
|
+
# end
|
26
|
+
compiled_filter = @filter.nil? ? Proc.new{true} : lambda{|f|
|
27
|
+
break f[0] if f.size==1
|
28
|
+
codes = f.size.times.map do |idx|
|
29
|
+
"f[#{idx}][el]"
|
30
|
+
end
|
31
|
+
eval "Proc.new{|el|"+codes.join(" && ")+"}"
|
32
|
+
}.call(@filter)
|
26
33
|
catch :do_break do
|
27
34
|
@org_enum.each do |el|
|
28
35
|
block.call(el) if compiled_filter[el]
|
@@ -64,9 +64,14 @@ module Enumerable
|
|
64
64
|
end
|
65
65
|
end
|
66
66
|
def compile_filter
|
67
|
-
@filter.
|
68
|
-
|
69
|
-
|
67
|
+
return Proc.new{true} if @filter.nil?
|
68
|
+
return @filter[0] if @filter.size==1
|
69
|
+
lambda{|f|
|
70
|
+
codes = f.size.times.map do |idx|
|
71
|
+
"f[#{idx}]===el"
|
72
|
+
end
|
73
|
+
eval "Proc.new{|el|"+codes.join(" && ")+"}"
|
74
|
+
}.call(@filter)
|
70
75
|
end
|
71
76
|
end
|
72
77
|
end
|
@@ -35,9 +35,13 @@ module Enumerable
|
|
35
35
|
private
|
36
36
|
def compile_transformer
|
37
37
|
return Proc.new{|a|a} if @transformer.nil? || @transformer.size==0
|
38
|
-
@transformer
|
39
|
-
|
40
|
-
|
38
|
+
return @transformer[0] if @transformer.size==1
|
39
|
+
lambda{|t|
|
40
|
+
codes = t.size.times.inject "el" do |r,idx|
|
41
|
+
"t[#{idx}][#{r}]"
|
42
|
+
end
|
43
|
+
eval "Proc.new{|el|"+codes+"}"
|
44
|
+
}.call(@transformer)
|
41
45
|
end
|
42
46
|
end
|
43
47
|
end
|
@@ -38,9 +38,13 @@ module Enumerable
|
|
38
38
|
private
|
39
39
|
def compile_transformer
|
40
40
|
return Proc.new{|a|a} if @transformer.nil? || @transformer.size==0
|
41
|
-
@transformer
|
42
|
-
|
43
|
-
|
41
|
+
return @transformer[0] if @transformer.size==1
|
42
|
+
lambda{|t|
|
43
|
+
codes = t.size.times.inject "el" do |r,idx|
|
44
|
+
"t[#{idx}][#{r}]"
|
45
|
+
end
|
46
|
+
eval "Proc.new{|el|"+codes+"}"
|
47
|
+
}.call(@transformer)
|
44
48
|
end
|
45
49
|
end
|
46
50
|
end
|
@@ -42,6 +42,14 @@ module Enumerable
|
|
42
42
|
@transformer.inject do |r,f|
|
43
43
|
Proc.new{|el|f[r[el]]}
|
44
44
|
end
|
45
|
+
### MacRuby has a Problem of Nesting Proc Definition
|
46
|
+
# return @transformer[0] if @transformer.size==1
|
47
|
+
# lambda{|t|
|
48
|
+
# codes = t.size.times.inject "el" do |r,idx|
|
49
|
+
# "t[#{idx}][#{r}]"
|
50
|
+
# end
|
51
|
+
# eval "Proc.new{|el|"+codes+"}"
|
52
|
+
# }.call(@transformer)
|
45
53
|
end
|
46
54
|
end
|
47
55
|
end
|
data/lib/enumerable_lz.rb
CHANGED
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: enumerable_lz
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.1.
|
5
|
+
version: 0.1.4
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- antimon2
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2011-05-
|
13
|
+
date: 2011-05-07 00:00:00 +09:00
|
14
14
|
default_executable:
|
15
15
|
dependencies: []
|
16
16
|
|