dima-ruboss4ruby 1.1.0 → 1.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (47) hide show
  1. data/History.txt +2 -2
  2. data/Manifest.txt +9 -3
  3. data/README.rdoc +43 -15
  4. data/Rakefile +9 -4
  5. data/app_generators/ruboss_app/USAGE +11 -2
  6. data/app_generators/ruboss_app/ruboss_app_generator.rb +21 -15
  7. data/app_generators/ruboss_app/templates/app.yaml.erb +12 -0
  8. data/app_generators/ruboss_app/templates/default_tasks.rake +1 -1
  9. data/app_generators/ruboss_app/templates/empty.txt +0 -0
  10. data/app_generators/ruboss_app/templates/generate.rb +1 -5
  11. data/app_generators/ruboss_app/templates/index.yaml +11 -0
  12. data/app_generators/ruboss_app/templates/mainair-app.xml +1 -1
  13. data/bin/ruboss-gen +18 -4
  14. data/generators/ruboss_config/ruboss_config_generator.rb +0 -5
  15. data/generators/ruboss_controller/ruboss_controller_generator.rb +15 -10
  16. data/generators/ruboss_controller/templates/assist.py +65 -0
  17. data/generators/ruboss_controller/templates/restful.py +136 -0
  18. data/generators/ruboss_main_app/ruboss_main_app_generator.rb +18 -4
  19. data/generators/ruboss_main_app/templates/main.py.erb +29 -0
  20. data/generators/ruboss_main_app/templates/mainapp.mxml +5 -1
  21. data/generators/ruboss_scaffold/ruboss_scaffold_generator.rb +77 -46
  22. data/generators/ruboss_scaffold/templates/controller.py.erb +27 -0
  23. data/generators/ruboss_scaffold/templates/model.as.erb +1 -1
  24. data/generators/ruboss_scaffold/templates/model.py.erb +14 -0
  25. data/generators/ruboss_yaml_scaffold/USAGE +42 -4
  26. data/generators/ruboss_yaml_scaffold/ruboss_yaml_scaffold_generator.rb +8 -4
  27. data/lib/ruboss4ruby.rb +15 -2
  28. data/lib/ruboss4ruby/active_foo.rb +32 -3
  29. data/lib/ruboss4ruby/active_record_default_methods.rb +19 -7
  30. data/lib/ruboss4ruby/active_record_tasks.rb +9 -3
  31. data/lib/ruboss4ruby/configuration.rb +32 -0
  32. data/lib/ruboss4ruby/datamapper_foo.rb +6 -0
  33. data/lib/ruboss4ruby/rails/recipes.rb +5 -3
  34. data/lib/ruboss4ruby/rails/swf_helper.rb +1 -0
  35. data/lib/ruboss4ruby/tasks.rb +5 -0
  36. data/rails_generators/ruboss_config/ruboss_config_generator.rb +14 -13
  37. data/rails_generators/ruboss_config/templates/mainair-app.xml +1 -1
  38. data/rails_generators/ruboss_config/templates/ruboss_tasks.rake +1 -0
  39. data/rails_generators/ruboss_controller/ruboss_controller_generator.rb +2 -5
  40. data/rails_generators/ruboss_scaffold/ruboss_scaffold_generator.rb +66 -62
  41. data/rails_generators/ruboss_scaffold/templates/model.as.erb +1 -1
  42. data/rails_generators/ruboss_yaml_scaffold/USAGE +38 -1
  43. data/rails_generators/ruboss_yaml_scaffold/ruboss_yaml_scaffold_generator.rb +0 -5
  44. data/rcl-1.0.txt +0 -0
  45. data/rdoc/generators/template/html/jamis.rb +588 -0
  46. data/ruboss4ruby.gemspec +12 -12
  47. metadata +15 -26
@@ -1,3 +1,5 @@
1
+ require File.join(File.dirname(__FILE__), '..', '..', 'lib', 'ruboss4ruby') if !defined?(Ruboss4Ruby)
2
+
1
3
  module Rails
