picnic 0.7.1 → 0.8.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (45) hide show
  1. data/History.txt +10 -0
  2. data/Manifest.txt +30 -13
  3. data/Rakefile +2 -0
  4. data/lib/picnic.rb +5 -120
  5. data/lib/picnic/authentication.rb +40 -4
  6. data/lib/picnic/cli.rb +86 -43
  7. data/lib/picnic/conf.rb +45 -43
  8. data/lib/picnic/logger.rb +41 -0
  9. data/lib/picnic/server.rb +99 -0
  10. data/lib/picnic/version.rb +2 -2
  11. data/picnic.gemspec +44 -0
  12. data/vendor/{camping-1.5.180 → camping-2.0.20090212}/CHANGELOG +17 -10
  13. data/vendor/{camping-1.5.180 → camping-2.0.20090212}/COPYING +0 -0
  14. data/vendor/{camping-1.5.180 → camping-2.0.20090212}/README +2 -2
  15. data/vendor/{camping-1.5.180 → camping-2.0.20090212}/Rakefile +62 -5
  16. data/vendor/camping-2.0.20090212/bin/camping +99 -0
  17. data/vendor/camping-2.0.20090212/doc/camping.1.gz +0 -0
  18. data/vendor/camping-2.0.20090212/examples/README +5 -0
  19. data/vendor/camping-2.0.20090212/examples/blog.rb +375 -0
  20. data/vendor/camping-2.0.20090212/examples/campsh.rb +629 -0
  21. data/vendor/camping-2.0.20090212/examples/tepee.rb +242 -0
  22. data/vendor/camping-2.0.20090212/extras/Camping.gif +0 -0
  23. data/vendor/camping-2.0.20090212/extras/flipbook_rdoc.rb +491 -0
  24. data/vendor/camping-2.0.20090212/extras/permalink.gif +0 -0
  25. data/vendor/{camping-1.5.180 → camping-2.0.20090212}/lib/camping-unabridged.rb +168 -294
  26. data/vendor/camping-2.0.20090212/lib/camping.rb +54 -0
  27. data/vendor/{camping-1.5.180/lib/camping/db.rb → camping-2.0.20090212/lib/camping/ar.rb} +4 -4
  28. data/vendor/{camping-1.5.180/lib/camping → camping-2.0.20090212/lib/camping/ar}/session.rb +23 -14
  29. data/vendor/camping-2.0.20090212/lib/camping/mab.rb +26 -0
  30. data/vendor/camping-2.0.20090212/lib/camping/reloader.rb +163 -0
  31. data/vendor/camping-2.0.20090212/lib/camping/server.rb +158 -0
  32. data/vendor/camping-2.0.20090212/lib/camping/session.rb +74 -0
  33. data/vendor/camping-2.0.20090212/setup.rb +1551 -0
  34. data/vendor/camping-2.0.20090212/test/apps/env_debug.rb +65 -0
  35. data/vendor/camping-2.0.20090212/test/apps/forms.rb +95 -0
  36. data/vendor/camping-2.0.20090212/test/apps/misc.rb +86 -0
  37. data/vendor/camping-2.0.20090212/test/apps/sessions.rb +38 -0
  38. data/vendor/camping-2.0.20090212/test/test_camping.rb +54 -0
  39. metadata +43 -16
  40. data/lib/picnic/postambles.rb +0 -292
  41. data/lib/picnic/utils.rb +0 -36
  42. data/vendor/camping-1.5.180/lib/camping.rb +0 -57
  43. data/vendor/camping-1.5.180/lib/camping/fastcgi.rb +0 -244
  44. data/vendor/camping-1.5.180/lib/camping/reloader.rb +0 -163
  45. data/vendor/camping-1.5.180/lib/camping/webrick.rb +0 -65
@@ -0,0 +1,242 @@
1
+ #!/usr/bin/ruby
2
+ $:.unshift File.dirname(__FILE__) + "/../lib"
3
+ %w(rubygems redcloth camping camping/ar 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 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
+
@@ -0,0 +1,491 @@
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