camping 1.5.180 → 2.0.rc0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (64) hide show
  1. data/CHANGELOG +35 -0
  2. data/README +43 -68
  3. data/Rakefile +155 -86
  4. data/bin/camping +64 -246
  5. data/book/01_introduction +19 -0
  6. data/book/02_getting_started +443 -0
  7. data/book/51_upgrading +93 -0
  8. data/doc/api.html +1953 -0
  9. data/doc/book.html +73 -0
  10. data/doc/book/01_introduction.html +57 -0
  11. data/doc/book/02_getting_started.html +573 -0
  12. data/doc/book/51_upgrading.html +146 -0
  13. data/doc/created.rid +1 -0
  14. data/{extras → doc/images}/Camping.gif +0 -0
  15. data/doc/images/loadingAnimation.gif +0 -0
  16. data/{extras → doc/images}/permalink.gif +0 -0
  17. data/doc/index.html +148 -0
  18. data/doc/js/camping.js +79 -0
  19. data/doc/js/jquery.js +32 -0
  20. data/doc/rdoc.css +117 -0
  21. data/examples/blog.rb +280 -181
  22. data/extras/images/badge.gif +0 -0
  23. data/extras/images/boys-life.png +0 -0
  24. data/extras/images/deerputer.png +0 -0
  25. data/extras/images/diagram.png +0 -0
  26. data/extras/images/hill.png +0 -0
  27. data/extras/images/i-wish.png +0 -0
  28. data/extras/images/latl.png +0 -0
  29. data/extras/images/little-wheels.png +0 -0
  30. data/extras/images/square-badge.png +0 -0
  31. data/extras/images/uniform.png +0 -0
  32. data/extras/images/whale-bounce.png +0 -0
  33. data/extras/rdoc/generator/singledarkfish.rb +205 -0
  34. data/extras/rdoc/generator/template/flipbook/images/Camping.gif +0 -0
  35. data/extras/rdoc/generator/template/flipbook/images/loadingAnimation.gif +0 -0
  36. data/extras/rdoc/generator/template/flipbook/images/permalink.gif +0 -0
  37. data/extras/rdoc/generator/template/flipbook/js/camping.js +79 -0
  38. data/extras/rdoc/generator/template/flipbook/js/jquery.js +32 -0
  39. data/extras/rdoc/generator/template/flipbook/page.rhtml +30 -0
  40. data/extras/rdoc/generator/template/flipbook/rdoc.css +117 -0
  41. data/extras/rdoc/generator/template/flipbook/readme.rhtml +31 -0
  42. data/extras/rdoc/generator/template/flipbook/reference.rhtml +71 -0
  43. data/extras/rdoc/generator/template/flipbook/toc.rhtml +43 -0
  44. data/lib/camping-unabridged.rb +420 -481
  45. data/lib/camping.rb +40 -55
  46. data/lib/camping/{db.rb → ar.rb} +5 -8
  47. data/lib/camping/mab.rb +26 -0
  48. data/lib/camping/reloader.rb +175 -147
  49. data/lib/camping/server.rb +178 -0
  50. data/lib/camping/session.rb +34 -121
  51. data/test/apps/env_debug.rb +65 -0
  52. data/test/apps/forms.rb +95 -0
  53. data/test/apps/forward_to_other_controller.rb +60 -0
  54. data/test/apps/migrations.rb +97 -0
  55. data/test/apps/misc.rb +86 -0
  56. data/test/apps/sessions.rb +38 -0
  57. metadata +120 -80
  58. data/doc/camping.1.gz +0 -0
  59. data/examples/campsh.rb +0 -630
  60. data/examples/tepee.rb +0 -242
  61. data/extras/flipbook_rdoc.rb +0 -491
  62. data/lib/camping/fastcgi.rb +0 -244
  63. data/lib/camping/webrick.rb +0 -65
  64. data/test/test_xhtml_trans.rb +0 -55