2
4
  module Generator
3
5
  class GeneratedAttribute
@@ -11,50 +13,51 @@ module Rails
11
13
 
12
14
  def field_type
13
15
  @field_type ||= case type
14
- when :integer, :float, :decimal then :text_field
15
- when :datetime, :timestamp, :time then :datetime_select
16
- when :date then :date_select
17
- when :string then :text_field
18
- when :text then :text_area
19
- when :boolean then :check_box
20
- else
21
- :text_field
16
+ when :integer, :float, :decimal then :text_field
17
+ when :datetime, :timestamp, :time then :datetime_select
18
+ when :date then :date_select
19
+ when :string then :text_field
20
+ when :text then :text_area
21
+ when :boolean then :check_box
22
+ else
23
+ :text_field
22
24
  end
23
25
  end
24
26
 
25
27
  def default(prefix = '')
26
28
  @default = case type
27
- when :integer then 1
28
- when :float then 1.5
29
- when :decimal then "9.99"
30
- when :datetime, :timestamp, :time then Time.now.to_s(:db)
31
- when :date then Date.today.to_s(:db)
32
- when :string then prefix + name.camelize + "String"
33
- when :text then prefix + name.camelize + "Text"
34
- when :boolean then false
35
- else
36
- ""
29
+ when :integer then 1
30
+ when :float then 1.5
31
+ when :decimal then "9.99"
32
+ when :datetime, :timestamp, :time then Time.now.to_s(:db)
33
+ when :date then Date.today.to_s(:db)
34
+ when :string then prefix + name.camelize + "String"
35
+ when :text then prefix + name.camelize + "Text"
36
+ when :boolean then false
37
+ else
38
+ ""
37
39
  end
38
40
  end
39
41
 
40
42
  def flex_type
41
43
  @flex_type = case type
42
- when :integer then 'int'
43
- when :date, :datetime, :time then 'Date'
44
- when :boolean then 'Boolean'
45
- when :float, :decimal then 'Number'
46
- else
47
- 'String'
44
+ when :integer then 'int'
45
+ when :date, :datetime, :time then 'Date'
46
+ when :boolean then 'Boolean'
47
+ when :float, :decimal then 'Number'
48
+ else
49
+ 'String'
48
50
  end
49
51
  end
50
-
51
- def flex_default(prefix = '')
52
+
53
+ def flex_default
52
54
  @flex_default = case type
53
- when :integer, :float, :decimal then '0'
54
- when :string, :text then '""'
55
- when :boolean then 'false'
56
- else
57
- 'null'
55
+ when :integer then '0'
56
+ when :date, :datetime, :time then 'new Date'
57
+ when :boolean then 'false'
58
+ when :float, :decimal then 'new Number'
59
+ else
60
+ "\"\""
58
61
  end
59
62
  end
60
63
  end
@@ -83,9 +86,7 @@ class RubossScaffoldGenerator < Rails::Generator::NamedBase
83
86
  :controller_underscore_name,
84
87
  :controller_singular_name,
85
88
  :controller_plural_name
86
-
87
- attr_accessor :constructor_args
88
-
89
+
89
90
  alias_method :controller_file_name, :controller_underscore_name
90
91
  alias_method :controller_table_name, :controller_plural_name
91
92
 
@@ -104,28 +105,7 @@ class RubossScaffoldGenerator < Rails::Generator::NamedBase
104
105
  else
105
106
  @controller_class_name = "#{@controller_class_nesting}::#{@controller_class_name_without_nesting}"
106
107
  end
107
-
108
- @belongs_tos = []
109
- @has_ones = []
110
- @has_manies = []
111
- # Figure out has_one, has_many and belongs_to based on args
112
- @args.each do |arg|
113
- if arg =~ /^has_one:/
114
- # arg = "has_one:arg1,arg2", so all the has_one are together
115
- @has_ones = arg.split(':')[1].split(',')
116
- elsif arg =~ /^has_many:/
117
- # arg = "has_many:arg1,arg2", so all the has_many are together
118
- @has_manies = arg.split(":")[1].split(",")
119
- elsif arg =~ /^belongs_to:/ # belongs_to:arg1,arg2
120
- @belongs_tos = arg.split(":")[1].split(',')
121
- end
122
- end
123
-
124
- # Remove the has_one and has_many arguments since they are
125
- # not for consumption by the scaffold generator, and since
126
- # we have already used them to set the @belongs_tos, @has_ones and
127
- # @has_manies.
128
- @args.delete_if { |elt| elt =~ /^(has_one|has_many|belongs_to):/ }
108
+ extract_relationships
129
109
  end
130
110
 
131
111
  def manifest
@@ -167,11 +147,35 @@ class RubossScaffoldGenerator < Rails::Generator::NamedBase
167
147
  end
168
148
  end
169
149
 
170
- protected
171
- def add_options!(opt)
172
- opt.separator ''
173
- opt.separator 'Options:'
174
- opt.on("-f", "--flex-only", "Scaffold Flex code only",
175
- "Default: false") { |v| options[:flex_only] = v}
150
+ protected
151
+ def extract_relationships
152
+ @belongs_tos = []
153
+ @has_ones = []
154
+ @has_manies = []
155
+ # Figure out has_one, has_many and belongs_to based on args
156
+ @args.each do |arg|
157
+ if arg =~ /^has_one:/
158
+ # arg = "has_one:arg1,arg2", so all the has_one are together
159
+ @has_ones = arg.split(':')[1].split(',')
160
+ elsif arg =~ /^has_many:/
161
+ # arg = "has_many:arg1,arg2", so all the has_many are together
162
+ @has_manies = arg.split(":")[1].split(",")
163
+ elsif arg =~ /^belongs_to:/ # belongs_to:arg1,arg2
164
+ @belongs_tos = arg.split(":")[1].split(',')
165
+ end
176
166
  end
167
+
168
+ # Remove the has_one and has_many arguments since they are
169
+ # not for consumption by the scaffold generator, and since
170
+ # we have already used them to set the @belongs_tos, @has_ones and
171
+ # @has_manies.
172
+ @args.delete_if { |elt| elt =~ /^(has_one|has_many|belongs_to):/ }
173
+ end
174
+
175
+ def add_options!(opt)
176
+ opt.separator ''
177
+ opt.separator 'Options:'
178
+ opt.on("-f", "--flex-only", "Scaffold Flex code only",
179
+ "Default: false") { |v| options[:flex_only] = v}
180
+ end
177
181
  end
@@ -17,7 +17,7 @@ package <%= base_package %>.models {
17
17
  <% if attribute.type == :datetime || attribute.type == :time -%>
18
18
  [DateTime]
19
19
  <% end -%>
20
- public var <%= attribute.flex_name %>:<%= attribute.flex_type %>;
20
+ public var <%= attribute.flex_name %>:<%= attribute.flex_type %> = <%= attribute.flex_default %>;
21
21
 
22
22
  <% end -%>
23
23
  <% for model in belongs_tos -%>
@@ -11,4 +11,41 @@ Description:
11
11
  editing.
12
12
 
13
13
  Examples:
14
- `./script/generate ruboss_yaml_scaffold`
14
+ `./script/generate ruboss_yaml_scaffold`
15
+
16
+ Sample Model File:
17
+ project:
18
+ - name: string
19
+ - notes: text
20
+ - start_date: date
21
+ - end_date: date
22
+ - completed: boolean
23
+ - belongs_to: [user]
24
+ - has_many: [tasks]
25
+
26
+ location:
27
+ - name: string
28
+ - notes: text
29
+ - belongs_to: [user]
30
+ - has_many: [tasks]
31
+
32
+ task:
33
+ - name: string
34
+ - notes: text
35
+ - start_time: datetime
36
+ - end_time: datetime
37
+ - completed: boolean
38
+ - next_action: boolean
39
+ - belongs_to: [project, location, user]
40
+
41
+ note:
42
+ - content: text
43
+ - belongs_to: [user]
44
+
45
+ user:
46
+ - login: string
47
+ - first_name: string
48
+ - last_name: string
49
+ - email: string
50
+ - has_many: [tasks, projects, locations]
51
+ - has_one: [note]
@@ -36,9 +36,4 @@ class RubossYamlScaffoldGenerator < Rails::Generator::Base
36
36
  :skip_framework => ARGV.include?('skipframework'))
