patternmatching 0.2.3 → 0.2.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/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
|