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 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