enumerable_lz 0.1.3 → 0.1.4
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.
- 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
|
|