multimethod 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (55) hide show
  1. data/.svn/README.txt +2 -0
  2. data/.svn/empty-file +0 -0
  3. data/.svn/entries +68 -0
  4. data/.svn/format +1 -0
  5. data/.svn/text-base/ChangeLog.svn-base +3 -0
  6. data/.svn/text-base/Manifest.txt.svn-base +54 -0
  7. data/.svn/text-base/README.txt.svn-base +40 -0
  8. data/.svn/text-base/Rakefile.svn-base +132 -0
  9. data/.svn/text-base/Releases.txt.svn-base +7 -0
  10. data/ChangeLog +3 -0
  11. data/Manifest.txt +54 -0
  12. data/README.txt +40 -0
  13. data/Rakefile +132 -0
  14. data/Releases.txt +7 -0
  15. data/examples/.svn/README.txt +2 -0
  16. data/examples/.svn/empty-file +0 -0
  17. data/examples/.svn/entries +22 -0
  18. data/examples/.svn/format +1 -0
  19. data/examples/.svn/props/ex1.rb.svn-work +5 -0
  20. data/examples/ex1.rb +26 -0
  21. data/lib/.svn/README.txt +2 -0
  22. data/lib/.svn/empty-file +0 -0
  23. data/lib/.svn/entries +24 -0
  24. data/lib/.svn/format +1 -0
  25. data/lib/.svn/text-base/multimethod.rb.svn-base +8 -0
  26. data/lib/multimethod.rb +8 -0
  27. data/lib/multimethod/.svn/README.txt +2 -0
  28. data/lib/multimethod/.svn/empty-file +0 -0
  29. data/lib/multimethod/.svn/entries +53 -0
  30. data/lib/multimethod/.svn/format +1 -0
  31. data/lib/multimethod/.svn/text-base/core_extensions.rb.svn-base +38 -0
  32. data/lib/multimethod/.svn/text-base/method.rb.svn-base +232 -0
  33. data/lib/multimethod/.svn/text-base/multimethod.rb.svn-base +171 -0
  34. data/lib/multimethod/.svn/text-base/parameter.rb.svn-base +64 -0
  35. data/lib/multimethod/.svn/text-base/table.rb.svn-base +99 -0
  36. data/lib/multimethod/core_extensions.rb +38 -0
  37. data/lib/multimethod/method.rb +232 -0
  38. data/lib/multimethod/multimethod.rb +171 -0
  39. data/lib/multimethod/parameter.rb +64 -0
  40. data/lib/multimethod/table.rb +99 -0
  41. data/test/.svn/README.txt +2 -0
  42. data/test/.svn/empty-file +0 -0
  43. data/test/.svn/entries +53 -0
  44. data/test/.svn/format +1 -0
  45. data/test/.svn/text-base/method_test.rb.svn-base +89 -0
  46. data/test/.svn/text-base/multimethod_test.rb.svn-base +92 -0
  47. data/test/.svn/text-base/parameter_test.rb.svn-base +31 -0
  48. data/test/.svn/text-base/test_base.rb.svn-base +25 -0
  49. data/test/.svn/text-base/usage_test.rb.svn-base +146 -0
  50. data/test/method_test.rb +89 -0
  51. data/test/multimethod_test.rb +92 -0
  52. data/test/parameter_test.rb +31 -0
  53. data/test/test_base.rb +25 -0
  54. data/test/usage_test.rb +146 -0
  55. metadata +108 -0