37
37
  end
38
38
  end
39
-
40
- protected
41
- def banner
42
- "Usage: #{$0} #{spec.name}"
43
- end
44
39
  end
data/rcl-1.0.txt CHANGED
Binary file
@@ -0,0 +1,588 @@
1
+ module RDoc
2
+ module Page
3
+
4
+ FONTS = "\"Bitstream Vera Sans\", Verdana, Arial, Helvetica, sans-serif"
5
+
6
+ STYLE = <<CSS
7
+ a {
8
+ color: #00F;
9
+ text-decoration: none;
10
+ }
11
+
12
+ a:hover {
13
+ color: #77F;
14
+ text-decoration: underline;
15
+ }
16
+
17
+ body, td, p {
18
+ font-family: %fonts%;
19
+ background: #FFF;
20
+ color: #000;
21
+ margin: 0px;
22
+ font-size: small;
23
+ }
24
+
25
+ #content {
26
+ margin: 2em;
27
+ }
28
+
29
+ #description p {
30
+ margin-bottom: 0.5em;
31
+ }
32
+
33
+ .sectiontitle {
34
+ margin-top: 1em;
35
+ margin-bottom: 1em;
36
+ padding: 0.5em;
37
+ padding-left: 2em;
38
+ background: #005;
39
+ color: #FFF;
40
+ font-weight: bold;
41
+ border: 1px dotted black;
42
+ }
43
+
44
+ .attr-rw {
45
+ padding-left: 1em;
46
+ padding-right: 1em;
47
+ text-align: center;
48
+ color: #055;
49
+ }
50
+
51
+ .attr-name {
52
+ font-weight: bold;
53
+ }
54
+
55
+ .attr-desc {
56
+ }
57
+
58
+ .attr-value {
59
+ font-family: monospace;
60
+ }
61
+
62
+ .file-title-prefix {
63
+ font-size: large;
64
+ }
65
+
66
+ .file-title {
67
+ font-size: large;
68
+ font-weight: bold;
69
+ background: #005;
70
+ color: #FFF;
71
+ }
72
+
73
+ .banner {
74
+ background: #005;
75
+ color: #FFF;
76
+ border: 1px solid black;
77
+ padding: 1em;
78
+ }
79
+
80
+ .banner td {
81
+ background: transparent;
82
+ color: #FFF;
83
+ }
84
+
85
+ h1 a, h2 a, .sectiontitle a, .banner a {
86
+ color: #FF0;
87
+ }
88
+
89
+ h1 a:hover, h2 a:hover, .sectiontitle a:hover, .banner a:hover {
90
+ color: #FF7;
91
+ }
92
+
93
+ .dyn-source {
94
+ display: none;
95
+ background: #FFE;
96
+ color: #000;
97
+ border: 1px dotted black;
98
+ margin: 0.5em 2em 0.5em 2em;
99
+ padding: 0.5em;
100
+ }
101
+
102
+ .dyn-source .cmt {
103
+ color: #00F;
104
+ font-style: italic;
105
+ }
106
+
107
+ .dyn-source .kw {
108
+ color: #070;
109
+ font-weight: bold;
110
+ }
111
+
112
+ .method {
113
+ margin-left: 1em;
114
+ margin-right: 1em;
115
+ margin-bottom: 1em;
116
+ }
117
+
118
+ .description pre {
119
+ padding: 0.5em;
120
+ border: 1px dotted black;
121
+ background: #FFE;
122
+ }
123
+
124
+ .method .title {
125
+ font-family: monospace;
126
+ font-size: large;
127
+ border-bottom: 1px dashed black;
128
+ margin-bottom: 0.3em;
129
+ padding-bottom: 0.1em;
130
+ }
131
+
132
+ .method .description, .method .sourcecode {
133
+ margin-left: 1em;
134
+ }
135
+
136
+ .description p, .sourcecode p {
137
+ margin-bottom: 0.5em;
138
+ }
139
+
140
+ .method .sourcecode p.source-link {
141
+ text-indent: 0em;
142
+ margin-top: 0.5em;
143
+ }
144
+
145
+ .method .aka {
146
+ margin-top: 0.3em;
147
+ margin-left: 1em;
148
+ font-style: italic;
149
+ text-indent: 2em;
150
+ }
151
+
152
+ h1 {
153
+ padding: 1em;
154
+ border: 1px solid black;
155
+ font-size: x-large;
156
+ font-weight: bold;
157
+ color: #FFF;
158
+ background: #007;
159
+ }
160
+
161
+ h2 {
162
+ padding: 0.5em 1em 0.5em 1em;
163
+ border: 1px solid black;
164
+ font-size: large;
165
+ font-weight: bold;
166
+ color: #FFF;
167
+ background: #009;
168
+ }
169
+
170
+ h3, h4, h5, h6 {
171
+ padding: 0.2em 1em 0.2em 1em;
172
+ border: 1px dashed black;
173
+ color: #000;
174
+ background: #AAF;
175
+ }
176
+
177
+ .sourcecode > pre {
178
+ padding: 0.5em;
179
+ border: 1px dotted black;
180
+ background: #FFE;
181
+ }
182
+
183
+ CSS
184
+
185
+ XHTML_PREAMBLE = %{<?xml version="1.0" encoding="%charset%"?>
186
+ <!DOCTYPE html
187
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
188
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
189
+ }
190
+
191
+ XHTML_FRAMESET_PREAMBLE = %{
192
+ <!DOCTYPE html
193
+ PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
194
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
195
+ }
196
+
197
+ HEADER = XHTML_PREAMBLE + <<ENDHEADER
198
+ <html>
199
+ <head>
200
+ <title>%title%</title>
201
+ <meta http-equiv="Content-Type" content="text/html; charset=%charset%" />
202
+ <link rel="stylesheet" href="%style_url%" type="text/css" media="screen" />
203
+
204
+ <script language="JavaScript" type="text/javascript">
205
+ // <![CDATA[
206
+
207
+ function toggleSource( id )
208
+ {
209
+ var elem
210
+ var link
211
+
212
+ if( document.getElementById )
213
+ {
214
+ elem = document.getElementById( id )
215
+ link = document.getElementById( "l_" + id )
216
+ }
217
+ else if ( document.all )
218
+ {
219
+ elem = eval( "document.all." + id )
220
+ link = eval( "document.all.l_" + id )
221
+ }
222
+ else
223
+ return false;
224
+
225
+ if( elem.style.display == "block" )
226
+ {
227
+ elem.style.display = "none"
228
+ link.innerHTML = "show source"
229
+ }
230
+ else
231
+ {
232
+ elem.style.display = "block"
233
+ link.innerHTML = "hide source"
234
+ }
235
+ }
236
+
237
+ function openCode( url )
238
+ {
239
+ window.open( url, "SOURCE_CODE", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=480,width=750" ).focus();
240
+ }
241
+ // ]]>
242
+ </script>
243
+ </head>
244
+
245
+ <body>
246
+ ENDHEADER
247
+
248
+ FILE_PAGE = <<HTML
249
+ <table border='0' cellpadding='0' cellspacing='0' width="100%" class='banner'>
250
+ <tr><td>
251
+ <table width="100%" border='0' cellpadding='0' cellspacing='0'><tr>
252
+ <td class="file-title" colspan="2"><span class="file-title-prefix">File</span><br />%short_name%</td>
253
+ <td align="right">
254
+ <table border='0' cellspacing="0" cellpadding="2">
255
+ <tr>
256
+ <td>Path:</td>
257
+ <td>%full_path%
258
+ IF:cvsurl
259
+ &nbsp;(<a href="%cvsurl%">CVS</a>)
260
+ ENDIF:cvsurl
261
+ </td>
262
+ </tr>
263
+ <tr>
264
+ <td>Modified:</td>
265
+ <td>%dtm_modified%</td>
266
+ </tr>
267
+ </table>
268
+ </td></tr>
269
+ </table>
270
+ </td></tr>
271
+ </table><br />
272
+ HTML
273
+
274
+ ###################################################################
275
+
276
+ CLASS_PAGE = <<HTML
277
+ <table width="100%" border='0' cellpadding='0' cellspacing='0' class='banner'><tr>
278
+ <td class="file-title"><span class="file-title-prefix">%classmod%</span><br />%full_name%</td>
279
+ <td align="right">
280
+ <table cellspacing="0" cellpadding="2">
281
+ <tr valign="top">
282
+ <td>In:</td>
283
+ <td>
284
+ START:infiles
285
+ HREF:full_path_url:full_path:
286
+ IF:cvsurl
287
+ &nbsp;(<a href="%cvsurl%">CVS</a>)
288
+ ENDIF:cvsurl
289
+ END:infiles
290
+ </td>
291
+ </tr>
292
+ IF:parent
293
+ <tr>
294
+ <td>Parent:</td>
295
+ <td>
296
+ IF:par_url
297
+ <a href="%par_url%">
298
+ ENDIF:par_url
299
+ %parent%
300
+ IF:par_url
301
+ </a>
302
+ ENDIF:par_url
303
+ </td>
304
+ </tr>
305
+ ENDIF:parent
306
+ </table>
307
+ </td>
308
+ </tr>
309
+ </table>
310
+ HTML
311
+
312
+ ###################################################################
313
+
314
+ METHOD_LIST = <<HTML
315
+ <div id="content">
316
+ IF:diagram
317
+ <table cellpadding='0' cellspacing='0' border='0' width="100%"><tr><td align="center">
318
+ %diagram%
319
+ </td></tr></table>
320
+ ENDIF:diagram
321
+
322
+ IF:description
323
+ <div class="description">%description%</div>
324
+ ENDIF:description
325
+
326
+ IF:requires
327
+ <div class="sectiontitle">Required Files</div>
328
+ <ul>
329
+ START:requires
330
+ <li>HREF:aref:name:</li>
331
+ END:requires
332
+ </ul>
333
+ ENDIF:requires
334
+
335
+ IF:toc
336
+ <div class="sectiontitle">Contents</div>
337
+ <ul>
338
+ START:toc
339
+ <li><a href="#%href%">%secname%</a></li>
340
+ END:toc
341
+ </ul>
342
+ ENDIF:toc
343
+
344
+ IF:methods
345
+ <div class="sectiontitle">Methods</div>
346
+ <ul>
347
+ START:methods
348
+ <li>HREF:aref:name:</li>
349
+ END:methods
350
+ </ul>
351
+ ENDIF:methods
352
+
353
+ IF:includes
354
+ <div class="sectiontitle">Included Modules</div>
355
+ <ul>
356
+ START:includes
357
+ <li>HREF:aref:name:</li>
358
+ END:includes
359
+ </ul>
360
+ ENDIF:includes
361
+
362
+ START:sections
363
+ IF:sectitle
364
+ <div class="sectiontitle"><a name="%secsequence%">%sectitle%</a></div>
365
+ IF:seccomment
366
+ <div class="description">
367
+ %seccomment%
368
+ </div>
369
+ ENDIF:seccomment
370
+ ENDIF:sectitle
371
+
372
+ IF:classlist
373
+ <div class="sectiontitle">Classes and Modules</div>
374
+ %classlist%
375
+ ENDIF:classlist
376
+
377
+ IF:constants
378
+ <div class="sectiontitle">Constants</div>
379
+ <table border='0' cellpadding='5'>
380
+ START:constants
381
+ <tr valign='top'>
382
+ <td class="attr-name">%name%</td>
383
+ <td>=</td>
384
+ <td class="attr-value">%value%</td>
385
+ </tr>
386
+ IF:desc
387
+ <tr valign='top'>
388
+ <td>&nbsp;</td>
389
+ <td colspan="2" class="attr-desc">%desc%</td>
390
+ </tr>
391
+ ENDIF:desc
392
+ END:constants
393
+ </table>
394
+ ENDIF:constants
395
+
396
+ IF:attributes
397
+ <div class="sectiontitle">Attributes</div>
398
+ <table border='0' cellpadding='5'>
399
+ START:attributes
400
+ <tr valign='top'>
401
+ <td class='attr-rw'>
402
+ IF:rw
403
+ [%rw%]
404
+ ENDIF:rw
405
+ </td>
406
+ <td class='attr-name'>%name%</td>
407
+ <td class='attr-desc'>%a_desc%</td>
408
+ </tr>
409
+ END:attributes
410
+ </table>
411
+ ENDIF:attributes
412
+
413
+ IF:method_list
414
+ START:method_list
415
+ IF:methods
416
+ <div class="sectiontitle">%type% %category% methods</div>
417
+ START:methods
418
+ <div class="method">
419
+ <div class="title">
420
+ IF:callseq
421
+ <a name="%aref%"></a><b>%callseq%</b>
422
+ ENDIF:callseq
423
+ IFNOT:callseq
424
+ <a name="%aref%"></a><b>%name%</b>%params%
425
+ ENDIF:callseq
426
+ IF:codeurl
427
+ [&nbsp;<a href="%codeurl%" target="SOURCE_CODE" onclick="javascript:openCode('%codeurl%'); return false;">source</a>&nbsp;]
428
+ ENDIF:codeurl
429
+ </div>
430
+ IF:m_desc
431
+ <div class="description">
432
+ %m_desc%
433
+ </div>
434
+ ENDIF:m_desc
435
+ IF:aka
436
+ <div class="aka">
437
+ This method is also aliased as
438
+ START:aka
439
+ <a href="%aref%">%name%</a>
440
+ END:aka
441
+ </div>
442
+ ENDIF:aka
443
+ IF:sourcecode
444
+ <div class="sourcecode">
445
+ <p class="source-link">[ <a href="javascript:toggleSource('%aref%_source')" id="l_%aref%_source">show source</a> ]</p>
446
+ <div id="%aref%_source" class="dyn-source">
447
+ <pre>
448
+ %sourcecode%
449
+ </pre>
450
+ </div>
451
+ </div>
452
+ ENDIF:sourcecode
453
+ </div>
454
+ END:methods
455
+ ENDIF:methods
456
+ END:method_list
457
+ ENDIF:method_list
458
+ END:sections
459
+ </div>
460
+ HTML
461
+
462
+ FOOTER = <<ENDFOOTER
463
+ </body>
464
+ </html>
465
+ ENDFOOTER
466
+
467
+ BODY = HEADER + <<ENDBODY
468
+ !INCLUDE! <!-- banner header -->
469
+
470
+ <div id="bodyContent">
471
+ #{METHOD_LIST}
472
+ </div>
473
+
474
+ #{FOOTER}
475
+ ENDBODY
476
+
477
+ ########################## Source code ##########################
478
+
479
+ SRC_PAGE = XHTML_PREAMBLE + <<HTML
480
+ <html>
481
+ <head><title>%title%</title>
482
+ <meta http-equiv="Content-Type" content="text/html; charset=%charset%" />
483
+ <style type="text/css">
484
+ .ruby-comment { color: green; font-style: italic }
485
+ .ruby-constant { color: #4433aa; font-weight: bold; }
486
+ .ruby-identifier { color: #222222; }
487
+ .ruby-ivar { color: #2233dd; }
488
+ .ruby-keyword { color: #3333FF; font-weight: bold }
489
+ .ruby-node { color: #777777; }
490
+ .ruby-operator { color: #111111; }
491
+ .ruby-regexp { color: #662222; }
492
+ .ruby-value { color: #662222; font-style: italic }
493
+ .kw { color: #3333FF; font-weight: bold }
494
+ .cmt { color: green; font-style: italic }
495
+ .str { color: #662222; font-style: italic }
496
+ .re { color: #662222; }
497
+ </style>
498
+ </head>
499
+ <body bgcolor="white">
500
+ <pre>%code%</pre>
501
+ </body>
502
+ </html>
503
+ HTML
504
+
505
+ ########################## Index ################################
506
+
507
+ FR_INDEX_BODY = <<HTML
508
+ !INCLUDE!
509
+ HTML
510
+
511
+ FILE_INDEX = XHTML_PREAMBLE + <<HTML
512
+ <html>
513
+ <head>
514
+ <meta http-equiv="Content-Type" content="text/html; charset=%charset%" />
515
+ <title>Index</title>
516
+ <style type="text/css">
517
+ <!--
518
+ body {
519
+ background-color: #EEE;
520
+ font-family: #{FONTS};
521
+ color: #000;
522
+ margin: 0px;
523
+ }
524
+ .banner {
525
+ background: #005;
526
+ color: #FFF;
527
+ padding: 0.2em;
528
+ font-size: small;
529
+ font-weight: bold;
530
+ text-align: center;
531
+ }
532
+ .entries {
533
+ margin: 0.25em 1em 0 1em;
534
+ font-size: x-small;
535
+ }
536
+ a {
537
+ color: #00F;
538
+ text-decoration: none;
539
+ white-space: nowrap;
540
+ }
541
+ a:hover {
542
+ color: #77F;
543
+ text-decoration: underline;
544
+ }
545
+ -->
546
+ </style>
547
+ <base target="docwin" />
548
+ </head>
549
+ <body>
550
+ <div class="banner">%list_title%</div>
551
+ <div class="entries">
552
+ START:entries
553
+ <a href="%href%">%name%</a><br />
554
+ END:entries
555
+ </div>
556
+ </body></html>
557
+ HTML
558
+
559
+ CLASS_INDEX = FILE_INDEX
560
+ METHOD_INDEX = FILE_INDEX
561
+
562
+ INDEX = XHTML_FRAMESET_PREAMBLE + <<HTML
563
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
564
+ <head>
565
+ <title>%title%</title>
566
+ <meta http-equiv="Content-Type" content="text/html; charset=%charset%" />
567
+ </head>
568
+
569
+ <frameset cols="20%,*">
570
+ <frameset rows="15%,35%,50%">
571
+ <frame src="fr_file_index.html" title="Files" name="Files" />
572
+ <frame src="fr_class_index.html" name="Classes" />
573
+ <frame src="fr_method_index.html" name="Methods" />
574
+ </frameset>
575
+ <frame src="%initial_page%" name="docwin" />
576
+ <noframes>
577
+ <body bgcolor="white">
578
+ Click <a href="html/index.html">here</a> for a non-frames
579
+ version of this page.
580
+ </body>
581
+ </noframes>
582
+ </frameset>
583
+
584
+ </html>
585
+ HTML
586
+
587
+ end
588
+ end