multimethod 0.0.1

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