@@ -0,0 +1,2 @@
1
+ This is a Subversion working copy administrative directory.
2
+ Visit http://subversion.tigris.org/ for more information.
File without changes
@@ -0,0 +1,68 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <wc-entries
3
+ xmlns="svn:">
4
+ <entry
5
+ committed-rev="2"
6
+ name=""
7
+ committed-date="2006-11-21T15:54:09.187498Z"
8
+ url="svn+ssh://rubyforge.org/var/svn/multimethod/multimethod/trunk"
9
+ last-author="kstephens"
10
+ kind="dir"
11
+ uuid="4bb4d955-fa15-4b0b-b2b9-8313ce201c60"
12
+ repos="svn+ssh://rubyforge.org/var/svn/multimethod"
13
+ revision="2"/>
14
+ <entry
15
+ name="test"
16
+ kind="dir"/>
17
+ <entry
18
+ committed-rev="3"
19
+ name="Releases.txt"
20
+ text-time="2006-11-21T07:01:58.000000Z"
21
+ committed-date="2006-11-21T15:59:22.761488Z"
22
+ checksum="b9cd76bec13b02af840a565ab5cc3a3d"
23
+ last-author="kstephens"
24
+ kind="file"
25
+ revision="3"/>
26
+ <entry
27
+ committed-rev="5"
28
+ name="Rakefile"
29
+ text-time="2006-11-21T16:55:41.000000Z"
30
+ committed-date="2006-11-21T16:56:07.893949Z"
31
+ checksum="fcadec21285b011a5790b90b570d8989"
32
+ last-author="kstephens"
33
+ kind="file"
34
+ revision="5"/>
35
+ <entry
36
+ committed-rev="4"
37
+ name="Manifest.txt"
38
+ text-time="2006-11-21T16:23:21.000000Z"
39
+ committed-date="2006-11-21T16:23:41.780783Z"
40
+ checksum="6ab52f14dd072e0a3e22cae6d6519c48"
41
+ last-author="kstephens"
42
+ kind="file"
43
+ revision="4"/>
44
+ <entry
45
+ name="lib"
46
+ kind="dir"/>
47
+ <entry
48
+ committed-rev="3"
49
+ name="ChangeLog"
50
+ text-time="2006-11-21T05:36:27.000000Z"
51
+ committed-date="2006-11-21T15:59:22.761488Z"
52
+ checksum="3b2752e05075e1e7b8834d65c341293a"
53
+ last-author="kstephens"
54
+ kind="file"
55
+ revision="3"/>
56
+ <entry
57
+ committed-rev="3"
58
+ name="README.txt"
59
+ text-time="2006-11-20T21:47:16.000000Z"
60
+ committed-date="2006-11-21T15:59:22.761488Z"
61
+ checksum="c1eedf91cf735e7ba63300a9f03c5452"
62
+ last-author="kstephens"
63
+ kind="file"
64
+ revision="3"/>
65
+ <entry
66
+ name="examples"
67
+ kind="dir"/>
68
+ </wc-entries>
@@ -0,0 +1 @@
1
+ 4
@@ -0,0 +1,3 @@
1
+ 2006-11-18 Kurt A. Stephens <kurt@umleta.com>
2
+
3
+ * Initial release
@@ -0,0 +1,54 @@
1
+ ./.svn/README.txt
2
+ ./.svn/empty-file
3
+ ./.svn/entries
4
+ ./.svn/format
5
+ ./.svn/text-base/ChangeLog.svn-base
6
+ ./.svn/text-base/Manifest.txt.svn-base
7
+ ./.svn/text-base/README.txt.svn-base
8
+ ./.svn/text-base/Rakefile.svn-base
9
+ ./.svn/text-base/Releases.txt.svn-base
10
+ ./ChangeLog
11
+ ./Manifest.txt
12
+ ./README.txt
13
+ ./Rakefile
14
+ ./Releases.txt
15
+ ./examples/.svn/README.txt
16
+ ./examples/.svn/empty-file
17
+ ./examples/.svn/entries
18
+ ./examples/.svn/format
19
+ ./examples/.svn/props/ex1.rb.svn-work
20
+ ./examples/ex1.rb
21
+ ./lib/.svn/README.txt
22
+ ./lib/.svn/empty-file
23
+ ./lib/.svn/entries
24
+ ./lib/.svn/format
25
+ ./lib/.svn/text-base/multimethod.rb.svn-base
26
+ ./lib/multimethod.rb
27
+ ./lib/multimethod/.svn/README.txt
28
+ ./lib/multimethod/.svn/empty-file
29
+ ./lib/multimethod/.svn/entries
30
+ ./lib/multimethod/.svn/format
31
+ ./lib/multimethod/.svn/text-base/core_extensions.rb.svn-base
32
+ ./lib/multimethod/.svn/text-base/method.rb.svn-base
33
+ ./lib/multimethod/.svn/text-base/multimethod.rb.svn-base
34
+ ./lib/multimethod/.svn/text-base/parameter.rb.svn-base
35
+ ./lib/multimethod/.svn/text-base/table.rb.svn-base
36
+ ./lib/multimethod/core_extensions.rb
37
+ ./lib/multimethod/method.rb
38
+ ./lib/multimethod/multimethod.rb
39
+ ./lib/multimethod/parameter.rb
40
+ ./lib/multimethod/table.rb
41
+ ./test/.svn/README.txt
42
+ ./test/.svn/empty-file
43
+ ./test/.svn/entries
44
+ ./test/.svn/format
45
+ ./test/.svn/text-base/method_test.rb.svn-base
46
+ ./test/.svn/text-base/multimethod_test.rb.svn-base
47
+ ./test/.svn/text-base/parameter_test.rb.svn-base
48
+ ./test/.svn/text-base/test_base.rb.svn-base
49
+ ./test/.svn/text-base/usage_test.rb.svn-base
50
+ ./test/method_test.rb
51
+ ./test/multimethod_test.rb
52
+ ./test/parameter_test.rb
53
+ ./test/test_base.rb
54
+ ./test/usage_test.rb
@@ -0,0 +1,40 @@
1
+ = Multimethod
2
+
3
+ This is the rubyforge.com Multimethod package.
4
+
5
+ == Installation
6
+
7
+ gem install multimethod
8
+
9
+ == Documentation
10
+
11
+ "Project Info":http://rubyforge.org/projects/multimethod/
12
+
13
+ "API Documentation":http://multimethod.rubyforge.org/
14
+
15
+ The RubyForge package multimethod
16
+ implements multi-method dispatching on argument types.
17
+
18
+ See also: ?????http://umleta.com/node/?????
19
+
20
+ == Home page
21
+
22
+ * {Multimethod Home}[http://multimethod.rubyforge.org]
23
+
24
+ == Additional directories
25
+
26
+ [./lib/...] the Multimethod library
27
+ [./test/...] unit and functional test
28
+ [./examples/...] example programs
29
+
30
+ == Credits
31
+
32
+ Multimethod was developed by:
33
+
34
+ * Kurt Stephens -- ruby-multimethod(at)umleta.com, sponsored by umleta.com
35
+
36
+ == Contributors
37
+
38
+ Maybe you?
39
+
40
+
@@ -0,0 +1,132 @@
1
+ # Rakefile for ruby-multimethods -*- ruby -*-
2
+ # Adapted from RubyGems/Rakefile
3
+ # upload_package NOT WORKING YET
4
+
5
+ #################################################################
6
+
7
+ require 'rubygems'
8
+ require 'hoe'
9
+
10
+ PKG_Name = 'Multimethod'
11
+ PKG_DESCRIPTION = %{Supports Multimethod dispatching.
12
+
13
+ For more details, see:
14
+
15
+ http://multimethod.rubyforge.org/files/lib/multimethod_rb.html
16
+ http://multimethod.rubyforge.org/files/README.txt
17
+ http://multimethod.rubyforge.org/
18
+
19
+ }
20
+
21
+ #################################################################
22
+ # Release notes
23
+ #
24
+
25
+ def get_release_notes(relfile = "Releases.txt")
26
+
27
+ release = nil
28
+ notes = [ ]
29
+
30
+ File.open(relfile) do |f|
31
+ while ! f.eof? && line = f.readline
32
+ if md = /^== Release ([\d\.]+)/i.match(line)
33
+ release = md[1]
34
+ notes << line
35
+ break
36
+ end
37
+ end
38
+
39
+ while ! f.eof? && line = f.readline
40
+ if md = /^== Release ([\d\.]+)/i.match(line)
41
+ break
42
+ end
43
+ notes << line
44
+ end
45
+ end
46
+
47
+ [ release, notes.join('') ]
48
+ end
49
+
50
+ #################################################################
51
+
52
+ PKG_NAME = PKG_Name.gsub(/[a-z][A-Z]/) {|x| "#{x[0,1]}_#{x[1,1]}"}.downcase
53
+
54
+ release, release_notes = get_release_notes
55
+
56
+ hoe = Hoe.new(PKG_NAME, release) do |p|
57
+ p.author = 'Kurt Stephens'
58
+ p.description = PKG_DESCRIPTION
59
+ p.email = "ruby-#{PKG_NAME}@umleta.com"
60
+ p.summary = p.description
61
+ p.changes = release_notes
62
+ p.url = "http://rubyforge.org/projects/#{PKG_NAME}"
63
+
64
+ p.test_globs = ['test/**/*.rb']
65
+ end
66
+
67
+ PKG_VERSION = hoe.version
68
+
69
+ #################################################################
70
+ # Version file
71
+ #
72
+
73
+ def announce(msg='')
74
+ STDERR.puts msg
75
+ end
76
+
77
+ version_rb = "lib/#{PKG_NAME}/#{PKG_NAME}_version.rb"
78
+
79
+ task :update_version do
80
+ announce "Updating #{PKG_Name} version to #{PKG_VERSION}: #{version_rb}"
81
+ open(version_rb, "w") do |f|
82
+ f.puts "# DO NOT EDIT"
83
+ f.puts "# This file is auto-generated by build scripts."
84
+ f.puts "# See: rake update_version"
85
+ f.puts "module #{PKG_Name}"
86
+ f.puts " #{PKG_Name}Version = '#{PKG_VERSION}'"
87
+ f.puts "end"
88
+ end
89
+ if ENV['RELTEST']
90
+ announce "Release Task Testing, skipping commiting of new version"
91
+ else
92
+ sh %{svn commit -m "Updated to version #{PKG_VERSION}" #{version_rb} Rakefile}
93
+ end
94
+ end
95
+
96
+ task version_rb => :update_version
97
+
98
+ # task :test => :update_version
99
+
100
+
101
+ # Misc Tasks ---------------------------------------------------------
102
+
103
+ def egrep(pattern)
104
+ Dir['**/*.rb'].each do |fn|
105
+ count = 0
106
+ open(fn) do |f|
107
+ while line = f.gets
108
+ count += 1
109
+ if line =~ pattern
110
+ puts "#{fn}:#{count}:#{line}"
111
+ end
112
+ end
113
+ end
114
+ end
115
+ end
116
+
117
+ desc "Look for TODO and FIXME tags in the code"
118
+ task :todo do
119
+ egrep /#.*(FIXME|TODO|TBD)/
120
+ end
121
+
122
+ desc "Look for Debugging print lines"
123
+ task :dbg do
124
+ egrep /\bDBG|\bbreakpoint\b/
125
+ end
126
+
127
+ desc "List all ruby files"
128
+ task :rubyfiles do
129
+ puts Dir['**/*.rb'].reject { |fn| fn =~ /^pkg/ }
130
+ puts Dir['bin/*'].reject { |fn| fn =~ /CVS|.svn|(~$)|(\.rb$)/ }
131
+ end
132
+
@@ -0,0 +1,7 @@
1
+ = Multimethod Release History
2
+
3
+ == Release 0.0.1: 2006/11/18
4
+
5
+ * Initial Release
6
+ * TODO
7
+ * Fix how default parameters are scored.
@@ -0,0 +1,3 @@
1
+ 2006-11-18 Kurt A. Stephens <kurt@umleta.com>
2
+
3
+ * Initial release
@@ -0,0 +1,54 @@
1
+ ./.svn/README.txt
2
+ ./.svn/empty-file
3
+ ./.svn/entries
4
+ ./.svn/format
5
+ ./.svn/text-base/ChangeLog.svn-base
6
+ ./.svn/text-base/Manifest.txt.svn-base
7
+ ./.svn/text-base/README.txt.svn-base
8
+ ./.svn/text-base/Rakefile.svn-base
9
+ ./.svn/text-base/Releases.txt.svn-base
10
+ ./ChangeLog
11
+ ./Manifest.txt
12
+ ./README.txt
13
+ ./Rakefile
14
+ ./Releases.txt
15
+ ./examples/.svn/README.txt
16
+ ./examples/.svn/empty-file
17
+ ./examples/.svn/entries
18
+ ./examples/.svn/format
19
+ ./examples/.svn/props/ex1.rb.svn-work
20
+ ./examples/ex1.rb
21
+ ./lib/.svn/README.txt
22
+ ./lib/.svn/empty-file
23
+ ./lib/.svn/entries
24
+ ./lib/.svn/format
25
+ ./lib/.svn/text-base/multimethod.rb.svn-base
26
+ ./lib/multimethod.rb
27
+ ./lib/multimethod/.svn/README.txt
28
+ ./lib/multimethod/.svn/empty-file
29
+ ./lib/multimethod/.svn/entries
30
+ ./lib/multimethod/.svn/format
31
+ ./lib/multimethod/.svn/text-base/core_extensions.rb.svn-base
32
+ ./lib/multimethod/.svn/text-base/method.rb.svn-base
33
+ ./lib/multimethod/.svn/text-base/multimethod.rb.svn-base
34
+ ./lib/multimethod/.svn/text-base/parameter.rb.svn-base
35
+ ./lib/multimethod/.svn/text-base/table.rb.svn-base
36
+ ./lib/multimethod/core_extensions.rb
37
+ ./lib/multimethod/method.rb
38
+ ./lib/multimethod/multimethod.rb
39
+ ./lib/multimethod/parameter.rb
40
+ ./lib/multimethod/table.rb
41
+ ./test/.svn/README.txt
42
+ ./test/.svn/empty-file
43
+ ./test/.svn/entries
44
+ ./test/.svn/format
45
+ ./test/.svn/text-base/method_test.rb.svn-base
46
+ ./test/.svn/text-base/multimethod_test.rb.svn-base
47
+ ./test/.svn/text-base/parameter_test.rb.svn-base
48
+ ./test/.svn/text-base/test_base.rb.svn-base
49
+ ./test/.svn/text-base/usage_test.rb.svn-base
50
+ ./test/method_test.rb
51
+ ./test/multimethod_test.rb
52
+ ./test/parameter_test.rb
53
+ ./test/test_base.rb
54
+ ./test/usage_test.rb
@@ -0,0 +1,40 @@
1
+ = Multimethod
2
+
3
+ This is the rubyforge.com Multimethod package.
4
+
5
+ == Installation
6
+
7
+ gem install multimethod
8
+
9
+ == Documentation
10
+
11
+ "Project Info":http://rubyforge.org/projects/multimethod/
12
+
13
+ "API Documentation":http://multimethod.rubyforge.org/
14
+
15
+ The RubyForge package multimethod
16
+ implements multi-method dispatching on argument types.
17
+
18
+ See also: ?????http://umleta.com/node/?????
19
+
20
+ == Home page
21
+
22
+ * {Multimethod Home}[http://multimethod.rubyforge.org]
23
+
24
+ == Additional directories
25
+
26
+ [./lib/...] the Multimethod library
27
+ [./test/...] unit and functional test
28
+ [./examples/...] example programs
29
+
30
+ == Credits
31
+
32
+ Multimethod was developed by:
33
+
34
+ * Kurt Stephens -- ruby-multimethod(at)umleta.com, sponsored by umleta.com
35
+
36
+ == Contributors
37
+
38
+ Maybe you?
39
+
40
+
@@ -0,0 +1,132 @@
1
+ # Rakefile for ruby-multimethods -*- ruby -*-
2
+ # Adapted from RubyGems/Rakefile
3
+ # upload_package NOT WORKING YET
4
+
5
+ #################################################################
6
+
7
+ require 'rubygems'
8
+ require 'hoe'
9
+
10
+ PKG_Name = 'Multimethod'
11
+ PKG_DESCRIPTION = %{Supports Multimethod dispatching.
12
+
13
+ For more details, see:
14
+
15
+ http://multimethod.rubyforge.org/files/lib/multimethod_rb.html
16
+ http://multimethod.rubyforge.org/files/README.txt
17
+ http://multimethod.rubyforge.org/
18
+
19
+ }
20
+
21
+ #################################################################
22
+ # Release notes
23
+ #
24
+
25
+ def get_release_notes(relfile = "Releases.txt")
26
+
27
+ release = nil
28
+ notes = [ ]
29
+
30
+ File.open(relfile) do |f|
31
+ while ! f.eof? && line = f.readline
32
+ if md = /^== Release ([\d\.]+)/i.match(line)
33
+ release = md[1]
34
+ notes << line
35
+ break
36
+ end
37
+ end
38
+
39
+ while ! f.eof? && line = f.readline
40
+ if md = /^== Release ([\d\.]+)/i.match(line)
41
+ break
42
+ end
43
+ notes << line
44
+ end
45
+ end
46
+
47
+ [ release, notes.join('') ]
48
+ end
49
+
50
+ #################################################################
51
+
52
+ PKG_NAME = PKG_Name.gsub(/[a-z][A-Z]/) {|x| "#{x[0,1]}_#{x[1,1]}"}.downcase
53
+
54
+ release, release_notes = get_release_notes
55
+
56
+ hoe = Hoe.new(PKG_NAME, release) do |p|
57
+ p.author = 'Kurt Stephens'
58
+ p.description = PKG_DESCRIPTION
59
+ p.email = "ruby-#{PKG_NAME}@umleta.com"
60
+ p.summary = p.description
61
+ p.changes = release_notes
62
+ p.url = "http://rubyforge.org/projects/#{PKG_NAME}"
63
+
64
+ p.test_globs = ['test/**/*.rb']
65
+ end
66
+
67
+ PKG_VERSION = hoe.version
68
+
69
+ #################################################################
70
+ # Version file
71
+ #
72
+
73
+ def announce(msg='')
74
+ STDERR.puts msg
75
+ end
76
+
77
+ version_rb = "lib/#{PKG_NAME}/#{PKG_NAME}_version.rb"
78
+
79
+ task :update_version do
80
+ announce "Updating #{PKG_Name} version to #{PKG_VERSION}: #{version_rb}"
81
+ open(version_rb, "w") do |f|
82
+ f.puts "# DO NOT EDIT"
83
+ f.puts "# This file is auto-generated by build scripts."
84
+ f.puts "# See: rake update_version"
85
+ f.puts "module #{PKG_Name}"
86
+ f.puts " #{PKG_Name}Version = '#{PKG_VERSION}'"
87
+ f.puts "end"
88
+ end
89
+ if ENV['RELTEST']
90
+ announce "Release Task Testing, skipping commiting of new version"
91
+ else
92
+ sh %{svn commit -m "Updated to version #{PKG_VERSION}" #{version_rb} Rakefile}
93
+ end
94
+ end
95
+
96
+ task version_rb => :update_version
97
+
98
+ # task :test => :update_version
99
+
100
+
101
+ # Misc Tasks ---------------------------------------------------------
102
+
103
+ def egrep(pattern)
104
+ Dir['**/*.rb'].each do |fn|
105
+ count = 0
106
+ open(fn) do |f|
107
+ while line = f.gets
108
+ count += 1
109
+ if line =~ pattern
110
+ puts "#{fn}:#{count}:#{line}"
111
+ end
112
+ end
113
+ end
114
+ end
115
+ end
116
+
117
+ desc "Look for TODO and FIXME tags in the code"
118
+ task :todo do
119
+ egrep /#.*(FIXME|TODO|TBD)/
120
+ end
121
+
122
+ desc "Look for Debugging print lines"
123
+ task :dbg do
124
+ egrep /\bDBG|\bbreakpoint\b/
125
+ end
126
+
127
+ desc "List all ruby files"
128
+ task :rubyfiles do
129
+ puts Dir['**/*.rb'].reject { |fn| fn =~ /^pkg/ }
130
+ puts Dir['bin/*'].reject { |fn| fn =~ /CVS|.svn|(~$)|(\.rb$)/ }
131
+ end
132
+