patternmatching 0.2.3 → 0.2.4
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +10 -0
- data/Manifest.txt +1 -1
- data/examples/{overhead.rb → benchmark.rb} +6 -3
- data/examples/matching.rb +1 -1
- data/examples/partial_style_method2.rb +1 -1
- data/lib/patternmatching/pattern.rb +28 -30
- data/lib/patternmatching/version.rb +2 -2
- data/website/index.html +1 -1
- metadata +2 -2
data/History.txt
CHANGED
@@ -1,3 +1,13 @@
|
|
1
|
+
== 0.2.4 2007-06-06
|
2
|
+
|
3
|
+
Check compatibility with jruby1.0.0RC2 and old ruby1.9
|
4
|
+
|
5
|
+
* 1 minor enhancement:
|
6
|
+
* Fix module relations
|
7
|
+
* 2 fix bugs
|
8
|
+
* example/partial_style_method.rb
|
9
|
+
* example/partial_style_method2.rb
|
10
|
+
|
1
11
|
== 0.2.3 2007-06-06
|
2
12
|
|
3
13
|
* 1 minor enhancement:
|
data/Manifest.txt
CHANGED
@@ -3,13 +3,13 @@ License.txt
|
|
3
3
|
Manifest.txt
|
4
4
|
README.txt
|
5
5
|
Rakefile
|
6
|
+
examples/benchmark.rb
|
6
7
|
examples/enumerable_matching.rb
|
7
8
|
examples/hash_matching.rb
|
8
9
|
examples/match_inside_class.rb
|
9
10
|
examples/matching.rb
|
10
11
|
examples/matching_with_condition.rb
|
11
12
|
examples/object_matching.rb
|
12
|
-
examples/overhead.rb
|
13
13
|
examples/partial_style_method.rb
|
14
14
|
examples/partial_style_method2.rb
|
15
15
|
lib/patternmatching.rb
|
@@ -33,7 +33,7 @@ puts "Partial Method cost: " + pattern_time.to_s + " sec"
|
|
33
33
|
|
34
34
|
puts "Overhead/method: " +
|
35
35
|
((pattern_time - plain_time).to_f / count * 1000).to_s + " msec"
|
36
|
-
|
36
|
+
puts
|
37
37
|
|
38
38
|
|
39
39
|
class Recursive
|
@@ -48,7 +48,10 @@ class Recursive
|
|
48
48
|
end
|
49
49
|
end
|
50
50
|
|
51
|
-
|
51
|
+
# size depends on system stack max
|
52
|
+
#count = 400 # for ruby 1.8 stack max
|
53
|
+
#count = 300 # for ruby 1.9 stack max
|
54
|
+
count = 100 # for jruby stack max
|
52
55
|
|
53
56
|
plain = Recursive.new
|
54
57
|
start = Time.new
|
@@ -65,4 +68,4 @@ puts "Standard Method cost: " + plain_time.to_s + " sec"
|
|
65
68
|
puts "Partial Method cost: " + pattern_time.to_s + " sec"
|
66
69
|
puts "Overhead/method: " +
|
67
70
|
((pattern_time - plain_time).to_f / count * 1000).to_s + " msec"
|
68
|
-
|
71
|
+
puts
|
data/examples/matching.rb
CHANGED
@@ -23,37 +23,9 @@ module PatternMatching
|
|
23
23
|
proc {_}
|
24
24
|
end
|
25
25
|
end
|
26
|
+
include DSL_INSIDE
|
26
27
|
|
27
|
-
|
28
|
-
module DSL_OUTSIDE
|
29
|
-
include DSL_INSIDE
|
30
|
-
#Build structured data
|
31
|
-
#=== Usage
|
32
|
-
# build {[foo(bar, 100), foo(buzz, "abc")]}
|
33
|
-
def build(&block)
|
34
|
-
NodeBuilder.new.instance_eval(&block)
|
35
|
-
end
|
36
|
-
|
37
|
-
#Build structured data
|
38
|
-
#=== Usage
|
39
|
-
# PatternMatching.build {[foo(bar, 100), foo(buzz, "abc")]}
|
40
|
-
def self.build(&block)
|
41
|
-
NodeBuilder.new.instance_eval(&block)
|
42
|
-
end
|
43
|
-
|
44
|
-
#Do pattern matching
|
45
|
-
#===Usage
|
46
|
-
# make TARGET do
|
47
|
-
# seems as {PATTERN_1} do ACTION_1 end
|
48
|
-
# seems as {PATTERN_2} do ACTION_2 end
|
49
|
-
# seems something do ACTION_DEFAULT end
|
50
|
-
# end
|
51
|
-
def make(target, &block)
|
52
|
-
patterns = []
|
53
|
-
PatternFragments.new(patterns).instance_eval(&block)
|
54
|
-
MatchExec.exec_as(target, patterns, self)
|
55
|
-
end
|
56
|
-
|
28
|
+
module DSL_MODULE
|
57
29
|
#Define method as partial style
|
58
30
|
#=== Usage
|
59
31
|
# func(NAME).seems as {PATTERN_1} do ACTION_1 end
|
@@ -85,7 +57,33 @@ module PatternMatching
|
|
85
57
|
fragments
|
86
58
|
end
|
87
59
|
end
|
60
|
+
include DSL_MODULE
|
61
|
+
|
62
|
+
# Domain Specific Language style methods for outside
|
63
|
+
module DSL_OUTSIDE
|
64
|
+
#Build structured data
|
65
|
+
#=== Usage
|
66
|
+
# build {[foo(bar, 100), foo(buzz, "abc")]}
|
67
|
+
def build(&block)
|
68
|
+
NodeBuilder.new.instance_eval(&block)
|
69
|
+
end
|
70
|
+
|
71
|
+
#Do pattern matching
|
72
|
+
#===Usage
|
73
|
+
# make TARGET do
|
74
|
+
# seems as {PATTERN_1} do ACTION_1 end
|
75
|
+
# seems as {PATTERN_2} do ACTION_2 end
|
76
|
+
# seems something do ACTION_DEFAULT end
|
77
|
+
# end
|
78
|
+
def make(target, &block)
|
79
|
+
patterns = []
|
80
|
+
PatternFragments.new(patterns).instance_eval(&block)
|
81
|
+
MatchExec.exec_as(target, patterns, self)
|
82
|
+
end
|
83
|
+
|
84
|
+
end
|
88
85
|
include DSL_OUTSIDE
|
86
|
+
extend DSL_OUTSIDE
|
89
87
|
|
90
88
|
#Class for structured data/patterns
|
91
89
|
class Node
|
data/website/index.html
CHANGED
@@ -33,7 +33,7 @@
|
|
33
33
|
<h1>PatternMatching module</h1>
|
34
34
|
<div id="version" class="clickable" onclick='document.location = "http://rubyforge.org/projects/patternmatching"; return false'>
|
35
35
|
Get Version
|
36
|
-
<a href="http://rubyforge.org/projects/patternmatching" class="numbers">0.2.
|
36
|
+
<a href="http://rubyforge.org/projects/patternmatching" class="numbers">0.2.4</a>
|
37
37
|
</div>
|
38
38
|
<h1>→ ‘patternmatching’</h1>
|
39
39
|
|
metadata
CHANGED
@@ -3,7 +3,7 @@ rubygems_version: 0.9.4
|
|
3
3
|
specification_version: 1
|
4
4
|
name: patternmatching
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.2.
|
6
|
+
version: 0.2.4
|
7
7
|
date: 2007-06-06 00:00:00 +09:00
|
8
8
|
summary: Provide a pure ruby module that can build structured objects easily, can enable pattern match of objects, and can define method as a partial function style.
|
9
9
|
require_paths:
|
@@ -34,13 +34,13 @@ files:
|
|
34
34
|
- Manifest.txt
|
35
35
|
- README.txt
|
36
36
|
- Rakefile
|
37
|
+
- examples/benchmark.rb
|
37
38
|
- examples/enumerable_matching.rb
|
38
39
|
- examples/hash_matching.rb
|
39
40
|
- examples/match_inside_class.rb
|
40
41
|
- examples/matching.rb
|
41
42
|
- examples/matching_with_condition.rb
|
42
43
|
- examples/object_matching.rb
|
43
|
-
- examples/overhead.rb
|
44
44
|
- examples/partial_style_method.rb
|
45
45
|
- examples/partial_style_method2.rb
|
46
46
|
- lib/patternmatching.rb
|