ruwiki 0.9.0
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/Readme.rubygems +86 -0
- data/Readme.tarfile +65 -0
- data/bin/ruwiki +58 -0
- data/bin/ruwiki.cgi +87 -0
- data/bin/ruwiki_convert +56 -0
- data/bin/ruwiki_service.rb +82 -0
- data/bin/ruwiki_servlet +53 -0
- data/contrib/enscript-token.rb +55 -0
- data/contrib/rublog_integrator.rb +68 -0
- data/data/Default/ProjectIndex.ruwiki +49 -0
- data/data/Ruwiki/Antispam.ruwiki +65 -0
- data/data/Ruwiki/BugTracking.ruwiki +33 -0
- data/data/Ruwiki/ChangeLog.ruwiki +102 -0
- data/data/Ruwiki/Configuring_Ruwiki.ruwiki +151 -0
- data/data/Ruwiki/Extending_Ruwiki.ruwiki +317 -0
- data/data/Ruwiki/LicenseAndAuthorInfo.ruwiki +30 -0
- data/data/Ruwiki/ProjectIndex.ruwiki +84 -0
- data/data/Ruwiki/Roadmap.ruwiki +225 -0
- data/data/Ruwiki/RuwikiTemplatingLibrary.ruwiki +156 -0
- data/data/Ruwiki/RuwikiUtilities.ruwiki +157 -0
- data/data/Ruwiki/SandBox.ruwiki +9 -0
- data/data/Ruwiki/To_Do.ruwiki +51 -0
- data/data/Ruwiki/TroubleShooting.ruwiki +33 -0
- data/data/Ruwiki/WikiFeatures.ruwiki +17 -0
- data/data/Ruwiki/WikiMarkup.ruwiki +261 -0
- data/data/Tutorial/AddingPages.ruwiki +16 -0
- data/data/Tutorial/AddingProjects.ruwiki +16 -0
- data/data/Tutorial/ProjectIndex.ruwiki +11 -0
- data/data/Tutorial/SandBox.ruwiki +9 -0
- data/data/agents.banned +60 -0
- data/data/agents.readonly +321 -0
- data/data/hostip.banned +30 -0
- data/data/hostip.readonly +28 -0
- data/lib/ruwiki.rb +622 -0
- data/lib/ruwiki/auth.rb +56 -0
- data/lib/ruwiki/auth/gforge.rb +73 -0
- data/lib/ruwiki/backend.rb +318 -0
- data/lib/ruwiki/backend/flatfiles.rb +217 -0
- data/lib/ruwiki/config.rb +244 -0
- data/lib/ruwiki/exportable.rb +192 -0
- data/lib/ruwiki/handler.rb +342 -0
- data/lib/ruwiki/lang/de.rb +339 -0
- data/lib/ruwiki/lang/en.rb +334 -0
- data/lib/ruwiki/lang/es.rb +339 -0
- data/lib/ruwiki/page.rb +262 -0
- data/lib/ruwiki/servlet.rb +38 -0
- data/lib/ruwiki/template.rb +553 -0
- data/lib/ruwiki/utils.rb +24 -0
- data/lib/ruwiki/utils/command.rb +102 -0
- data/lib/ruwiki/utils/converter.rb +297 -0
- data/lib/ruwiki/utils/manager.rb +639 -0
- data/lib/ruwiki/utils/servletrunner.rb +295 -0
- data/lib/ruwiki/wiki.rb +147 -0
- data/lib/ruwiki/wiki/tokens.rb +136 -0
- data/lib/ruwiki/wiki/tokens/00default.rb +211 -0
- data/lib/ruwiki/wiki/tokens/01wikilinks.rb +166 -0
- data/lib/ruwiki/wiki/tokens/02actions.rb +63 -0
- data/lib/ruwiki/wiki/tokens/abbreviations.rb +40 -0
- data/lib/ruwiki/wiki/tokens/calendar.rb +147 -0
- data/lib/ruwiki/wiki/tokens/headings.rb +43 -0
- data/lib/ruwiki/wiki/tokens/lists.rb +112 -0
- data/lib/ruwiki/wiki/tokens/rubylists.rb +48 -0
- data/ruwiki.conf +22 -0
- data/ruwiki.pkg +0 -0
- data/templates/default/body.tmpl +19 -0
- data/templates/default/content.tmpl +7 -0
- data/templates/default/controls.tmpl +23 -0
- data/templates/default/edit.tmpl +27 -0
- data/templates/default/error.tmpl +14 -0
- data/templates/default/footer.tmpl +23 -0
- data/templates/default/ruwiki.css +297 -0
- data/templates/default/save.tmpl +8 -0
- data/templates/sidebar/body.tmpl +19 -0
- data/templates/sidebar/content.tmpl +8 -0
- data/templates/sidebar/controls.tmpl +8 -0
- data/templates/sidebar/edit.tmpl +27 -0
- data/templates/sidebar/error.tmpl +13 -0
- data/templates/sidebar/footer.tmpl +22 -0
- data/templates/sidebar/ruwiki.css +347 -0
- data/templates/sidebar/save.tmpl +10 -0
- data/templates/simple/body.tmpl +13 -0
- data/templates/simple/content.tmpl +7 -0
- data/templates/simple/controls.tmpl +8 -0
- data/templates/simple/edit.tmpl +25 -0
- data/templates/simple/error.tmpl +10 -0
- data/templates/simple/footer.tmpl +10 -0
- data/templates/simple/ruwiki.css +192 -0
- data/templates/simple/save.tmpl +8 -0
- data/tests/harness.rb +52 -0
- data/tests/tc_backend_flatfile.rb +103 -0
- data/tests/tc_bugs.rb +74 -0
- data/tests/tc_exportable.rb +64 -0
- data/tests/tc_template.rb +145 -0
- data/tests/tc_tokens.rb +335 -0
- data/tests/testall.rb +20 -0
- metadata +182 -0
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
#--
|
|
2
|
+
# Ruwiki
|
|
3
|
+
# Copyright � 2002 - 2004, Digikata and HaloStatue
|
|
4
|
+
# Alan Chen (alan@digikata.com)
|
|
5
|
+
# Austin Ziegler (ruwiki@halostatue.ca)
|
|
6
|
+
#
|
|
7
|
+
# Licensed under the same terms as Ruby.
|
|
8
|
+
#
|
|
9
|
+
# $Id: calendar.rb,v 1.5 2004/11/26 12:18:47 austin Exp $
|
|
10
|
+
#++
|
|
11
|
+
class Ruwiki
|
|
12
|
+
class Wiki
|
|
13
|
+
# Produces a mini-calendar with dates as WikiWords.
|
|
14
|
+
class Calendar < Ruwiki::Wiki::Token
|
|
15
|
+
def self.regexp
|
|
16
|
+
%r{^\\?%calendar\((?:(today)|(\d+),\s*(\d+))(?:,\s*(#{RE_PROJECT_WORD}))?\)}
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def self.make(year, month)
|
|
20
|
+
result = []
|
|
21
|
+
tt = Time.local(year, month, 1)
|
|
22
|
+
rr = Array.new(tt.wday, nil)
|
|
23
|
+
rr << 1
|
|
24
|
+
|
|
25
|
+
2.upto(31) do |ii|
|
|
26
|
+
break if Time.local(year, month, ii).month != month
|
|
27
|
+
rr << ii
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
rr += Array.new((- rr.size) % 7, nil)
|
|
31
|
+
|
|
32
|
+
0.step(rr.size - 1, 7) do |ii|
|
|
33
|
+
result << rr[ii, 7]
|
|
34
|
+
end
|
|
35
|
+
result
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def make_month_link(project, year, month, state = nil)
|
|
39
|
+
ym = "%04d%02d" % [year, month]
|
|
40
|
+
case state
|
|
41
|
+
when :prev
|
|
42
|
+
title = "« #{year}.#{month}"
|
|
43
|
+
when :next
|
|
44
|
+
title = "#{year}.#{month} »"
|
|
45
|
+
else
|
|
46
|
+
title = "#{project}::#{year}.#{month}"
|
|
47
|
+
end
|
|
48
|
+
url = "#{@script}/#{project}/#{ym}"
|
|
49
|
+
|
|
50
|
+
if @backend.page_exists?(ym, project)
|
|
51
|
+
VIEW_LINK % [url, title]
|
|
52
|
+
else
|
|
53
|
+
EDIT_LINK % [title, "#{url}/_edit"]
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def replace
|
|
58
|
+
today = @match.captures[0]
|
|
59
|
+
project = @match.captures[3] || @project
|
|
60
|
+
now = Time.now
|
|
61
|
+
|
|
62
|
+
if today.nil?
|
|
63
|
+
year = @match.captures[1].to_i
|
|
64
|
+
month = @match.captures[2].to_i
|
|
65
|
+
else
|
|
66
|
+
year = now.year
|
|
67
|
+
month = now.month
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
if (year == now.year) and (month == now.month)
|
|
71
|
+
show_today = now.day
|
|
72
|
+
else
|
|
73
|
+
show_today = nil
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
result = <<-"CALENDAR_HEAD"
|
|
77
|
+
</p>
|
|
78
|
+
<div class="rwtk_Calendar">
|
|
79
|
+
<table class="rwtk_Calendar" summary="calendar for ::#{project}: #{year}.#{month}">
|
|
80
|
+
<thead>
|
|
81
|
+
CALENDAR_HEAD
|
|
82
|
+
|
|
83
|
+
result << %Q{ <tr>\n<th colspan="7" class="rwtk_Calendar_current_month">}
|
|
84
|
+
result << make_month_link(project, year, month)
|
|
85
|
+
result << %Q{</th>\n </tr>\n <tr>\n<th colspan="2" class="rwtk_Calendar_prev_month">}
|
|
86
|
+
result << make_month_link(project, year, month - 1, :prev)
|
|
87
|
+
result << %Q{</th>\n<th colspan="3"></th>\n<th colspan="2" class="rwtk_Calendar_next_month">}
|
|
88
|
+
result << make_month_link(project, year, month + 1, :next)
|
|
89
|
+
result << "</th>\n"
|
|
90
|
+
|
|
91
|
+
result << <<-"CALENDAR_HEAD2"
|
|
92
|
+
</tr>
|
|
93
|
+
<tr>
|
|
94
|
+
<th class="rwtk_Calendar_weekend">Su</th>
|
|
95
|
+
<th class="rwtk_Calendar_weekday">Mo</th>
|
|
96
|
+
<th class="rwtk_Calendar_weekday">Tu</th>
|
|
97
|
+
<th class="rwtk_Calendar_weekday">We</th>
|
|
98
|
+
<th class="rwtk_Calendar_weekday">Th</th>
|
|
99
|
+
<th class="rwtk_Calendar_weekday">Fr</th>
|
|
100
|
+
<th class="rwtk_Calendar_weekend">Sa</th>
|
|
101
|
+
</tr>
|
|
102
|
+
</thead>
|
|
103
|
+
<tbody>
|
|
104
|
+
CALENDAR_HEAD2
|
|
105
|
+
|
|
106
|
+
Calendar.make(year, month).each do |week|
|
|
107
|
+
result << " <tr>\n"
|
|
108
|
+
week.each do |day|
|
|
109
|
+
if day.nil?
|
|
110
|
+
result << %Q{ <td class="rwtk_Calendar_day"></td>\n}
|
|
111
|
+
else
|
|
112
|
+
date = "%04d%02d%02d" % [year, month, day]
|
|
113
|
+
# Add the ability to create pages based on date here.
|
|
114
|
+
if show_today == day
|
|
115
|
+
result << %Q{ <td class="rwtk_Calendar_today">}
|
|
116
|
+
else
|
|
117
|
+
result << %Q{ <td class="rwtk_Calendar_day">}
|
|
118
|
+
end
|
|
119
|
+
if @backend.page_exists?(date, project)
|
|
120
|
+
result << VIEW_LINK % ["#{@script}/#{project}/#{date}", day]
|
|
121
|
+
else
|
|
122
|
+
result << EDIT_LINK % [day, "#{@script}/#{project}/#{date}/_edit"]
|
|
123
|
+
end
|
|
124
|
+
result << %Q{</td>\n}
|
|
125
|
+
end
|
|
126
|
+
end
|
|
127
|
+
result << " </tr>\n"
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
result << %Q(</tbody>\n</table>\n</div>\n<p class="rwtk_Paragraph">)
|
|
131
|
+
result
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
def restore
|
|
135
|
+
@match[0][1 .. -1]
|
|
136
|
+
end
|
|
137
|
+
|
|
138
|
+
def self.post_replace(content)
|
|
139
|
+
content.gsub!(%r{<p[^>]*>(\s*</?div(?: [^>]+)?>\s*)</p>}, '\1')
|
|
140
|
+
content.gsub!(%r{<p[^>]*>(\s*</?table(?: [^>]+)?>\s*)</p>}, '\1')
|
|
141
|
+
content.gsub!(%r{<p[^>]*>(\s*</?t(?:head|body|r)(?: [^>]+)?>\s*)</p>}, '\1')
|
|
142
|
+
content.gsub!(%r{<p[^>]*>(\s*<t[hd].+?</t[hd]>\s*)</p>}, '\1')
|
|
143
|
+
content
|
|
144
|
+
end
|
|
145
|
+
end
|
|
146
|
+
end
|
|
147
|
+
end
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
#--
|
|
2
|
+
# Ruwiki
|
|
3
|
+
# Copyright � 2002 - 2004, Digikata and HaloStatue
|
|
4
|
+
# Alan Chen (alan@digikata.com)
|
|
5
|
+
# Austin Ziegler (ruwiki@halostatue.ca)
|
|
6
|
+
#
|
|
7
|
+
# Licensed under the same terms as Ruby.
|
|
8
|
+
#
|
|
9
|
+
# $Id: headings.rb,v 1.7 2004/08/11 11:20:01 austin Exp $
|
|
10
|
+
#++
|
|
11
|
+
class Ruwiki
|
|
12
|
+
class Wiki
|
|
13
|
+
# Converts headings.
|
|
14
|
+
class Headings < Ruwiki::Wiki::Token
|
|
15
|
+
# def self.rank
|
|
16
|
+
# 5
|
|
17
|
+
# end
|
|
18
|
+
|
|
19
|
+
def self.regexp
|
|
20
|
+
%r{^\\?(=+)\s+(.*)}
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def restore
|
|
24
|
+
@match[0][1 .. -1]
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def replace
|
|
28
|
+
level = @match.captures[0].count("=")
|
|
29
|
+
content = @match.captures[1]
|
|
30
|
+
level = 6 if level > 6
|
|
31
|
+
%Q(<h#{level} class="rwtk_Headings">#{content}</h#{level}>)
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def self.post_replace(content)
|
|
35
|
+
content.gsub!(%r{(</h\d>)\n}) { |m| %Q(#{$1}\n<p class="rwtk_Paragraph">) }
|
|
36
|
+
content.gsub!(%r{(</h\d>)</p>\n<p>}) { |m| %Q(#{$1}\n<p class="rwtk_Paragraph">) }
|
|
37
|
+
content.gsub!(%r{<p[^>]*>(<h\d[^>]*>)}, '\1')
|
|
38
|
+
content.gsub!(%r{(</h\d>)</p>}, '\1')
|
|
39
|
+
content
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
#--
|
|
2
|
+
# Ruwiki
|
|
3
|
+
# Copyright � 2002 - 2004, Digikata and HaloStatue
|
|
4
|
+
# Alan Chen (alan@digikata.com)
|
|
5
|
+
# Austin Ziegler (ruwiki@halostatue.ca)
|
|
6
|
+
#
|
|
7
|
+
# Licensed under the same terms as Ruby.
|
|
8
|
+
#
|
|
9
|
+
# $Id: lists.rb,v 1.9 2004/08/13 21:33:33 austin Exp $
|
|
10
|
+
#++
|
|
11
|
+
class Ruwiki::Wiki
|
|
12
|
+
# Produces Lists
|
|
13
|
+
class Lists < Ruwiki::Wiki::Token
|
|
14
|
+
def self.regexp
|
|
15
|
+
%r{^\\?([*#]+)\s+(.*)$}
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def replace
|
|
19
|
+
indent = @match.captures[0].scan(/./).map { |ee| ee == "*" ? 'ul' : 'ol' }
|
|
20
|
+
content = @match.captures[1]
|
|
21
|
+
|
|
22
|
+
pre = ''
|
|
23
|
+
post = ''
|
|
24
|
+
indent.each { |elem| pre << %Q(<#{elem} class="rwtk_Lists">) }
|
|
25
|
+
indent.reverse_each { |elem| post << %Q(</#{elem}>) }
|
|
26
|
+
%Q(#{pre}<li class="rwtk_Lists">#{content}</li>#{post})
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def restore
|
|
30
|
+
@match[0][1 .. -1]
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
RE_NESTED_LISTS = %r{</[uo]l>\s*<[uo]l[^>]*>}
|
|
34
|
+
|
|
35
|
+
def self.post_replace(content)
|
|
36
|
+
content.gsub!(%r{<p[^>]*><([uo]l[^>]*)>}, '<\1>')
|
|
37
|
+
content.gsub!(%r{</([uo]l)></p>}, '</\1>')
|
|
38
|
+
content.gsub!(RE_NESTED_LISTS, '') while content =~ RE_NESTED_LISTS
|
|
39
|
+
content
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
# Produces block quotes.
|
|
44
|
+
class Blockquotes < Ruwiki::Wiki::Token
|
|
45
|
+
def self.regexp
|
|
46
|
+
%r{^\\?((:+)|(>+))(\s+.*)$}
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def replace
|
|
50
|
+
content = @match.captures[3]
|
|
51
|
+
|
|
52
|
+
if @match.captures[2].nil?
|
|
53
|
+
char = ':'
|
|
54
|
+
cite = ''
|
|
55
|
+
else
|
|
56
|
+
char = '>'
|
|
57
|
+
cite = ' type="cite"'
|
|
58
|
+
end
|
|
59
|
+
indent = @match.captures[0].count(char)
|
|
60
|
+
|
|
61
|
+
pre = ''
|
|
62
|
+
post = ''
|
|
63
|
+
indent.times do
|
|
64
|
+
pre << %Q(<blockquote#{cite} class="rwtk_Blockquotes">)
|
|
65
|
+
post << %Q(</blockquote>)
|
|
66
|
+
end
|
|
67
|
+
"#{pre}#{content}#{post}"
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
def restore
|
|
71
|
+
@match[0][1 .. -1].gsub(/^>/, '>')
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
def self.post_replace(content)
|
|
75
|
+
content.gsub!(%r{</blockquote>(\n|<br ?/?>)?<blockquote[^>]*>}, '')
|
|
76
|
+
content.gsub!(%r{(</?blockquote[^>]*>\n?)\s*}, '\1')
|
|
77
|
+
content.gsub!(%r{</blockquote>(<blockquote[^>]*>)+}, '\1')
|
|
78
|
+
content
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
# Produces definition lists. Does not completely work correctly.
|
|
83
|
+
class Definitions < Ruwiki::Wiki::Token
|
|
84
|
+
def self.regexp
|
|
85
|
+
%r{^\\?(;+)\s+(.+?)\s+:\s+(.*)}
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
def replace
|
|
89
|
+
definition = @match.captures[2]
|
|
90
|
+
term = @match.captures[1]
|
|
91
|
+
indent = @match.captures[0].count(';')
|
|
92
|
+
|
|
93
|
+
pre = ''
|
|
94
|
+
post = ''
|
|
95
|
+
indent.times do
|
|
96
|
+
pre << %Q(<dl class="rwtk_Definitions">)
|
|
97
|
+
post << %Q(</dl>)
|
|
98
|
+
end
|
|
99
|
+
%Q(#{pre}<dt class="rwtk_Definitions">#{term}</dt><dd class="rwtk_Definitions">#{definition}</dd>#{post})
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
def restore
|
|
103
|
+
@match[0][1 .. -1]
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
def self.post_replace(content)
|
|
107
|
+
content.gsub!(%r{</dl>(\n|<br ?/?>)?<dl[^>]*>}, '')
|
|
108
|
+
content.gsub!(%r{</dl>(<dl[^>]*>)+}, '\1')
|
|
109
|
+
content
|
|
110
|
+
end
|
|
111
|
+
end
|
|
112
|
+
end
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
#--
|
|
2
|
+
# Ruwiki
|
|
3
|
+
# Copyright � 2002 - 2004, Digikata and HaloStatue
|
|
4
|
+
# Alan Chen (alan@digikata.com)
|
|
5
|
+
# Austin Ziegler (ruwiki@halostatue.ca)
|
|
6
|
+
#
|
|
7
|
+
# Licensed under the same terms as Ruby.
|
|
8
|
+
#
|
|
9
|
+
# $Id: rubylists.rb,v 1.6 2004/09/26 16:30:45 austin Exp $
|
|
10
|
+
#++
|
|
11
|
+
class Ruwiki
|
|
12
|
+
class Wiki
|
|
13
|
+
# Convert ruby-talk mailing list references (e.g., [ruby-talk:12345])
|
|
14
|
+
# into named links.
|
|
15
|
+
class RubyTalkLinks < Ruwiki::Wiki::Token
|
|
16
|
+
def self.rank
|
|
17
|
+
1
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def self.regexp
|
|
21
|
+
%r{\[ruby-talk:(\d+)\]}
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def replace
|
|
25
|
+
lm = @match.captures[0]
|
|
26
|
+
# %Q(<a class="rwtk_RubyTalkLinks" href="http://www.ruby-talk.org/#{lm}">#{@match[0]}</a>)
|
|
27
|
+
%Q(<a class="rwtk_RubyTalkLinks" href="http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/#{lm}">#{@match[0]}</a>)
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
# Convert ruby-core/ext/dev/list/math mailing list references (e.g.,
|
|
32
|
+
# [ruby-core:12345]) into named links.
|
|
33
|
+
class OtherRubyLinks < Ruwiki::Wiki::Token
|
|
34
|
+
def self.rank
|
|
35
|
+
1
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def self.regexp
|
|
39
|
+
%r{\[ruby-(list|doc|core|dev|ext|math):(\d+)\]}
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def replace
|
|
43
|
+
ln, lm = @match.captures[0..1]
|
|
44
|
+
%Q(<a class="rwtk_OtherRubyLinks" href="http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-#{ln}/#{lm}">#{@match[0]}</a>)
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
data/ruwiki.conf
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
ruwiki-config!auth-options:
|
|
2
|
+
ruwiki-config!css: ruwiki.css
|
|
3
|
+
ruwiki-config!date-format: %Y.%m.%d
|
|
4
|
+
ruwiki-config!datetime-format: %Y.%m.%d %H:%M:%S
|
|
5
|
+
ruwiki-config!debug: true
|
|
6
|
+
ruwiki-config!default-page: ProjectIndex
|
|
7
|
+
ruwiki-config!default-project: Default
|
|
8
|
+
ruwiki-config!language: en
|
|
9
|
+
ruwiki-config!storage-options: flatfiles!data-path: ./data
|
|
10
|
+
flatfiles!extension: ruwiki
|
|
11
|
+
ruwiki-config!storage-type: flatfiles
|
|
12
|
+
ruwiki-config!template-path: ./templates/
|
|
13
|
+
ruwiki-config!template-set: default
|
|
14
|
+
ruwiki-config!time-format: %H:%M:%S
|
|
15
|
+
ruwiki-config!title: Ruwiki
|
|
16
|
+
ruwiki-config!webmaster: webmaster@domain.tld
|
|
17
|
+
webrick-config!addresses:
|
|
18
|
+
webrick-config!do-log: true
|
|
19
|
+
webrick-config!log-dest: <STDERR>
|
|
20
|
+
webrick-config!mount: /
|
|
21
|
+
webrick-config!port: 8808
|
|
22
|
+
webrick-config!threads: 1
|
data/ruwiki.pkg
ADDED
|
Binary file
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
|
2
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
|
3
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
|
4
|
+
<head>
|
|
5
|
+
<title>%wiki_title%</title>
|
|
6
|
+
<meta http-equiv="Content-Type" content="text/html; charset=#charset_encoding#" />
|
|
7
|
+
[!indexable|<meta name="robots" content="noindex,nofollow,noarchive" />?]
|
|
8
|
+
%css_link%
|
|
9
|
+
<!--[if IE 6]>
|
|
10
|
+
<style type="text/css" media="screen,print">
|
|
11
|
+
html { overflow: hidden; }
|
|
12
|
+
body { height: 100%; overflow: auto; }
|
|
13
|
+
</style>
|
|
14
|
+
<![endif]-->
|
|
15
|
+
</head>
|
|
16
|
+
<body>
|
|
17
|
+
!INCLUDE!
|
|
18
|
+
</body>
|
|
19
|
+
</html>
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
<div id="rw_header">
|
|
2
|
+
<form class="rw_navbar" action="_search">
|
|
3
|
+
<div class="rw_navbar_tab">%home_link%</div>
|
|
4
|
+
<div class="rw_navbar_tab">#label_project#<a href="%cgi_url%/%page_project%/"><strong>%page_project%</strong></a></div>
|
|
5
|
+
<div class="rw_navbar_tab">%label_topic_or_search% %page_topic%</div>
|
|
6
|
+
[?editable|<div class="rw_navbar_tab"><a href="%cgi_url%/%page_project%/%page_raw_topic%/_edit">#label_edit#</a></div>?]
|
|
7
|
+
<!-- Right-hand tabs must go in reverse order! -->
|
|
8
|
+
<div class="rw_navbar_righttab">
|
|
9
|
+
<input class="rw_search_box" type="text" name="q" size="10" />
|
|
10
|
+
<button class="rw_search_button" type="submit">#label_search_project#</button>
|
|
11
|
+
<input class="rw_search_all_check" type="checkbox" name="a">#label_search_all#</input>
|
|
12
|
+
</div>
|
|
13
|
+
<div class="rw_navbar_righttab">
|
|
14
|
+
<a href="%cgi_url%/%page_project%/RecentChanges">#label_recent_changes#</a>
|
|
15
|
+
</div>
|
|
16
|
+
<div class="rw_navbar_righttab">
|
|
17
|
+
%page_project%::<a href="%cgi_url%/%page_project%/_topics">#label_topics#</a>
|
|
18
|
+
</div>
|
|
19
|
+
<div class="rw_navbar_righttab">
|
|
20
|
+
<a href="%cgi_url%/_projects">#label_projects#</a>
|
|
21
|
+
</div>
|
|
22
|
+
</form>
|
|
23
|
+
</div>
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
<div id="rw_header">
|
|
2
|
+
<div class="rw_navbar">
|
|
3
|
+
<div class="rw_navbar_tab">%home_link%</div>
|
|
4
|
+
<div class="rw_navbar_tab">#label_topic#<b>%page_topic%</b></div>
|
|
5
|
+
<div class="rw_navbar_tab">#label_project#<b>%page_project%</b></div>
|
|
6
|
+
<div class="rw_navbar_righttab" id="rw_editing_tab"><strong><em>#label_editing#</em> #%page_version%</strong></div>
|
|
7
|
+
</div>
|
|
8
|
+
</div>
|
|
9
|
+
|
|
10
|
+
<div id="rw_content">
|
|
11
|
+
[?message|<div class="rw_message">%message%</div>?]
|
|
12
|
+
<div class="rw_content">
|
|
13
|
+
<form class="rw_edit_form" action="%cgi_url%/%page_project%/%page_raw_topic%" method="post">
|
|
14
|
+
<span class="rw_accelerator">(#label_text_accelerator#)</span> #label_text#<br /><textarea accesskey="#label_text_accelerator#" class="rw_edit_content" rows="15" name="newpage">%page_content%</textarea>
|
|
15
|
+
<div class="rw_edit_comment"><span class="rw_accelerator">(#label_comment_accelerator#)</span> #label_edit_comment#<input accesskey="#label_comment_accelerator#" type="text" name="edcomment" value="%edit_comment%" /></div>
|
|
16
|
+
<input type="hidden" name="topic" value="%page_raw_topic%" />
|
|
17
|
+
<input type="hidden" name="project" value="%page_project%" />
|
|
18
|
+
<input type="hidden" name="version" value="%page_version%" /><br />
|
|
19
|
+
<button class="rw_edit_form_button" accesskey="#label_save_accelerator#" type="submit" name="save"><span class="rw_accelerator">(#label_save_accelerator#)</span> #label_save#</button>
|
|
20
|
+
<button class="rw_edit_form_button" accesskey="#label_cancel_accelerator#" type="submit" name="cancel"><span class="rw_accelerator">(#label_cancel_accelerator#)</span> #label_cancel#</button>
|
|
21
|
+
<button class="rw_edit_form_button" accesskey="#label_preview_accelerator#" type="submit" name="preview"><span class="rw_accelerator">(#label_preview_accelerator#)</span> #label_preview#</button>
|
|
22
|
+
</form>
|
|
23
|
+
<h2 style="border-bottom: 1px solid black">#label_original_text#</h2>
|
|
24
|
+
<div class="rw_edit_raw"><h2 class="rw_edit_title">#label_raw#</h2><pre>%pre_page_content%</pre></div>
|
|
25
|
+
<div class="rw_edit_format"><h2 class="rw_edit_title">#label_formatted#</h2><div>%unedited_page_content%</div></div>
|
|
26
|
+
</div>
|
|
27
|
+
</div>
|