ruwiki 0.9.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (96) hide show
  1. data/Readme.rubygems +86 -0
  2. data/Readme.tarfile +65 -0
  3. data/bin/ruwiki +58 -0
  4. data/bin/ruwiki.cgi +87 -0
  5. data/bin/ruwiki_convert +56 -0
  6. data/bin/ruwiki_service.rb +82 -0
  7. data/bin/ruwiki_servlet +53 -0
  8. data/contrib/enscript-token.rb +55 -0
  9. data/contrib/rublog_integrator.rb +68 -0
  10. data/data/Default/ProjectIndex.ruwiki +49 -0
  11. data/data/Ruwiki/Antispam.ruwiki +65 -0
  12. data/data/Ruwiki/BugTracking.ruwiki +33 -0
  13. data/data/Ruwiki/ChangeLog.ruwiki +102 -0
  14. data/data/Ruwiki/Configuring_Ruwiki.ruwiki +151 -0
  15. data/data/Ruwiki/Extending_Ruwiki.ruwiki +317 -0
  16. data/data/Ruwiki/LicenseAndAuthorInfo.ruwiki +30 -0
  17. data/data/Ruwiki/ProjectIndex.ruwiki +84 -0
  18. data/data/Ruwiki/Roadmap.ruwiki +225 -0
  19. data/data/Ruwiki/RuwikiTemplatingLibrary.ruwiki +156 -0
  20. data/data/Ruwiki/RuwikiUtilities.ruwiki +157 -0
  21. data/data/Ruwiki/SandBox.ruwiki +9 -0
  22. data/data/Ruwiki/To_Do.ruwiki +51 -0
  23. data/data/Ruwiki/TroubleShooting.ruwiki +33 -0
  24. data/data/Ruwiki/WikiFeatures.ruwiki +17 -0
  25. data/data/Ruwiki/WikiMarkup.ruwiki +261 -0
  26. data/data/Tutorial/AddingPages.ruwiki +16 -0
  27. data/data/Tutorial/AddingProjects.ruwiki +16 -0
  28. data/data/Tutorial/ProjectIndex.ruwiki +11 -0
  29. data/data/Tutorial/SandBox.ruwiki +9 -0
  30. data/data/agents.banned +60 -0
  31. data/data/agents.readonly +321 -0
  32. data/data/hostip.banned +30 -0
  33. data/data/hostip.readonly +28 -0
  34. data/lib/ruwiki.rb +622 -0
  35. data/lib/ruwiki/auth.rb +56 -0
  36. data/lib/ruwiki/auth/gforge.rb +73 -0
  37. data/lib/ruwiki/backend.rb +318 -0
  38. data/lib/ruwiki/backend/flatfiles.rb +217 -0
  39. data/lib/ruwiki/config.rb +244 -0
  40. data/lib/ruwiki/exportable.rb +192 -0
  41. data/lib/ruwiki/handler.rb +342 -0
  42. data/lib/ruwiki/lang/de.rb +339 -0
  43. data/lib/ruwiki/lang/en.rb +334 -0
  44. data/lib/ruwiki/lang/es.rb +339 -0
  45. data/lib/ruwiki/page.rb +262 -0
  46. data/lib/ruwiki/servlet.rb +38 -0
  47. data/lib/ruwiki/template.rb +553 -0
  48. data/lib/ruwiki/utils.rb +24 -0
  49. data/lib/ruwiki/utils/command.rb +102 -0
  50. data/lib/ruwiki/utils/converter.rb +297 -0
  51. data/lib/ruwiki/utils/manager.rb +639 -0
  52. data/lib/ruwiki/utils/servletrunner.rb +295 -0
  53. data/lib/ruwiki/wiki.rb +147 -0
  54. data/lib/ruwiki/wiki/tokens.rb +136 -0
  55. data/lib/ruwiki/wiki/tokens/00default.rb +211 -0
  56. data/lib/ruwiki/wiki/tokens/01wikilinks.rb +166 -0
  57. data/lib/ruwiki/wiki/tokens/02actions.rb +63 -0
  58. data/lib/ruwiki/wiki/tokens/abbreviations.rb +40 -0
  59. data/lib/ruwiki/wiki/tokens/calendar.rb +147 -0
  60. data/lib/ruwiki/wiki/tokens/headings.rb +43 -0
  61. data/lib/ruwiki/wiki/tokens/lists.rb +112 -0
  62. data/lib/ruwiki/wiki/tokens/rubylists.rb +48 -0
  63. data/ruwiki.conf +22 -0
  64. data/ruwiki.pkg +0 -0
  65. data/templates/default/body.tmpl +19 -0
  66. data/templates/default/content.tmpl +7 -0
  67. data/templates/default/controls.tmpl +23 -0
  68. data/templates/default/edit.tmpl +27 -0
  69. data/templates/default/error.tmpl +14 -0
  70. data/templates/default/footer.tmpl +23 -0
  71. data/templates/default/ruwiki.css +297 -0
  72. data/templates/default/save.tmpl +8 -0
  73. data/templates/sidebar/body.tmpl +19 -0
  74. data/templates/sidebar/content.tmpl +8 -0
  75. data/templates/sidebar/controls.tmpl +8 -0
  76. data/templates/sidebar/edit.tmpl +27 -0
  77. data/templates/sidebar/error.tmpl +13 -0
  78. data/templates/sidebar/footer.tmpl +22 -0
  79. data/templates/sidebar/ruwiki.css +347 -0
  80. data/templates/sidebar/save.tmpl +10 -0
  81. data/templates/simple/body.tmpl +13 -0
  82. data/templates/simple/content.tmpl +7 -0
  83. data/templates/simple/controls.tmpl +8 -0
  84. data/templates/simple/edit.tmpl +25 -0
  85. data/templates/simple/error.tmpl +10 -0
  86. data/templates/simple/footer.tmpl +10 -0
  87. data/templates/simple/ruwiki.css +192 -0
  88. data/templates/simple/save.tmpl +8 -0
  89. data/tests/harness.rb +52 -0
  90. data/tests/tc_backend_flatfile.rb +103 -0
  91. data/tests/tc_bugs.rb +74 -0
  92. data/tests/tc_exportable.rb +64 -0
  93. data/tests/tc_template.rb +145 -0
  94. data/tests/tc_tokens.rb +335 -0
  95. data/tests/testall.rb +20 -0
  96. metadata +182 -0
