dima-ruboss4ruby 1.1.0 → 1.1.1

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.
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