data/examples/tepee.rb DELETED
@@ -1,242 +0,0 @@
1
- #!/usr/bin/ruby
2
- $:.unshift File.dirname(__FILE__) + "/../../lib"
3
- %w(rubygems redcloth camping acts_as_versioned).each { |lib| require lib }
4
-
5
- Camping.goes :Tepee
6
-
7
- module Tepee::Models
8
-
9
- class Page < Base
10
- PAGE_LINK = /\[\[([^\]|]*)[|]?([^\]]*)\]\]/
11
- validates_uniqueness_of :title
12
- before_save { |r| r.title = r.title.underscore }
13
- acts_as_versioned
14
- end
15
-
16
- class CreateTepee < V 1.0
17
- def self.up
18
- create_table :tepee_pages, :force => true do |t|
19
- t.column :title, :string, :limit => 255
20
- t.column :body, :text
21
- end
22
- Page.create_versioned_table
23
- Page.reset_column_information
24
- end
25
- def self.down
26
- drop_table :tepee_pages
27
- Page.drop_versioned_table
28
- end
29
- end
30
-
31
- end
32
-
33
- module Tepee::Controllers
34
- class Index < R '/'
35
- def get
36
- redirect Show, 'home'
37
- end
38
- end
39
-
40
- class Show < R '/(\w+)', '/(\w+)/(\d+)'
41
- def get page_name, version = nil
42
- redirect(Edit, page_name, 1) and return unless @page = Page.find_by_title(page_name)
43
- @version = (version.nil? or version == @page.version.to_s) ? @page : @page.versions.find_by_version(version)
44
- render :show
45
- end
46
- end
47
-
48
- class Edit < R '/(\w+)/edit', '/(\w+)/(\d+)/edit'
49
- def get page_name, version = nil
50
- @page = Page.find_or_create_by_title(page_name)
51
- @page = @page.versions.find_by_version(version) unless version.nil? or version == @page.version.to_s
52
- render :edit
53
- end
54
-
55
- def post page_name
56
- Page.find_or_create_by_title(page_name).update_attributes :body => input.post_body and redirect Show, page_name
57
- end
58
- end
59
-
60
- class Versions < R '/(\w+)/versions'
61
- def get page_name
62
- @page = Page.find_or_create_by_title(page_name)
63
- @versions = @page.versions
64
- render :versions
65
- end
66
- end
67
-
68
- class List < R '/all/list'
69
- def get
70
- @pages = Page.find :all, :order => 'title'
71
- render :list
72
- end
73
- end
74
-
75
- class Stylesheet < R '/css/tepee.css'
76
- def get
77
- @headers['Content-Type'] = 'text/css'
78
- File.read(__FILE__).gsub(/.*__END__/m, '')
79
- end
80
- end
81
- end
82
-
83
- module Tepee::Views
84
- def layout
85
- html do
86
- head do
87
- title 'test'
88
- link :href=>R(Stylesheet), :rel=>'stylesheet', :type=>'text/css'
89
- end
90
- style <<-END, :type => 'text/css'
91
- body {
92
- font-family: verdana, arial, sans-serif;
93
- }
94
- h1, h2, h3, h4, h5 {
95
- font-weight: normal;
96
- }
97
- p.actions a {
98
- margin-right: 6px;
99
- }
100
- END
101
- body do
102
- p do
103
- small do
104
- span "welcome to " ; a 'tepee', :href => "http://code.whytheluckystiff.net/svn/camping/trunk/examples/tepee.rb"
105
- span '. go ' ; a 'home', :href => R(Show, 'home')
106
- span '. list all ' ; a 'pages', :href => R(List)
107
- end
108
- end
109
- div.content do
110
- self << yield
111
- end
112
- end
113
- end
114
- end
115
-
116
- def show
117
- h1 @page.title
118
- div { _markup @version.body }
119
- p.actions do
120
- _button 'edit', :href => R(Edit, @version.title, @version.version)
121
- _button 'back', :href => R(Show, @version.title, @version.version-1) unless @version.version == 1
122
- _button 'next', :href => R(Show, @version.title, @version.version+1) unless @version.version == @page.version
123
- _button 'current', :href => R(Show, @version.title) unless @version.version == @page.version
124
- _button 'versions', :href => R(Versions, @page.title)
125
- end
126
- end
127
-
128
- def edit
129
- h1 @page.title
130
- form :method => 'post', :action => R(Edit, @page.title) do
131
- p do
132
- textarea @page.body, :name => 'post_body', :rows => 50, :cols => 100
133
- end
134
- input :type => 'submit', :value=>'change'
135
- end
136
- _button 'cancel', :href => R(Show, @page.title, @page.version)
137
- a 'syntax', :href => 'http://hobix.com/textile/', :target=>'_blank'
138
- end
139
-
140
- def list
141
- h1 'all pages'
142
- ul { @pages.each { |p| li { a p.title, :href => R(Show, p.title) } } }
143
- end
144
-
145
- def versions
146
- h1 @page.title
147
- ul do
148
- @versions.each do |page|
149
- li do
150
- span page.version
151
- _button 'show', :href => R(Show, page.title, page.version)
152
- _button 'edit', :href => R(Edit, page.title, page.version)
153
- end
154
- end
155
- end
156
- end
157
-
158
- def _button(text, options={})
159
- form :method=>:get, :action=>options[:href] do
160
- input :type=>'submit', :name=>'submit', :value=>text
161
- end
162
- end
163
-
164
- def _markup body
165
- return '' if body.blank?
166
- body.gsub!(Tepee::Models::Page::PAGE_LINK) do
167
- page = title = $1
168
- title = $2 unless $2.empty?
169
- page = page.gsub /\W/, '_'
170
- if Tepee::Models::Page.find(:all, :select => 'title').collect { |p| p.title }.include?(page)
171
- %Q{<a href="#{self/R(Show, page)}">#{title}</a>}
172
- else
173
- %Q{<span>#{title}<a href="#{self/R(Edit, page, 1)}">?</a></span>}
174
- end
175
- end
176
- RedCloth.new(body, [ :hard_breaks ]).to_html
177
- end
178
- end
179
-
180
- def Tepee.create
181
- Tepee::Models.create_schema :assume => (Tepee::Models::Page.table_exists? ? 1.0 : 0.0)
182
- end
183
- __END__
184
- /** focus **/
185
- /*
186
- a:hover:active {
187
- color: #10bae0;
188
- }
189
-
190
- a:not(:hover):active {
191
- color: #0000ff;
192
- }
193
-
194
- *:focus {
195
- -moz-outline: 2px solid #10bae0 !important;
196
- -moz-outline-offset: 1px !important;
197
- -moz-outline-radius: 3px !important;
198
- }
199
-
200
- button:focus,
201
- input[type="reset"]:focus,
202
- input[type="button"]:focus,
203
- input[type="submit"]:focus,
204
- input[type="file"] > input[type="button"]:focus {
205
- -moz-outline-radius: 5px !important;
206
- }
207
-
208
- button:focus::-moz-focus-inner {
209
- border-color: transparent !important;
210
- }
211
-
212
- button::-moz-focus-inner,
213
- input[type="reset"]::-moz-focus-inner,
214
- input[type="button"]::-moz-focus-inner,
215
- input[type="submit"]::-moz-focus-inner,
216
- input[type="file"] > input[type="button"]::-moz-focus-inner {
217
- border: 1px dotted transparent !important;
218
- }
219
- textarea:focus, button:focus, select:focus, input:focus {
220
- -moz-outline-offset: -1px !important;
221
- }
222
- input[type="radio"]:focus {
223
- -moz-outline-radius: 12px;
224
- -moz-outline-offset: 0px !important;
225
- }
226
- a:focus {
227
- -moz-outline-offset: 0px !important;
228
- }
229
- */
230
- form { display: inline; }
231
-
232
- /** Gradient **/
233
- small, pre, textarea, textfield, button, input, select {
234
- color: #4B4B4C !important;
235
- background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAIAAAAeCAMAAAAxfD/2AAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAtUExURfT09PLy8vHx8fv7+/j4+PX19fn5+fr6+vf39/z8/Pb29vPz8/39/f7+/v///0c8Y4oAAAA5SURBVHjaXMZJDgAgCMDAuouA/3+uHPRiMmlKzmhCFRorLOakVnpnDEpBBDHM8ODs/bz372+PAAMAXIQCfD6uIDsAAAAASUVORK5CYII=) !important;
236
- background-color: #FFF !important;
237
- background-repeat: repeat-x !important;
238
- border: 1px solid #CCC !important;
239
- }
240
-
241
- button, input { margin: 3px; }
242
-
@@ -1,491 +0,0 @@
1
- CAMPING_EXTRAS_DIR = File.expand_path(File.dirname(__FILE__))
2
-
3
- module Generators
4
- class HTMLGenerator
5
- def generate_html
6
- @files_and_classes = {
7
- 'allfiles' => gen_into_index(@files),
8
- 'allclasses' => gen_into_index(@classes),
9
- "initial_page" => main_url,
10
- 'realtitle' => CGI.escapeHTML(@options.title),
11
- 'charset' => @options.charset
12
- }
13
-
14
- # the individual descriptions for files and classes
15
- gen_into(@files)
16
- gen_into(@classes)
17
- gen_main_index
18
-
19
- # this method is defined in the template file
20
- write_extra_pages if defined? write_extra_pages
21
- end
22
-
23
- def gen_into(list)
24
- hsh = @files_and_classes.dup
25
- list.each do |item|
26
- if item.document_self
27
- op_file = item.path
28
- hsh['root'] = item.path.split("/").map { ".." }[1..-1].join("/")
29
- item.instance_variable_set("@values", hsh)
30
- File.makedirs(File.dirname(op_file))
31
- File.open(op_file, "w") { |file| item.write_on(file) }
32
- end
33
- end
34
- end
35
-
36
- def gen_into_index(list)
37
- res = []
38
- list.each do |item|
39
- hsh = item.value_hash
40
- hsh['href'] = item.path
41
- hsh['name'] = item.index_name
42
- res << hsh
43
- end
44
- res
45
- end
46
-
47
- def gen_main_index
48
- template = TemplatePage.new(RDoc::Page::INDEX)
49
- File.open("index.html", "w") do |f|
50
- values = @files_and_classes.dup
51
- if @options.inline_source
52
- values['inline_source'] = true
53
- end
54
- template.write_html_on(f, values)
55
- end
56
- ['Camping.gif', 'permalink.gif'].each do |img|
57
- ipath = File.join(CAMPING_EXTRAS_DIR, img)
58
- File.copy(ipath, img)
59
- end
60
- end
61
- end
62
- end
63
-
64
-
65
- module RDoc
66
- module Page
67
- ######################################################################
68
- #
69
- # The following is used for the -1 option
70
- #
71
-
72
- FONTS = "verdana,arial,'Bitstream Vera Sans',helvetica,sans-serif"
73
-
74
- STYLE = %{
75
- body, th, td {
76
- font: normal 14px verdana,arial,'Bitstream Vera Sans',helvetica,sans-serif;
77
- line-height: 160%;
78
- padding: 0; margin: 0;
79
- margin-bottom: 30px;
80
- /* background-color: #402; */
81
- background-color: #694;
82
- }
83
- h1, h2, h3, h4 {
84
- font-family: Utopia, Georgia, serif;
85
- font-weight: bold;
86
- letter-spacing: -0.018em;
87
- }
88
- h1 { font-size: 24px; margin: .15em 1em 0 0 }
89
- h2 { font-size: 24px }
90
- h3 { font-size: 19px }
91
- h4 { font-size: 17px; font-weight: normal; }
92
- h4.ruled { border-bottom: solid 1px #CC9; }
93
- h2.ruled { padding-top: 35px; border-top: solid 1px #AA5; }
94
-
95
- /* Link styles */
96
- :link, :visited {
97
- color: #00b;
98
- }
99
- :link:hover, :visited:hover {
100
- background-color: #eee;
101
- color: #B22;
102
- }
103
- #fullpage {
104
- width: 720px;
105
- margin: 0 auto;
106
- }
107
- .page_shade, .page {
108
- padding: 0px 5px 5px 0px;
109
- background-color: #fcfcf9;
110
- border: solid 1px #983;
111
- }
112
- .page {
113
- margin-left: -5px;
114
- margin-top: -5px;
115
- padding: 20px 35px;
116
- }
117
- .page .header {
118
- float: right;
119
- color: #777;
120
- font-size: 10px;
121
- }
122
- .page h1, .page h2, .page h3 {
123
- clear: both;
124
- text-align: center;
125
- }
126
- #pager {
127
- padding: 10px 4px;
128
- color: white;
129
- font-size: 11px;
130
- }
131
- #pager :link, #pager :visited {
132
- color: #bfb;
133
- padding: 0px 5px;
134
- }
135
- #pager :link:hover, #pager :visited:hover {
136
- background-color: #262;
137
- color: white;
138
- }
139
- #logo { float: left; }
140
- #menu { background-color: #dfa; padding: 4px 12px; margin: 0; }
141
- #menu h3 { padding: 0; margin: 0; }
142
- #menu #links { float: right; }
143
- pre { font-weight: bold; color: #730; }
144
- tt { color: #703; font-size: 12pt; }
145
- .dyn-source { background-color: #775915; padding: 4px 8px; margin: 0; display: none; }
146
- .dyn-source pre { color: #DDDDDD; font-size: 8pt; }
147
- .source-link { text-align: right; font-size: 8pt; }
148
- .ruby-comment { color: green; font-style: italic }
149
- .ruby-constant { color: #CCDDFF; font-weight: bold; }
150
- .ruby-identifier { color: #CCCCCC; }
151
- .ruby-ivar { color: #BBCCFF; }
152
- .ruby-keyword { color: #EEEEFF; font-weight: bold }
153
- .ruby-node { color: #FFFFFF; }
154
- .ruby-operator { color: #CCCCCC; }
155
- .ruby-regexp { color: #DDFFDD; }
156
- .ruby-value { color: #FFAAAA; font-style: italic }
157
- .kw { color: #DDDDFF; font-weight: bold }
158
- .cmt { color: #CCFFCC; font-style: italic }
159
- .str { color: #EECCCC; font-style: italic }
160
- .re { color: #EECCCC; }
161
- }
162
-
163
- CONTENTS_XML = %{
164
- IF:description
165
- %description%
166
- ENDIF:description
167
-
168
- IF:requires
169
- <h4>Requires:</h4>
170
- <ul>
171
- START:requires
172
- IF:aref
173
- <li><a href="%aref%">%name%</a></li>
174
- ENDIF:aref
175
- IFNOT:aref
176
- <li>%name%</li>
177
- ENDIF:aref
178
- END:requires
179
- </ul>
180
- ENDIF:requires
181
-
182
- IF:attributes
183
- <h4>Attributes</h4>
184
- <table>
185
- START:attributes
186
- <tr><td>%name%</td><td>%rw%</td><td>%a_desc%</td></tr>
187
- END:attributes
188
- </table>
189
- ENDIF:attributes
190
-
191
- IF:includes
192
- <h4>Includes</h4>
193
- <ul>
194
- START:includes
195
- IF:aref
196
- <li><a href="%aref%">%name%</a></li>
197
- ENDIF:aref
198
- IFNOT:aref
199
- <li>%name%</li>
200
- ENDIF:aref
201
- END:includes
202
- </ul>
203
- ENDIF:includes
204
-
205
- START:sections
206
- IF:method_list
207
- <h2 class="ruled">Methods</h2>
208
- START:method_list
209
- IF:methods
210
- START:methods
211
- <h4 class="ruled">%type% %category% method:
212
- IF:callseq
213
- <strong><a name="%aref%">%callseq%</a></strong> <a href="#%aref%"><img src="%root%/permalink.gif" border="0" title="Permalink to %callseq%" /></a>
214
- ENDIF:callseq
215
- IFNOT:callseq
216
- <strong><a name="%aref%">%name%%params%</a></strong> <a href="#%aref%"><img src="%root%/permalink.gif" border="0" title="Permalink to %type% %category% method: %name%" /></a></h4>
217
- ENDIF:callseq
218
-
219
- IF:m_desc
220
- %m_desc%
221
- ENDIF:m_desc
222
-
223
- IF:sourcecode
224
- <div class="sourcecode">
225
- <p class="source-link">[ <a href="javascript:toggleSource('%aref%_source')" id="l_%aref%_source">show source</a> ]</p>
226
- <div id="%aref%_source" class="dyn-source">
227
- <pre>
228
- %sourcecode%
229
- </pre>
230
- </div>
231
- </div>
232
- ENDIF:sourcecode
233
- END:methods
234
- ENDIF:methods
235
- END:method_list
236
- ENDIF:method_list
237
- END:sections
238
- }
239
-
240
- ############################################################################
241
-
242
-
243
- BODY = %{
244
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
245
- <html>
246
- <head>
247
- <title>
248
- IF:title
249
- %realtitle% &raquo; %title%
250
- ENDIF:title
251
- IFNOT:title
252
- %realtitle%
253
- ENDIF:title
254
- </title>
255
- <meta http-equiv="Content-Type" content="text/html; charset=%charset%" />
256
- <link rel="stylesheet" href="%style_url%" type="text/css" media="screen" />
257
- <script language="JavaScript" type="text/javascript">
258
- // <![CDATA[
259
-
260
- function toggleSource( id )
261
- {
262
- var elem
263
- var link
264
-
265
- if( document.getElementById )
266
- {
267
- elem = document.getElementById( id )
268
- link = document.getElementById( "l_" + id )
269
- }
270
- else if ( document.all )
271
- {
272
- elem = eval( "document.all." + id )
273
- link = eval( "document.all.l_" + id )
274
- }
275
- else
276
- return false;
277
-
278
- if( elem.style.display == "block" )
279
- {
280
- elem.style.display = "none"
281
- link.innerHTML = "show source"
282
- }
283
- else
284
- {
285
- elem.style.display = "block"
286
- link.innerHTML = "hide source"
287
- }
288
- }
289
-
290
- function openCode( url )
291
- {
292
- window.open( url, "SOURCE_CODE", "width=400,height=400,scrollbars=yes" )
293
- }
294
- // ]]>
295
- </script>
296
- </head>
297
- <body>
298
- <div id="menu">
299
- <div id="links">
300
- <a href="http://redhanded.hobix.com/bits/campingAMicroframework.html">backstory</a> |
301
- <a href="http://code.whytheluckystiff.net/camping/">wiki</a> |
302
- <a href="http://code.whytheluckystiff.net/camping/newticket">bugs</a> |
303
- <a href="http://code.whytheluckystiff.net/svn/camping/">svn</a>
304
- </div>
305
- <h3 class="title">%title%</h3>
306
- </div>
307
- <div id="fullpage">
308
- <div id="logo"><img src="%root%/Camping.gif" /></div>
309
- <div id="pager">
310
- <strong>Files:</strong>
311
- START:allfiles
312
- <a href="%root%/%href%" value="%title%">%name%</a>
313
- END:allfiles
314
- IF:allclasses
315
- |
316
- <strong>classes:</strong>
317
- START:allclasses
318
- <a href="%root%/%href%" title="%title%">%name%</a>
319
- END:allclasses
320
- ENDIF:allclasses
321
- </ul>
322
- </div>
323
-
324
- !INCLUDE!
325
-
326
- </div>
327
- </body>
328
- </html>
329
- }
330
-
331
- ###############################################################################
332
-
333
- FILE_PAGE = <<_FILE_PAGE_
334
- <div id="%full_path%" class="page_shade">
335
- <div class="page">
336
- <div class="header">
337
- <div class="path">%full_path% / %dtm_modified%</div>
338
- </div>
339
- #{CONTENTS_XML}
340
- </div>
341
- </div>
342
- _FILE_PAGE_
343
-
344
- ###################################################################
345
-
346
- CLASS_PAGE = %{
347
- <div id="%full_name%" class="page_shade">
348
- <div class="page">
349
- IF:parent
350
- <h3>%classmod% %full_name% &lt; HREF:par_url:parent:</h3>
351
- ENDIF:parent
352
- IFNOT:parent
353
- <h3>%classmod% %full_name%</h3>
354
- ENDIF:parent
355
-
356
- IF:infiles
357
- (in files
358
- START:infiles
359
- HREF:full_path_url:full_path:
360
- END:infiles
361
- )
362
- ENDIF:infiles
363
- } + CONTENTS_XML + %{
364
- </div>
365
- </div>
366
- }
367
-
368
- ###################################################################
369
-
370
- METHOD_LIST = %{
371
- IF:includes
372
- <div class="tablesubsubtitle">Included modules</div><br>
373
- <div class="name-list">
374
- START:includes
375
- <span class="method-name">HREF:aref:name:</span>
376
- END:includes
377
- </div>
378
- ENDIF:includes
379
-
380
- IF:method_list
381
- START:method_list
382
- IF:methods
383
- <table cellpadding=5 width="100%">
384
- <tr><td class="tablesubtitle">%type% %category% methods</td></tr>
385
- </table>
386
- START:methods
387
- <table width="100%" cellspacing = 0 cellpadding=5 border=0>
388
- <tr><td class="methodtitle">
389
- <a name="%aref%">
390
- IF:callseq
391
- <b>%callseq%</b>
392
- ENDIF:callseq
393
- IFNOT:callseq
394
- <b>%name%</b>%params%
395
- ENDIF:callseq
396
- IF:codeurl
397
- <a href="%codeurl%" target="source" class="srclink">src</a>
398
- ENDIF:codeurl
399
- </a></td></tr>
400
- </table>
401
- IF:m_desc
402
- <div class="description">
403
- %m_desc%
404
- </div>
405
- ENDIF:m_desc
406
- IF:aka
407
- <div class="aka">
408
- This method is also aliased as
409
- START:aka
410
- <a href="%aref%">%name%</a>
411
- END:aka
412
- </div>
413
- ENDIF:aka
414
- IF:sourcecode
415
- <div class="sourcecode">
416
- <p class="source-link">[ <a href="javascript:toggleSource('%aref%_source')" id="l_%aref%_source">show source</a> ]</p>
417
- <div id="%aref%_source" class="dyn-source">
418
- <pre>
419
- %sourcecode%
420
- </pre>
421
- </div>
422
- </div>
423
- ENDIF:sourcecode
424
- END:methods
425
- ENDIF:methods
426
- END:method_list
427
- ENDIF:method_list
428
- }
429
-
430
-
431
- ########################## Index ################################
432
-
433
- FR_INDEX_BODY = %{
434
- !INCLUDE!
435
- }
436
-
437
- FILE_INDEX = %{
438
- <html>
439
- <head>
440
- <meta http-equiv="Content-Type" content="text/html; charset=%charset%">
441
- <style>
442
- <!--
443
- body {
444
- background-color: #ddddff;
445
- font-family: #{FONTS};
446
- font-size: 11px;
447
- font-style: normal;
448
- line-height: 14px;
449
- color: #000040;
450
- }
451
- div.banner {
452
- background: #0000aa;
453
- color: white;
454
- padding: 1;
455
- margin: 0;
456
- font-size: 90%;
457
- font-weight: bold;
458
- line-height: 1.1;
459
- text-align: center;
460
- width: 100%;
461
- }
462
-
463
- -->
464
- </style>
465
- <base target="docwin">
466
- </head>
467
- <body>
468
- <div class="banner">%list_title%</div>
469
- START:entries
470
- <a href="%href%">%name%</a><br>
471
- END:entries
472
- </body></html>
473
- }
474
-
475
- CLASS_INDEX = FILE_INDEX
476
- METHOD_INDEX = FILE_INDEX
477
-
478
- INDEX = %{
479
- <HTML>
480
- <HEAD>
481
- <META HTTP-EQUIV="refresh" content="0;URL=%initial_page%">
482
- <TITLE>%realtitle%</TITLE>
483
- </HEAD>
484
- <BODY>
485
- Click <a href="%initial_page%">here</a> to open the Camping docs.
486
- </BODY>
487
- </HTML>
488
- }
489
-
490
- end
491
- end