@@ -0,0 +1,335 @@
1
+ #!/usr/bin/env ruby
2
+ #--
3
+ # Ruwiki
4
+ # Copyright � 2002 - 2003, Digikata and HaloStatue
5
+ # Alan Chen (alan@digikata.com)
6
+ # Austin Ziegler (ruwiki@halostatue.ca)
7
+ #
8
+ # Licensed under the same terms as Ruby.
9
+ #
10
+ # $Id: tc_tokens.rb,v 1.12 2004/11/22 04:53:41 austin Exp $
11
+ #++
12
+
13
+ $LOAD_PATH.unshift("#{File.dirname(__FILE__)}/../lib") if __FILE__ == $0
14
+
15
+ require 'test/unit'
16
+ require 'harness'
17
+
18
+ class TokenTestCases < Test::Unit::TestCase
19
+ def setup
20
+ @mrw = MockRuwiki.new
21
+ end
22
+
23
+ class MockRuwiki
24
+ def initialize
25
+ @project = "Default"
26
+ @tokens = []
27
+ @script = "<uri>"
28
+ @message = Hash.new { |h, k| h[k] = "#{k.inspect}" }
29
+ @title = "Ruwiki"
30
+ end
31
+
32
+ def __tokenize(content, token)
33
+ content.gsub!(token.regexp) do |m|
34
+ match = Regexp.last_match
35
+ tc = token.new(match, @project, $wiki.backend, @script, @message, @title)
36
+ @tokens << tc
37
+ if m[0, 1] == '\\'
38
+ "\\TOKEN_#{@tokens.size - 1}"
39
+ else
40
+ "TOKEN_#{@tokens.size - 1}"
41
+ end
42
+ end
43
+ content
44
+ end
45
+
46
+ def __replace(content)
47
+ replaced = []
48
+ s = true
49
+ loop do
50
+ break if replaced.size >= @tokens.size
51
+ break if s.nil?
52
+ s = content.gsub!(/\\TOKEN_(\d+)/) do |m|
53
+ match = Regexp.last_match
54
+ i = match.captures[0].to_i
55
+ replaced << i
56
+ @tokens[i].restore
57
+ end
58
+
59
+ s = content.gsub!(/TOKEN_(\d+)/) do |m|
60
+ match = Regexp.last_match
61
+ i = match.captures[0].to_i
62
+ replaced << i
63
+ @tokens[i].replace
64
+ end
65
+ end
66
+ content
67
+ end
68
+
69
+ def __post_replace(content)
70
+ token_classes = @tokens.map { |token| token.class }.sort_by { |token| token.rank }
71
+ token_classes.uniq.each { |tc| tc.post_replace(content) }
72
+ content
73
+ end
74
+
75
+ end
76
+
77
+ def __process(token, content, tokenized, replaced, result)
78
+ assert_equal(tokenized, content = @mrw.__tokenize(content, token), "Tokenization failure.")
79
+ assert_equal(replaced, content = @mrw.__replace(content), "Replacement failure.")
80
+ assert_equal(result, content = @mrw.__post_replace(content), "Post-replace failure.")
81
+ end
82
+
83
+ def __display(token, content)
84
+ p tokenized = @mrw.__tokenize(content.dup, token)
85
+ p replaced = @mrw.__replace(tokenized.dup)
86
+ p result = @mrw.__post_replace(replaced.dup)
87
+ end
88
+
89
+ def test_Paragraph
90
+ token = Ruwiki::Wiki::Paragraph
91
+ content = "\nABC\n\nabc\n"
92
+ tkv = "TOKEN_0\nABC\nTOKEN_1\nabc\n"
93
+ rpv = %Q(</p><p class="rwtk_Paragraph">\nABC\n</p><p class="rwtk_Paragraph">\nabc\n)
94
+ res = %Q(<p class="rwtk_Paragraph">ABC</p>\n<p class="rwtk_Paragraph">abc</p>)
95
+
96
+ __process(token, content, tkv, rpv, res)
97
+ end
98
+
99
+ def test_Image
100
+ token = Ruwiki::Wiki::Image
101
+ content = "[image:http://www.halostatue.ca/graphics/maple_leaf.gif]"
102
+ tkv = "TOKEN_0"
103
+ rpv = %Q(<img class="rwtk_Image" alt="http://www.halostatue.ca/graphics/maple_leaf.gif" src="http://www.halostatue.ca/graphics/maple_leaf.gif" title="http://www.halostatue.ca/graphics/maple_leaf.gif" />)
104
+ res = rpv
105
+
106
+ __process(token, content, tkv, rpv, res)
107
+
108
+ tkv = "TOKEN_1"
109
+ content = %Q([image : http://www.halostatue.ca/graphics/maple_leaf.gif style="border: 1px solid black" title="Maple Leaf"])
110
+ rpv = %Q(<img class="rwtk_Image" alt="Maple Leaf" src="http://www.halostatue.ca/graphics/maple_leaf.gif" style="border: 1px solid black" title="Maple Leaf" />)
111
+ res = rpv
112
+ __process(token, content, tkv, rpv, res)
113
+
114
+ tkv = "TOKEN_2"
115
+ content = %Q([image: http://www.halostatue.ca/graphics/maple_leaf.gif style="border: 1px solid black" numbered=true])
116
+ rpv = %Q(<img class="rwtk_Image" alt="[1]" src="http://www.halostatue.ca/graphics/maple_leaf.gif" style="border: 1px solid black" title="[1]" />)
117
+ res = rpv
118
+ __process(token, content, tkv, rpv, res)
119
+
120
+ tkv = "TOKEN_3"
121
+ content = %Q([image: http://www.halostatue.ca/graphics/maple_leaf.gif style="border: 1px solid black" numbered=true alt="Maple Leaf"])
122
+ rpv = %Q(<img class="rwtk_Image" alt="Maple Leaf" src="http://www.halostatue.ca/graphics/maple_leaf.gif" style="border: 1px solid black" title="[2]" />)
123
+ res = rpv
124
+ __process(token, content, tkv, rpv, res)
125
+
126
+ content = "\[image:http://www.halostatue.ca/graphics/maple_leaf.gif]"
127
+ tkv = "TOKEN_4"
128
+ rpv = content
129
+ res = content
130
+
131
+ __process(token, content, tkv, rpv, res)
132
+ end
133
+
134
+ def test_Code
135
+ content = " line 1\n line 2\nline 3\n"
136
+ token = Ruwiki::Wiki::Code
137
+ tkv = "TOKEN_0TOKEN_1line 3\n"
138
+ rpv = %Q(</p><pre class="rwtk_Code"> line 1</pre>\n</p><pre class="rwtk_Code"> line 2</pre>\nline 3\n)
139
+ res = %Q(</p><pre class="rwtk_Code"> line 1\n line 2</pre>\nline 3\n)
140
+
141
+ __process(token, content, tkv, rpv, res)
142
+
143
+ content = " line 1\n line 2\n \n\nline 3\n"
144
+ token = Ruwiki::Wiki::Code
145
+ tkv = "TOKEN_2TOKEN_3TOKEN_4\nline 3\n"
146
+ rpv = %Q(</p><pre class="rwtk_Code"> line 1</pre>\n</p><pre class="rwtk_Code"> line 2</pre>\n</p><pre class="rwtk_Code"> </pre>\n\nline 3\n)
147
+ res = %Q(</p><pre class="rwtk_Code"> line 1\n line 2\n </pre>\n\nline 3\n)
148
+
149
+ __process(token, content, tkv, rpv, res)
150
+ end
151
+
152
+ def test_NumberedLinks
153
+ token = Ruwiki::Wiki::NumberedLinks
154
+ Ruwiki::Wiki::NumberedLinks.reset
155
+ content = "[http://www.ruby-lang.org] \\[http://www.rubyforge.org]"
156
+ tkv = "TOKEN_0 \\TOKEN_1"
157
+ uri = CGI.escape("http://www.ruby-lang.org")
158
+ rpv = %Q{<a class="rwtk_NumberedLinks" href="http://www.google.com/url?sa=D;q=#{uri}">[1]</a> [http://www.rubyforge.org]}
159
+ res = %Q{<a class="rwtk_NumberedLinks" href="http://www.google.com/url?sa=D;q=#{uri}">[1]</a> [http://www.rubyforge.org]}
160
+
161
+ __process(token, content, tkv, rpv, res)
162
+ end
163
+
164
+ def test_NamedLinks
165
+ token = Ruwiki::Wiki::NamedLinks
166
+ content = "[http://www.ruby-lang.org Ruby] \\[http://www.rubyforge.org RubyForge]"
167
+ tkv = "TOKEN_0 \\TOKEN_1"
168
+ uri = CGI.escape("http://www.ruby-lang.org")
169
+ rpv = %Q{<a class="rwtk_NamedLinks" href="http://www.google.com/url?sa=D;q=#{uri}">Ruby</a> [http://www.rubyforge.org RubyForge]}
170
+ res = %Q{<a class="rwtk_NamedLinks" href="http://www.google.com/url?sa=D;q=#{uri}">Ruby</a> [http://www.rubyforge.org RubyForge]}
171
+
172
+ __process(token, content, tkv, rpv, res)
173
+ end
174
+
175
+ def test_ExternalLinks
176
+ token = Ruwiki::Wiki::ExternalLinks
177
+ content = "http://www.ruby-lang.org \\http://www.rubyforge.org"
178
+ tkv = "TOKEN_0 \\TOKEN_1"
179
+ uri = CGI.escape("http://www.ruby-lang.org")
180
+ rpv = %Q{<a class="rwtk_ExternalLinks" href="http://www.google.com/url?sa=D;q=#{uri}">http://www.ruby-lang.org</a> http://www.rubyforge.org}
181
+ res = %Q{<a class="rwtk_ExternalLinks" href="http://www.google.com/url?sa=D;q=#{uri}">http://www.ruby-lang.org</a> http://www.rubyforge.org}
182
+
183
+ __process(token, content, tkv, rpv, res)
184
+ end
185
+
186
+ def test_HRule
187
+ token = Ruwiki::Wiki::HRule
188
+ content = "----\n\\----"
189
+ tkv = "TOKEN_0\n\\TOKEN_1"
190
+ rpv = %Q(<hr class="rwtk_HRule" />\n----)
191
+ res = %Q(<hr class="rwtk_HRule" />\n----)
192
+
193
+ __process(token, content, tkv, rpv, res)
194
+ end
195
+
196
+ def test_ProjectCrossLink
197
+ token = Ruwiki::Wiki::ProjectCrossLink
198
+ content = "Ruwiki::ChangeLog \\Ruwiki::To_Do Ruwiki::NotExist \\Ruwiki::NotExist"
199
+ tkv = "TOKEN_0 \\TOKEN_1 TOKEN_2 \\TOKEN_3"
200
+ rpv = %Q{<a class="rwtk_WikiLink" href="<uri>/Ruwiki/ChangeLog">Ruwiki::ChangeLog</a> Ruwiki::To_Do <span class="rwtk_EditWikiLink">Ruwiki::NotExist</span><a class="rwtk_WikiLink" href="<uri>/Ruwiki/NotExist/_edit">?</a> Ruwiki::NotExist}
201
+ res = %Q{<a class="rwtk_WikiLink" href="<uri>/Ruwiki/ChangeLog">Ruwiki::ChangeLog</a> Ruwiki::To_Do <span class="rwtk_EditWikiLink">Ruwiki::NotExist</span><a class="rwtk_WikiLink" href="<uri>/Ruwiki/NotExist/_edit">?</a> Ruwiki::NotExist}
202
+
203
+ __process(token, content, tkv, rpv, res)
204
+ end
205
+
206
+ def test_ProjectCrossLinkWikipedia
207
+ token = Ruwiki::Wiki::ProjectCrossLinkWikipedia
208
+ content = "Ruwiki::[[ChangeLog]] \\Ruwiki::[[To_Do]] Ruwiki::[[Does Not Exist]] \\Ruwiki::[[Does Not Exist]] Ruwiki::[[_invalid]]"
209
+ tkv = "TOKEN_0 \\TOKEN_1 TOKEN_2 \\TOKEN_3 Ruwiki::[[_invalid]]"
210
+ rpv = %Q{<a class="rwtk_WikiLink" href="<uri>/Ruwiki/ChangeLog">Ruwiki::ChangeLog</a> Ruwiki::[[To_Do]] <span class="rwtk_EditWikiLink">Ruwiki::Does Not Exist</span><a class="rwtk_WikiLink" href="<uri>/Ruwiki/Does+Not+Exist/_edit">?</a> Ruwiki::[[Does Not Exist]] Ruwiki::[[_invalid]]}
211
+ res = %Q{<a class="rwtk_WikiLink" href="<uri>/Ruwiki/ChangeLog">Ruwiki::ChangeLog</a> Ruwiki::[[To_Do]] <span class="rwtk_EditWikiLink">Ruwiki::Does Not Exist</span><a class="rwtk_WikiLink" href="<uri>/Ruwiki/Does+Not+Exist/_edit">?</a> Ruwiki::[[Does Not Exist]] Ruwiki::[[_invalid]]}
212
+
213
+ __process(token, content, tkv, rpv, res)
214
+ end
215
+
216
+ def test_ProjectIndex
217
+ token = Ruwiki::Wiki::ProjectIndex
218
+ content = "::Ruwiki \\::Ruwiki ::Newproject \\::Newproject"
219
+ tkv = "TOKEN_0 \\TOKEN_1 TOKEN_2 \\TOKEN_3"
220
+ rpv = %Q{<a class="rwtk_WikiLink" href="<uri>/Ruwiki/ProjectIndex">Ruwiki</a> ::Ruwiki <span class="rwtk_EditWikiLink">Newproject</span><a class="rwtk_WikiLink" href="<uri>/Newproject/_create">?</a> ::Newproject}
221
+ res = %Q{<a class="rwtk_WikiLink" href="<uri>/Ruwiki/ProjectIndex">Ruwiki</a> ::Ruwiki <span class="rwtk_EditWikiLink">Newproject</span><a class="rwtk_WikiLink" href="<uri>/Newproject/_create">?</a> ::Newproject}
222
+
223
+ __process(token, content, tkv, rpv, res)
224
+ end
225
+
226
+ def test_WikiLinks
227
+ token = Ruwiki::Wiki::WikiLinks
228
+ content = "ProjectIndex \\ProjectIndex AustinZiegler \\AustinZiegler Alan_Chen \\Alan_Chen"
229
+ tkv = "TOKEN_0 \\TOKEN_1 TOKEN_2 \\TOKEN_3 TOKEN_4 \\TOKEN_5"
230
+ rpv = %Q{<a class="rwtk_WikiLink" href="<uri>/Default/ProjectIndex">ProjectIndex</a> ProjectIndex <span class="rwtk_EditWikiLink">AustinZiegler</span><a class="rwtk_WikiLink" href="<uri>/Default/AustinZiegler/_edit">?</a> AustinZiegler <span class="rwtk_EditWikiLink">Alan Chen</span><a class="rwtk_WikiLink" href="<uri>/Default/Alan_Chen/_edit">?</a> Alan_Chen}
231
+ res = %Q{<a class="rwtk_WikiLink" href="<uri>/Default/ProjectIndex">ProjectIndex</a> ProjectIndex <span class="rwtk_EditWikiLink">AustinZiegler</span><a class="rwtk_WikiLink" href="<uri>/Default/AustinZiegler/_edit">?</a> AustinZiegler <span class="rwtk_EditWikiLink">Alan Chen</span><a class="rwtk_WikiLink" href="<uri>/Default/Alan_Chen/_edit">?</a> Alan_Chen}
232
+
233
+ __process(token, content, tkv, rpv, res)
234
+ end
235
+
236
+ def test_WikipediaLinks
237
+ token = Ruwiki::Wiki::WikipediaLinks
238
+ content = "[[ProjectIndex]] \\[[ProjectIndex]] [[Austin Ziegler]] \\[[Austin Ziegler]] [[_Alan Chen]]"
239
+ tkv = "TOKEN_0 \\TOKEN_1 TOKEN_2 \\TOKEN_3 [[_Alan Chen]]"
240
+ rpv = %Q{<a class="rwtk_WikiLink" href="<uri>/Default/ProjectIndex">ProjectIndex</a> [[ProjectIndex]] <span class="rwtk_EditWikiLink">Austin Ziegler</span><a class="rwtk_WikiLink" href="<uri>/Default/Austin+Ziegler/_edit">?</a> [[Austin Ziegler]] [[_Alan Chen]]}
241
+ res = %Q{<a class="rwtk_WikiLink" href="<uri>/Default/ProjectIndex">ProjectIndex</a> [[ProjectIndex]] <span class="rwtk_EditWikiLink">Austin Ziegler</span><a class="rwtk_WikiLink" href="<uri>/Default/Austin+Ziegler/_edit">?</a> [[Austin Ziegler]] [[_Alan Chen]]}
242
+
243
+ __process(token, content, tkv, rpv, res)
244
+ end
245
+
246
+ def test_Abbreviations
247
+ token = Ruwiki::Wiki::Abbreviations
248
+ content = "@{matz}\n@{}\n\\@{matz}"
249
+ tkv = "TOKEN_0\nTOKEN_1\n\\TOKEN_2"
250
+ rpv = %Q(Yukihiro Matsumoto\n<dl class="rwtk_Abbreviations"><dt class="rwtk_Abbreviations">matz</dt><dd class="rwtk_Abbreviations">Yukihiro Matsumoto</dd></dl>\n@{matz})
251
+ res = %Q(Yukihiro Matsumoto\n<dl class="rwtk_Abbreviations"><dt class="rwtk_Abbreviations">matz</dt><dd class="rwtk_Abbreviations">Yukihiro Matsumoto</dd></dl>\n@{matz})
252
+
253
+ __process(token, content, tkv, rpv, res)
254
+ end
255
+
256
+ def test_Headings
257
+ token = Ruwiki::Wiki::Headings
258
+ content = "= header 1\n== header 2\n=== header 3\n==== header 4\n===== header 5\n====== header 6\n======= header 7->6\n\\== noheader 2\n"
259
+ tkv = "TOKEN_0\nTOKEN_1\nTOKEN_2\nTOKEN_3\nTOKEN_4\nTOKEN_5\nTOKEN_6\n\\TOKEN_7\n"
260
+ rpv = %Q(<h1 class="rwtk_Headings">header 1</h1>\n<h2 class="rwtk_Headings">header 2</h2>\n<h3 class="rwtk_Headings">header 3</h3>\n<h4 class="rwtk_Headings">header 4</h4>\n<h5 class="rwtk_Headings">header 5</h5>\n<h6 class="rwtk_Headings">header 6</h6>\n<h6 class="rwtk_Headings">header 7->6</h6>\n== noheader 2\n)
261
+ res = %Q(<h1 class="rwtk_Headings">header 1</h1>\n<h2 class="rwtk_Headings">header 2</h2>\n<h3 class="rwtk_Headings">header 3</h3>\n<h4 class="rwtk_Headings">header 4</h4>\n<h5 class="rwtk_Headings">header 5</h5>\n<h6 class="rwtk_Headings">header 6</h6>\n<h6 class="rwtk_Headings">header 7->6</h6>\n<p class="rwtk_Paragraph">== noheader 2\n)
262
+
263
+ __process(token, content, tkv, rpv, res)
264
+ end
265
+
266
+ def test_Blockquotes
267
+ token = Ruwiki::Wiki::Blockquotes
268
+ content = ": level 1\n:: level 2\n::: level 3\n: level 1, para 2\n\\: not a blockquote\n"
269
+ tkv = "TOKEN_0\nTOKEN_1\nTOKEN_2\nTOKEN_3\n\\TOKEN_4\n"
270
+ rpv = %Q(<blockquote class="rwtk_Blockquotes"> level 1</blockquote>\n<blockquote class="rwtk_Blockquotes"><blockquote class="rwtk_Blockquotes"> level 2</blockquote></blockquote>\n<blockquote class="rwtk_Blockquotes"><blockquote class="rwtk_Blockquotes"><blockquote class="rwtk_Blockquotes"> level 3</blockquote></blockquote></blockquote>\n<blockquote class="rwtk_Blockquotes"> level 1, para 2</blockquote>\n: not a blockquote\n)
271
+ res = %Q(<blockquote class="rwtk_Blockquotes">level 1<blockquote class="rwtk_Blockquotes">level 2<blockquote class="rwtk_Blockquotes">level 3</blockquote></blockquote>level 1, para 2</blockquote>\n: not a blockquote\n)
272
+ __process(token, content, tkv, rpv, res)
273
+
274
+ content = "> level 1\n>> level 2\n>>> level 3\n> level 1, para 2\n\\> not a blockquote\n"
275
+ tkv = "TOKEN_5\nTOKEN_6\nTOKEN_7\nTOKEN_8\n\\TOKEN_9\n"
276
+ rpv = %Q(<blockquote type="cite" class="rwtk_Blockquotes"> level 1</blockquote>\n<blockquote type="cite" class="rwtk_Blockquotes"><blockquote type="cite" class="rwtk_Blockquotes"> level 2</blockquote></blockquote>\n<blockquote type="cite" class="rwtk_Blockquotes"><blockquote type="cite" class="rwtk_Blockquotes"><blockquote type="cite" class="rwtk_Blockquotes"> level 3</blockquote></blockquote></blockquote>\n<blockquote type="cite" class="rwtk_Blockquotes"> level 1, para 2</blockquote>\n&gt; not a blockquote\n)
277
+ res = %Q(<blockquote type="cite" class="rwtk_Blockquotes">level 1<blockquote type="cite" class="rwtk_Blockquotes">level 2<blockquote type="cite" class="rwtk_Blockquotes">level 3</blockquote></blockquote>level 1, para 2</blockquote>\n&gt; not a blockquote\n)
278
+ __process(token, content, tkv, rpv, res)
279
+ end
280
+
281
+ def test_Definitions
282
+ token = Ruwiki::Wiki::Definitions
283
+ content = "; word1 : val1\n;; word2 : val2\n;;; word3 : val3\n; word1/2 : val1/2\n\\; not-a-word : not-a-val\n"
284
+ tkv = "TOKEN_0\nTOKEN_1\nTOKEN_2\nTOKEN_3\n\\TOKEN_4\n"
285
+ rpv = %Q(<dl class="rwtk_Definitions"><dt class="rwtk_Definitions">word1</dt><dd class="rwtk_Definitions">val1</dd></dl>\n<dl class="rwtk_Definitions"><dl class="rwtk_Definitions"><dt class="rwtk_Definitions">word2</dt><dd class="rwtk_Definitions">val2</dd></dl></dl>\n<dl class="rwtk_Definitions"><dl class="rwtk_Definitions"><dl class="rwtk_Definitions"><dt class="rwtk_Definitions">word3</dt><dd class="rwtk_Definitions">val3</dd></dl></dl></dl>\n<dl class="rwtk_Definitions"><dt class="rwtk_Definitions">word1/2</dt><dd class="rwtk_Definitions">val1/2</dd></dl>\n; not-a-word : not-a-val\n)
286
+ res = %Q(<dl class="rwtk_Definitions"><dt class="rwtk_Definitions">word1</dt><dd class="rwtk_Definitions">val1</dd><dl class="rwtk_Definitions"><dt class="rwtk_Definitions">word2</dt><dd class="rwtk_Definitions">val2</dd><dl class="rwtk_Definitions"><dt class="rwtk_Definitions">word3</dt><dd class="rwtk_Definitions">val3</dd></dl></dl><dt class="rwtk_Definitions">word1/2</dt><dd class="rwtk_Definitions">val1/2</dd></dl>\n; not-a-word : not-a-val\n)
287
+
288
+ # __display(token, content)
289
+ __process(token, content, tkv, rpv, res)
290
+ end
291
+
292
+ def test_Lists
293
+ token = Ruwiki::Wiki::Lists
294
+ content = "* level 1\n** level 2\n*** level 3\n*** level 3, item 2\n** level 2, item 2\n* level 1, item 2\n\\* not an item\n"
295
+ tkv = "TOKEN_0\nTOKEN_1\nTOKEN_2\nTOKEN_3\nTOKEN_4\nTOKEN_5\n\\TOKEN_6\n"
296
+ rpv = %Q(<ul class="rwtk_Lists"><li class="rwtk_Lists">level 1</li></ul>\n<ul class="rwtk_Lists"><ul class="rwtk_Lists"><li class="rwtk_Lists">level 2</li></ul></ul>\n<ul class="rwtk_Lists"><ul class="rwtk_Lists"><ul class="rwtk_Lists"><li class="rwtk_Lists">level 3</li></ul></ul></ul>\n<ul class="rwtk_Lists"><ul class="rwtk_Lists"><ul class="rwtk_Lists"><li class="rwtk_Lists">level 3, item 2</li></ul></ul></ul>\n<ul class="rwtk_Lists"><ul class="rwtk_Lists"><li class="rwtk_Lists">level 2, item 2</li></ul></ul>\n<ul class="rwtk_Lists"><li class="rwtk_Lists">level 1, item 2</li></ul>\n* not an item\n)
297
+ res = %Q(<ul class="rwtk_Lists"><li class="rwtk_Lists">level 1</li><ul class="rwtk_Lists"><li class="rwtk_Lists">level 2</li><ul class="rwtk_Lists"><li class="rwtk_Lists">level 3</li><li class="rwtk_Lists">level 3, item 2</li></ul><li class="rwtk_Lists">level 2, item 2</li></ul><li class="rwtk_Lists">level 1, item 2</li></ul>\n* not an item\n)
298
+ __process(token, content, tkv, rpv, res)
299
+
300
+ content = "# level 1\n## level 2\n### level 3\n### level 3, item 2\n## level 2, item 2\n# level 1, item 2\n\\# not an item\n"
301
+ tkv = "TOKEN_7\nTOKEN_8\nTOKEN_9\nTOKEN_10\nTOKEN_11\nTOKEN_12\n\\TOKEN_13\n"
302
+ rpv = %Q(<ol class="rwtk_Lists"><li class="rwtk_Lists">level 1</li></ol>\n<ol class="rwtk_Lists"><ol class="rwtk_Lists"><li class="rwtk_Lists">level 2</li></ol></ol>\n<ol class="rwtk_Lists"><ol class="rwtk_Lists"><ol class="rwtk_Lists"><li class="rwtk_Lists">level 3</li></ol></ol></ol>\n<ol class="rwtk_Lists"><ol class="rwtk_Lists"><ol class="rwtk_Lists"><li class="rwtk_Lists">level 3, item 2</li></ol></ol></ol>\n<ol class="rwtk_Lists"><ol class="rwtk_Lists"><li class="rwtk_Lists">level 2, item 2</li></ol></ol>\n<ol class="rwtk_Lists"><li class="rwtk_Lists">level 1, item 2</li></ol>\n# not an item\n)
303
+ res = %Q(<ol class="rwtk_Lists"><li class="rwtk_Lists">level 1</li><ol class="rwtk_Lists"><li class="rwtk_Lists">level 2</li><ol class="rwtk_Lists"><li class="rwtk_Lists">level 3</li><li class="rwtk_Lists">level 3, item 2</li></ol><li class="rwtk_Lists">level 2, item 2</li></ol><li class="rwtk_Lists">level 1, item 2</li></ol>\n# not an item\n)
304
+ __process(token, content, tkv, rpv, res)
305
+
306
+ content = "# level 1\n*# level 2\n*** level 3\n*#* level 3, item 2\n## level 2, item 2\n# level 1, item 2\n\\# not an item\n"
307
+ tkv = "TOKEN_14\nTOKEN_15\nTOKEN_16\nTOKEN_17\nTOKEN_18\nTOKEN_19\n\\TOKEN_20\n"
308
+ rpv = %Q(<ol class="rwtk_Lists"><li class="rwtk_Lists">level 1</li></ol>\n<ul class="rwtk_Lists"><ol class="rwtk_Lists"><li class="rwtk_Lists">level 2</li></ol></ul>\n<ul class="rwtk_Lists"><ul class="rwtk_Lists"><ul class="rwtk_Lists"><li class="rwtk_Lists">level 3</li></ul></ul></ul>\n<ul class="rwtk_Lists"><ol class="rwtk_Lists"><ul class="rwtk_Lists"><li class="rwtk_Lists">level 3, item 2</li></ul></ol></ul>\n<ol class="rwtk_Lists"><ol class="rwtk_Lists"><li class="rwtk_Lists">level 2, item 2</li></ol></ol>\n<ol class="rwtk_Lists"><li class="rwtk_Lists">level 1, item 2</li></ol>\n# not an item\n)
309
+ res = %Q(<ol class="rwtk_Lists"><li class="rwtk_Lists">level 1</li><ol class="rwtk_Lists"><li class="rwtk_Lists">level 2</li><ul class="rwtk_Lists"><li class="rwtk_Lists">level 3</li><li class="rwtk_Lists">level 3, item 2</li></ul><li class="rwtk_Lists">level 2, item 2</li></ol><li class="rwtk_Lists">level 1, item 2</li></ol>\n# not an item\n)
310
+ __process(token, content, tkv, rpv, res)
311
+ end
312
+
313
+
314
+ def test_RubyTalkLinks
315
+ token = Ruwiki::Wiki::RubyTalkLinks
316
+ content = "[ruby-talk:12345] \\[ruby-talk:12345]"
317
+ tkv = "TOKEN_0 \\TOKEN_1"
318
+ # rpv = %Q(<a class="rwtk_RubyTalkLinks" href="http://www.ruby-talk.org/12345">[ruby-talk:12345]</a> [ruby-talk:12345])
319
+ rpv = %Q(<a class="rwtk_RubyTalkLinks" href="http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/12345">[ruby-talk:12345]</a> [ruby-talk:12345])
320
+ # res = %Q(<a class="rwtk_RubyTalkLinks" href="http://www.ruby-talk.org/12345">[ruby-talk:12345]</a> [ruby-talk:12345])
321
+ res = %Q(<a class="rwtk_RubyTalkLinks" href="http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/12345">[ruby-talk:12345]</a> [ruby-talk:12345])
322
+
323
+ __process(token, content, tkv, rpv, res)
324
+ end
325
+
326
+ def test_OtherRubyLinks
327
+ token = Ruwiki::Wiki::OtherRubyLinks
328
+ content = "[ruby-list:123] \\[ruby-list:123] [ruby-doc:123] \\[ruby-doc:123] [ruby-core:123] \\[ruby-core:123] [ruby-dev:123] \\[ruby-dev:123] [ruby-ext:123] \\[ruby-ext:123] [ruby-math:123] \\[ruby-math:123]"
329
+ tkv = "TOKEN_0 \\TOKEN_1 TOKEN_2 \\TOKEN_3 TOKEN_4 \\TOKEN_5 TOKEN_6 \\TOKEN_7 TOKEN_8 \\TOKEN_9 TOKEN_10 \\TOKEN_11"
330
+ rpv = %Q(<a class="rwtk_OtherRubyLinks" href="http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/123">[ruby-list:123]</a> [ruby-list:123] <a class="rwtk_OtherRubyLinks" href="http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-doc/123">[ruby-doc:123]</a> [ruby-doc:123] <a class="rwtk_OtherRubyLinks" href="http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-core/123">[ruby-core:123]</a> [ruby-core:123] <a class="rwtk_OtherRubyLinks" href="http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/123">[ruby-dev:123]</a> [ruby-dev:123] <a class="rwtk_OtherRubyLinks" href="http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-ext/123">[ruby-ext:123]</a> [ruby-ext:123] <a class="rwtk_OtherRubyLinks" href="http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-math/123">[ruby-math:123]</a> [ruby-math:123])
331
+ res = %Q(<a class="rwtk_OtherRubyLinks" href="http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/123">[ruby-list:123]</a> [ruby-list:123] <a class="rwtk_OtherRubyLinks" href="http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-doc/123">[ruby-doc:123]</a> [ruby-doc:123] <a class="rwtk_OtherRubyLinks" href="http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-core/123">[ruby-core:123]</a> [ruby-core:123] <a class="rwtk_OtherRubyLinks" href="http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/123">[ruby-dev:123]</a> [ruby-dev:123] <a class="rwtk_OtherRubyLinks" href="http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-ext/123">[ruby-ext:123]</a> [ruby-ext:123] <a class="rwtk_OtherRubyLinks" href="http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-math/123">[ruby-math:123]</a> [ruby-math:123])
332
+
333
+ __process(token, content, tkv, rpv, res)
334
+ end
335
+ end
@@ -0,0 +1,20 @@
1
+ #!/usr/bin/env ruby
2
+ #--
3
+ # Ruwiki
4
+ # Copyright � 2002 - 2003, Digikata and HaloStatue
5
+ # Alan Chen (alan@digikata.com)
6
+ # Austin Ziegler (ruwiki@halostatue.ca)
7
+ #
8
+ # Licensed under the same terms as Ruby.
9
+ #
10
+ # $Id: testall.rb,v 1.4 2004/09/27 04:48:28 austin Exp $
11
+ #++
12
+
13
+ $LOAD_PATH.unshift("#{File.dirname(__FILE__)}/../lib") if __FILE__ == $0
14
+
15
+ $stderr.puts "Checking for test cases:"
16
+ Dir['tc_*.rb'].each do |testcase|
17
+ $stderr.puts "\t#{testcase}"
18
+ load testcase
19
+ end
20
+ $stderr.puts " "
metadata ADDED
@@ -0,0 +1,182 @@
1
+ --- !ruby/object:Gem::Specification
2
+ rubygems_version: 0.8.1
3
+ specification_version: 1
4
+ name: ruwiki
5
+ version: !ruby/object:Gem::Version
6
+ version: 0.9.0
7
+ date: 2004-11-28
8
+ summary: "A simple, extensible, and fast Wiki-clone."
9
+ require_paths:
10
+ - lib
11
+ author: Austin Ziegler and Alan Chen
12
+ email: ruwiki-discuss@rubyforge.org
13
+ homepage: http://ruwiki.rubyforge.org/
14
+ rubyforge_project: ruwiki
15
+ description: "Ruwiki is a simple, extensible Wiki-clone written in Ruby. It supports both CGI and WEBrick interfaces, templates, and CSS formatting. This Wiki differs from most other Wikis in that it supports project namespaces, so that two topics may be named the same for differing projects without colliding or having to resort to odd naming conventions. Please see the ::Ruwiki project in the running Wiki for more information. Ruwiki 0.9.0 has German and Spanish translations available."
16
+ autorequire: ruwiki
17
+ default_executable:
18
+ bindir: bin
19
+ has_rdoc: true
20
+ required_ruby_version: !ruby/object:Gem::Version::Requirement
21
+ requirements:
22
+ -
23
+ - ">"
24
+ - !ruby/object:Gem::Version
25
+ version: 0.0.0
26
+ version:
27
+ platform: ruby
28
+ files:
29
+ - bin
30
+ - contrib
31
+ - data
32
+ - lib
33
+ - Readme.rubygems
34
+ - Readme.tarfile
35
+ - ruwiki.conf
36
+ - templates
37
+ - tests
38
+ - bin/ruwiki
39
+ - bin/ruwiki.cgi
40
+ - bin/ruwiki_convert
41
+ - bin/ruwiki_service.rb
42
+ - bin/ruwiki_servlet
43
+ - contrib/enscript-token.rb
44
+ - contrib/rublog_integrator.rb
45
+ - data/agents.banned
46
+ - data/agents.readonly
47
+ - data/Default
48
+ - data/hostip.banned
49
+ - data/hostip.readonly
50
+ - data/Ruwiki
51
+ - data/Tutorial
52
+ - data/Default/ProjectIndex.ruwiki
53
+ - data/Ruwiki/Antispam.ruwiki
54
+ - data/Ruwiki/BugTracking.ruwiki
55
+ - data/Ruwiki/ChangeLog.ruwiki
56
+ - data/Ruwiki/Configuring_Ruwiki.ruwiki
57
+ - data/Ruwiki/Extending_Ruwiki.ruwiki
58
+ - data/Ruwiki/LicenseAndAuthorInfo.ruwiki
59
+ - data/Ruwiki/ProjectIndex.ruwiki
60
+ - data/Ruwiki/Roadmap.ruwiki
61
+ - data/Ruwiki/RuwikiTemplatingLibrary.ruwiki
62
+ - data/Ruwiki/RuwikiUtilities.ruwiki
63
+ - data/Ruwiki/SandBox.ruwiki
64
+ - data/Ruwiki/To_Do.ruwiki
65
+ - data/Ruwiki/TroubleShooting.ruwiki
66
+ - data/Ruwiki/WikiFeatures.ruwiki
67
+ - data/Ruwiki/WikiMarkup.ruwiki
68
+ - data/Tutorial/AddingPages.ruwiki
69
+ - data/Tutorial/AddingProjects.ruwiki
70
+ - data/Tutorial/ProjectIndex.ruwiki
71
+ - data/Tutorial/SandBox.ruwiki
72
+ - lib/ruwiki
73
+ - lib/ruwiki.rb
74
+ - lib/ruwiki/auth
75
+ - lib/ruwiki/auth.rb
76
+ - lib/ruwiki/backend
77
+ - lib/ruwiki/backend.rb
78
+ - lib/ruwiki/config.rb
79
+ - lib/ruwiki/exportable.rb
80
+ - lib/ruwiki/handler.rb
81
+ - lib/ruwiki/lang
82
+ - lib/ruwiki/page.rb
83
+ - lib/ruwiki/servlet.rb
84
+ - lib/ruwiki/template.rb
85
+ - lib/ruwiki/utils
86
+ - lib/ruwiki/utils.rb
87
+ - lib/ruwiki/wiki
88
+ - lib/ruwiki/wiki.rb
89
+ - lib/ruwiki/auth/gforge.rb
90
+ - lib/ruwiki/backend/flatfiles.rb
91
+ - lib/ruwiki/lang/de.rb
92
+ - lib/ruwiki/lang/en.rb
93
+ - lib/ruwiki/lang/es.rb
94
+ - lib/ruwiki/utils/command.rb
95
+ - lib/ruwiki/utils/converter.rb
96
+ - lib/ruwiki/utils/manager.rb
97
+ - lib/ruwiki/utils/servletrunner.rb
98
+ - lib/ruwiki/wiki/tokens
99
+ - lib/ruwiki/wiki/tokens.rb
100
+ - lib/ruwiki/wiki/tokens/00default.rb
101
+ - lib/ruwiki/wiki/tokens/01wikilinks.rb
102
+ - lib/ruwiki/wiki/tokens/02actions.rb
103
+ - lib/ruwiki/wiki/tokens/abbreviations.rb
104
+ - lib/ruwiki/wiki/tokens/calendar.rb
105
+ - lib/ruwiki/wiki/tokens/headings.rb
106
+ - lib/ruwiki/wiki/tokens/lists.rb
107
+ - lib/ruwiki/wiki/tokens/rubylists.rb
108
+ - templates/default
109
+ - templates/sidebar
110
+ - templates/simple
111
+ - templates/default/body.tmpl
112
+ - templates/default/content.tmpl
113
+ - templates/default/controls.tmpl
114
+ - templates/default/edit.tmpl
115
+ - templates/default/error.tmpl
116
+ - templates/default/footer.tmpl
117
+ - templates/default/ruwiki.css
118
+ - templates/default/save.tmpl
119
+ - templates/sidebar/body.tmpl
120
+ - templates/sidebar/content.tmpl
121
+ - templates/sidebar/controls.tmpl
122
+ - templates/sidebar/edit.tmpl
123
+ - templates/sidebar/error.tmpl
124
+ - templates/sidebar/footer.tmpl
125
+ - templates/sidebar/ruwiki.css
126
+ - templates/sidebar/save.tmpl
127
+ - templates/simple/body.tmpl
128
+ - templates/simple/content.tmpl
129
+ - templates/simple/controls.tmpl
130
+ - templates/simple/edit.tmpl
131
+ - templates/simple/error.tmpl
132
+ - templates/simple/footer.tmpl
133
+ - templates/simple/ruwiki.css
134
+ - templates/simple/save.tmpl
135
+ - tests/harness.rb
136
+ - tests/tc_backend_flatfile.rb
137
+ - tests/tc_bugs.rb
138
+ - tests/tc_exportable.rb
139
+ - tests/tc_template.rb
140
+ - tests/tc_tokens.rb
141
+ - tests/testall.rb
142
+ - ruwiki.pkg
143
+ test_files:
144
+ - tests/testall.rb
145
+ rdoc_options:
146
+ - "--title"
147
+ - "Ruwiki - An Extensible Wiki"
148
+ - "--main"
149
+ - Readme.tarfile
150
+ - "--line-numbers"
151
+ extra_rdoc_files:
152
+ - Readme.tarfile
153
+ - Readme.rubygems
154
+ executables:
155
+ - ruwiki
156
+ - ruwiki.cgi
157
+ - ruwiki_convert
158
+ - ruwiki_service.rb
159
+ - ruwiki_servlet
160
+ extensions: []
161
+ requirements: []
162
+ dependencies:
163
+ - !ruby/object:Gem::Dependency
164
+ name: diff-lcs
165
+ version_requirement:
166
+ version_requirements: !ruby/object:Gem::Version::Requirement
167
+ requirements:
168
+ -
169
+ - "~>"
170
+ - !ruby/object:Gem::Version
171
+ version: 1.1.2
172
+ version:
173
+ - !ruby/object:Gem::Dependency
174
+ name: archive-tar-minitar
175
+ version_requirement:
176
+ version_requirements: !ruby/object:Gem::Version::Requirement
177
+ requirements:
178
+ -
179
+ - "~>"
180
+ - !ruby/object:Gem::Version
181
+ version: 0.5.1
182
+ version: