rbgccxml 0.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.
- data/Rakefile +73 -0
- data/TODO +31 -0
- data/lib/jamis.rb +589 -0
- data/lib/rbgccxml/node.rb +122 -0
- data/lib/rbgccxml/nodes/argument.rb +11 -0
- data/lib/rbgccxml/nodes/class.rb +28 -0
- data/lib/rbgccxml/nodes/constructor.rb +12 -0
- data/lib/rbgccxml/nodes/file.rb +6 -0
- data/lib/rbgccxml/nodes/function.rb +24 -0
- data/lib/rbgccxml/nodes/method.rb +11 -0
- data/lib/rbgccxml/nodes/namespace.rb +6 -0
- data/lib/rbgccxml/nodes/struct.rb +6 -0
- data/lib/rbgccxml/nodes/type.rb +7 -0
- data/lib/rbgccxml/nodes/types/fundamental_type.rb +8 -0
- data/lib/rbgccxml/nodes/types/pointer_type.rb +17 -0
- data/lib/rbgccxml/nodes/types/typedef.rb +8 -0
- data/lib/rbgccxml/parser.rb +87 -0
- data/lib/rbgccxml/query_result.rb +113 -0
- data/lib/rbgccxml/rbgccxml.rb +42 -0
- data/lib/rbgccxml/xml_parsing.rb +89 -0
- data/lib/rbgccxml.rb +31 -0
- data/test/classes_test.rb +60 -0
- data/test/functions_test.rb +102 -0
- data/test/methods_test.rb +59 -0
- data/test/namespaces_test.rb +25 -0
- data/test/node_test.rb +66 -0
- data/test/parser_test.rb +65 -0
- data/test/structs_test.rb +60 -0
- data/test/test_helper.rb +14 -0
- data/test/types_test.rb +41 -0
- metadata +98 -0
data/Rakefile
ADDED
@@ -0,0 +1,73 @@
|
|
1
|
+
require 'rake/testtask'
|
2
|
+
require 'rake/rdoctask'
|
3
|
+
require 'rake/contrib/sshpublisher'
|
4
|
+
require 'rake/gempackagetask'
|
5
|
+
|
6
|
+
PROJECT_NAME = "rbgccxml"
|
7
|
+
RBGCCXML_VERSION = "0.1"
|
8
|
+
|
9
|
+
task :default => :test
|
10
|
+
|
11
|
+
Rake::TestTask.new do |t|
|
12
|
+
t.libs << "lib"
|
13
|
+
t.test_files = FileList["test/*_test.rb"]
|
14
|
+
t.verbose = true
|
15
|
+
end
|
16
|
+
|
17
|
+
Rake::RDocTask.new do |rd|
|
18
|
+
rd.main = "README"
|
19
|
+
rd.rdoc_files.include("README", "lib/**/*.rb")
|
20
|
+
rd.rdoc_files.exclude("**/jamis.rb")
|
21
|
+
rd.template = File.expand_path(File.dirname(__FILE__) + "/lib/jamis.rb")
|
22
|
+
rd.options << '--line-numbers' << '--inline-source'
|
23
|
+
end
|
24
|
+
|
25
|
+
RUBYFORGE_USERNAME = "jameskilton"
|
26
|
+
PROJECT_WEB_PATH = "/var/www/gforge-projects/rbplusplus/rbgccxml"
|
27
|
+
|
28
|
+
# As part of the rbplusplus project, this just goes in a subfolder
|
29
|
+
desc "Update the website"
|
30
|
+
task :upload_web => :rdoc do |t|
|
31
|
+
unless File.directory?("publish")
|
32
|
+
mkdir "publish"
|
33
|
+
end
|
34
|
+
sh "cp -r html/* publish/"
|
35
|
+
Rake::SshDirPublisher.new("#{RUBYFORGE_USERNAME}@rubyforge.org", PROJECT_WEB_PATH, "publish").upload
|
36
|
+
rm_rf "publish"
|
37
|
+
end
|
38
|
+
|
39
|
+
spec = Gem::Specification.new do |s|
|
40
|
+
s.name = PROJECT_NAME
|
41
|
+
s.version = RBGCCXML_VERSION
|
42
|
+
s.summary = 'Ruby interface to GCCXML'
|
43
|
+
s.homepage = 'http://rbplusplus.rubyforge.org/rbgccxml'
|
44
|
+
s.rubyforge_project = "rbplusplus"
|
45
|
+
s.author = 'Jason Roelofs'
|
46
|
+
s.email = 'jameskilton@gmail.com'
|
47
|
+
|
48
|
+
s.add_dependency "hpricot", "0.6"
|
49
|
+
s.add_dependency "gccxml_gem", "0.9"
|
50
|
+
|
51
|
+
s.description = <<-END
|
52
|
+
Rbgccxml is a library that parses out GCCXML (http://www.gccxml.org) output
|
53
|
+
and provides a simple but very powerful querying API for finding exactly
|
54
|
+
what you want out of the C++ source code
|
55
|
+
END
|
56
|
+
|
57
|
+
patterns = [
|
58
|
+
'TODO',
|
59
|
+
'Rakefile',
|
60
|
+
'lib/**/*.rb',
|
61
|
+
]
|
62
|
+
|
63
|
+
s.files = patterns.map {|p| Dir.glob(p) }.flatten
|
64
|
+
|
65
|
+
s.test_files = Dir.glob('test/**/*.rb')
|
66
|
+
|
67
|
+
s.require_paths = ['lib']
|
68
|
+
end
|
69
|
+
|
70
|
+
Rake::GemPackageTask.new(spec) do |pkg|
|
71
|
+
pkg.need_zip = true
|
72
|
+
pkg.need_tar = true
|
73
|
+
end
|
data/TODO
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
The parts that need to be implemented, to be sorted by release and importance of feature
|
2
|
+
|
3
|
+
* Proper handling of all possible types, including pointers and references
|
4
|
+
* Removing nodes from the tree (#remove)
|
5
|
+
* Proper handling of inheritance searching
|
6
|
+
|
7
|
+
* Template handling
|
8
|
+
|
9
|
+
Following GCCXML types
|
10
|
+
|
11
|
+
* ReferenceType
|
12
|
+
* CvQualifiedType
|
13
|
+
* Field
|
14
|
+
* Destructor
|
15
|
+
* Variable
|
16
|
+
* OperatorFunction
|
17
|
+
|
18
|
+
Done:
|
19
|
+
|
20
|
+
* Searching functions by return type
|
21
|
+
* Searching functions by argument type(s)
|
22
|
+
* :args => [nil, "int", nil] # => 3 arguments, 2nd is an int the other two can be anything
|
23
|
+
* Name searching of namespaces / classes / functions by regex
|
24
|
+
|
25
|
+
* Constructor
|
26
|
+
* FundamentalType
|
27
|
+
*? File
|
28
|
+
* Function::Argument
|
29
|
+
* Struct
|
30
|
+
* PointerType
|
31
|
+
* Typedef
|
data/lib/jamis.rb
ADDED
@@ -0,0 +1,589 @@
|
|
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
|
+
(<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
|
+
(<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> </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
|
+
[ <a href="%codeurl%" target="SOURCE_CODE" onclick="javascript:openCode('%codeurl%'); return false;">source</a> ]
|
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
|
589
|
+
|