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 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
- count = 300 # depends on system stack size
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
@@ -9,7 +9,7 @@ include PatternMatching
9
9
 
10
10
  # match example
11
11
  def calc(code)
12
- make (code) {
12
+ make(code) {
13
13
  seems as {plus(:a, :b)} do calc(a) + calc(b) end
14
14
  seems as {mul(:a, :b)} do calc(a) * calc(b) end
15
15
  seems something do code end
@@ -13,7 +13,7 @@ class CalcX
13
13
  seems as {plus(:a, :b)} do
14
14
  calcx(a) + calcx(b)
15
15
  end
16
- seems as {mul(:x, :y)} do
16
+ seems as {mul(:a, :b)} do
17
17
  calcx(a) * calcx(b)
18
18
  end
19
19
  end
@@ -23,37 +23,9 @@ module PatternMatching
23
23
  proc {_}
24
24
  end
25
25
  end
26
+ include DSL_INSIDE
26
27
 
27
- # Domain Specific Language style methods for outside
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
@@ -1,8 +1,8 @@
1
- module PatternMatching #:nodoc:
1
+ module PatternMatching
2
2
  module VERSION #:nodoc:
3
3
  MAJOR = 0
4
4
  MINOR = 2
5
- TINY = 3
5
+ TINY = 4
6
6
 
7
7
  STRING = [MAJOR, MINOR, TINY].join('.')
8
8
  end
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.3</a>
36
+ <a href="http://rubyforge.org/projects/patternmatching" class="numbers">0.2.4</a>
37
37
  </div>
38
38
  <h1>&#x2192; &#8216;patternmatching&#8217;</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.3
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