hanna-nouveau 1.0.2 → 1.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/LICENSE +1 -0
- data/README.rdoc +5 -9
- data/Rakefile +3 -2
- data/VERSION +1 -1
- data/lib/hanna-nouveau/template_files/class_index.erb +4 -0
- data/lib/hanna-nouveau/template_files/file_index.erb +9 -0
- data/lib/hanna-nouveau/template_files/index.erb +15 -0
- data/lib/hanna-nouveau/template_files/layout.erb +34 -0
- data/lib/hanna-nouveau/template_files/method_index.erb +11 -0
- data/lib/hanna-nouveau/template_files/method_list.erb +58 -0
- data/lib/hanna-nouveau/template_files/method_search.js +41 -59
- data/lib/hanna-nouveau/template_files/page.erb +48 -0
- data/lib/hanna-nouveau/template_files/sections.erb +92 -0
- data/lib/hanna-nouveau/template_files/styles.css +347 -0
- data/lib/hanna-nouveau.rb +50 -48
- metadata +22 -49
- data/Gemfile +0 -3
- data/lib/hanna-nouveau/template_files/class_index.haml +0 -3
- data/lib/hanna-nouveau/template_files/file_index.haml +0 -12
- data/lib/hanna-nouveau/template_files/index.haml +0 -11
- data/lib/hanna-nouveau/template_files/layout.haml +0 -34
- data/lib/hanna-nouveau/template_files/method_index.haml +0 -13
- data/lib/hanna-nouveau/template_files/method_list.haml +0 -56
- data/lib/hanna-nouveau/template_files/page.haml +0 -48
- data/lib/hanna-nouveau/template_files/prototype-1.6.0.3.js +0 -4320
- data/lib/hanna-nouveau/template_files/sections.haml +0 -88
- data/lib/hanna-nouveau/template_files/styles.sass +0 -370
@@ -0,0 +1,347 @@
|
|
1
|
+
html, body {
|
2
|
+
height: 100%; }
|
3
|
+
|
4
|
+
body {
|
5
|
+
font-family: Lucida Grande, Verdana, Arial, Helvetica, sans-serif;
|
6
|
+
font-size: 90%;
|
7
|
+
margin: 0;
|
8
|
+
padding: 0;
|
9
|
+
background: white;
|
10
|
+
color: black; }
|
11
|
+
|
12
|
+
#wrapper {
|
13
|
+
min-height: 100%;
|
14
|
+
height: auto !important;
|
15
|
+
height: 100%;
|
16
|
+
margin: 0 auto -43px; }
|
17
|
+
|
18
|
+
#footer-push {
|
19
|
+
height: 43px; }
|
20
|
+
|
21
|
+
div.header, #footer {
|
22
|
+
background: #eeeeee; }
|
23
|
+
|
24
|
+
#footer {
|
25
|
+
border-top: 1px solid silver;
|
26
|
+
margin-top: 12px;
|
27
|
+
padding: 0 2em;
|
28
|
+
line-height: 30px;
|
29
|
+
text-align: center;
|
30
|
+
font-variant: small-caps;
|
31
|
+
font-size: 95%; }
|
32
|
+
|
33
|
+
.clearing:after {
|
34
|
+
content: ".";
|
35
|
+
visibility: hidden;
|
36
|
+
height: 0;
|
37
|
+
display: block;
|
38
|
+
clear: both; }
|
39
|
+
* html .clearing {
|
40
|
+
height: 1px; }
|
41
|
+
.clearing *:first-child + html {
|
42
|
+
overflow: hidden; }
|
43
|
+
|
44
|
+
h1, h2, h3, h4, h5, h6 {
|
45
|
+
margin: 0;
|
46
|
+
font-weight: normal; }
|
47
|
+
|
48
|
+
a {
|
49
|
+
color: #0b3e71; }
|
50
|
+
a:hover {
|
51
|
+
background: #336699;
|
52
|
+
text-decoration: none;
|
53
|
+
color: #eeeeff; }
|
54
|
+
|
55
|
+
#diagram img {
|
56
|
+
border: 0; }
|
57
|
+
|
58
|
+
#description a, .method .description a, .header a {
|
59
|
+
color: #336699; }
|
60
|
+
#description a:hover, .method .description a:hover, .header a:hover {
|
61
|
+
color: #eeeeee; }
|
62
|
+
#description h1 a, #description h2 a, #description h3 a, #description h4 a, #description h5 a, #description h6 a, .method .description h1 a, .method .description h2 a, .method .description h3 a, .method .description h4 a, .method .description h5 a, .method .description h6 a, .header h1 a, .header h2 a, .header h3 a, .header h4 a, .header h5 a, .header h6 a {
|
63
|
+
color: #0b3e71; }
|
64
|
+
|
65
|
+
ol {
|
66
|
+
margin: 0;
|
67
|
+
padding: 0;
|
68
|
+
list-style: none; }
|
69
|
+
ol li {
|
70
|
+
margin-left: 0;
|
71
|
+
white-space: nowrap; }
|
72
|
+
ol li.other {
|
73
|
+
display: none; }
|
74
|
+
|
75
|
+
ol.expanded li.other {
|
76
|
+
display: list-item; }
|
77
|
+
|
78
|
+
table {
|
79
|
+
margin-bottom: 1em;
|
80
|
+
font-size: 1em;
|
81
|
+
border-collapse: collapse; }
|
82
|
+
table td, table th {
|
83
|
+
padding: 0.4em 0.8em; }
|
84
|
+
table thead {
|
85
|
+
background-color: #e8e8e8; }
|
86
|
+
table thead th {
|
87
|
+
font-variant: small-caps;
|
88
|
+
color: #666666; }
|
89
|
+
table tr {
|
90
|
+
border-bottom: 1px solid silver; }
|
91
|
+
|
92
|
+
#index a.show, div.header a.show {
|
93
|
+
text-decoration: underline;
|
94
|
+
font-style: italic;
|
95
|
+
color: #666666; }
|
96
|
+
#index a.show:after, div.header a.show:after {
|
97
|
+
content: " ..."; }
|
98
|
+
#index a.show:hover, div.header a.show:hover {
|
99
|
+
color: black;
|
100
|
+
background: #ffffee; }
|
101
|
+
|
102
|
+
#index {
|
103
|
+
font: 85%/1.2 Arial, Helvetica, sans-serif; }
|
104
|
+
#index a {
|
105
|
+
text-decoration: none; }
|
106
|
+
#index h1 {
|
107
|
+
padding: 0.2em 0.5em 0.1em;
|
108
|
+
background: #cccccc;
|
109
|
+
font: small-caps 1.2em Georgia, serif;
|
110
|
+
color: #333333;
|
111
|
+
border-bottom: 1px solid gray; }
|
112
|
+
#index form {
|
113
|
+
margin: 0;
|
114
|
+
padding: 0; }
|
115
|
+
#index form input {
|
116
|
+
margin: 0.4em 3px 0 0.4em;
|
117
|
+
width: 80%; }
|
118
|
+
#index form #search.untouched {
|
119
|
+
color: #777777; }
|
120
|
+
#index form .clear_button {
|
121
|
+
-moz-border-radius: 7px;
|
122
|
+
-webkit-border-radius: 7px;
|
123
|
+
background: #aaaaaa;
|
124
|
+
color: white;
|
125
|
+
padding: 0 5px 1px 5px;
|
126
|
+
cursor: pointer; }
|
127
|
+
#index ol {
|
128
|
+
padding: 0.4em 0.5em; }
|
129
|
+
#index ol li {
|
130
|
+
white-space: nowrap; }
|
131
|
+
#index #index-entries li.hide {
|
132
|
+
display: none; }
|
133
|
+
#index #index-entries.all li.hide {
|
134
|
+
display: block; }
|
135
|
+
#index #index-entries li a {
|
136
|
+
padding: 1px 2px; }
|
137
|
+
#index #index-entries.classes {
|
138
|
+
font-size: 1.1em; }
|
139
|
+
#index #index-entries.classes ol {
|
140
|
+
padding: 0; }
|
141
|
+
#index #index-entries.classes span.nodoc {
|
142
|
+
display: none; }
|
143
|
+
#index #index-entries.classes span.nodoc, #index #index-entries.classes a {
|
144
|
+
font-weight: bold; }
|
145
|
+
#index #index-entries.classes .parent {
|
146
|
+
font-weight: normal; }
|
147
|
+
#index #index-entries.methods li, #index #search-results.methods li {
|
148
|
+
margin-bottom: 0.2em; }
|
149
|
+
#index #index-entries.methods li a .method_name, #index #search-results.methods li a .method_name {
|
150
|
+
margin-right: 0.25em; }
|
151
|
+
#index #index-entries.methods li a .module_name, #index #search-results.methods li a .module_name {
|
152
|
+
color: #666666; }
|
153
|
+
#index #index-entries.methods li a:hover .module_name, #index #search-results.methods li a:hover .module_name {
|
154
|
+
color: #dddddd; }
|
155
|
+
|
156
|
+
#attribute-list .context-item-name {
|
157
|
+
font-weight: bold; }
|
158
|
+
|
159
|
+
div.header {
|
160
|
+
font-size: 80%;
|
161
|
+
padding: 0.5em 2%;
|
162
|
+
font-family: Arial, Helvetica, sans-serif;
|
163
|
+
border-bottom: 1px solid silver; }
|
164
|
+
div.header .name {
|
165
|
+
font-size: 1.6em;
|
166
|
+
font-family: Georgia, serif; }
|
167
|
+
div.header .name .type {
|
168
|
+
color: #666666;
|
169
|
+
font-size: 80%;
|
170
|
+
font-variant: small-caps; }
|
171
|
+
div.header h1.name {
|
172
|
+
font-size: 2.2em; }
|
173
|
+
div.header .paths, div.header .last-update, div.header .parent {
|
174
|
+
color: #666666; }
|
175
|
+
div.header .last-update .datetime {
|
176
|
+
color: #484848; }
|
177
|
+
div.header .parent {
|
178
|
+
margin-top: 0.3em; }
|
179
|
+
div.header .parent strong {
|
180
|
+
font-weight: normal;
|
181
|
+
color: #484848; }
|
182
|
+
|
183
|
+
#content {
|
184
|
+
padding: 12px 2%; }
|
185
|
+
div.class #content {
|
186
|
+
position: relative;
|
187
|
+
width: 72%; }
|
188
|
+
#content pre, #content .method .synopsis {
|
189
|
+
font: 14px Monaco, DejaVu Sans Mono, Bitstream Vera Sans Mono, Courier New, monospace; }
|
190
|
+
#content pre {
|
191
|
+
color: black;
|
192
|
+
background: #eeeeee;
|
193
|
+
border: 1px solid silver;
|
194
|
+
padding: 0.5em 0.8em;
|
195
|
+
overflow: auto; }
|
196
|
+
#content p code, #content p tt, #content li code, #content li tt, #content dl code, #content dl tt {
|
197
|
+
font: 14px Monaco, DejaVu Sans Mono, Bitstream Vera Sans Mono, Courier New, monospace;
|
198
|
+
background: #ffffe3;
|
199
|
+
padding: 2px 3px;
|
200
|
+
line-height: 1.4; }
|
201
|
+
#content h1 code, #content h1 tt, #content h2 code, #content h2 tt, #content h3 code, #content h3 tt, #content h4 code, #content h4 tt, #content h5 code, #content h5 tt, #content h6 code, #content h6 tt {
|
202
|
+
font-size: 1.1em; }
|
203
|
+
#content #text {
|
204
|
+
position: relative; }
|
205
|
+
#content #description p {
|
206
|
+
margin-top: 0.5em; }
|
207
|
+
#content #description h1, #content #description h2, #content #description h3, #content #description h4, #content #description h5, #content #description h6 {
|
208
|
+
font-family: Georgia, serif; }
|
209
|
+
#content #description h1 {
|
210
|
+
font-size: 2.2em;
|
211
|
+
margin-bottom: 0.2em;
|
212
|
+
border-bottom: 3px double #d8d8d8;
|
213
|
+
padding-bottom: 0.1em; }
|
214
|
+
#content #description h2 {
|
215
|
+
font-size: 1.8em;
|
216
|
+
color: #0e3062;
|
217
|
+
margin: 0.8em 0 0.3em 0; }
|
218
|
+
#content #description h3 {
|
219
|
+
font-size: 1.6em;
|
220
|
+
margin: 0.8em 0 0.3em 0;
|
221
|
+
color: #666666; }
|
222
|
+
#content #description h4 {
|
223
|
+
font-size: 1.4em;
|
224
|
+
margin: 0.8em 0 0.3em 0; }
|
225
|
+
#content #description h5 {
|
226
|
+
font-size: 1.2em;
|
227
|
+
margin: 0.8em 0 0.3em 0;
|
228
|
+
color: #0e3062; }
|
229
|
+
#content #description h6 {
|
230
|
+
font-size: 1em;
|
231
|
+
margin: 0.8em 0 0.3em 0;
|
232
|
+
color: #666666; }
|
233
|
+
#content #description ul, #content #description ol, #content .method .description ul, #content .method .description ol {
|
234
|
+
margin: 0.8em 0;
|
235
|
+
padding-left: 1.5em; }
|
236
|
+
#content #description ol, #content .method .description ol {
|
237
|
+
list-style: decimal; }
|
238
|
+
#content #description ol li, #content .method .description ol li {
|
239
|
+
white-space: normal; }
|
240
|
+
#content table.rdoc-list {
|
241
|
+
border-collapse: collapse;
|
242
|
+
border-spacing: 0; }
|
243
|
+
#content table.rdoc-list tr {
|
244
|
+
background-color: white; }
|
245
|
+
#content table.rdoc-list tr:nth-child(2n) {
|
246
|
+
background-color: #f8f8f8; }
|
247
|
+
#content table.rdoc-list td.label {
|
248
|
+
font-weight: bold; }
|
249
|
+
#content table.rdoc-list td {
|
250
|
+
border: 1px solid #ddd;
|
251
|
+
padding: 6px 13px; }
|
252
|
+
|
253
|
+
#method-list {
|
254
|
+
position: absolute;
|
255
|
+
top: 0px;
|
256
|
+
right: -33%;
|
257
|
+
width: 28%;
|
258
|
+
background: #eeeeee;
|
259
|
+
border: 1px solid silver;
|
260
|
+
padding: 0.4em 1%;
|
261
|
+
overflow: hidden; }
|
262
|
+
#method-list h2 {
|
263
|
+
font-size: 1.3em; }
|
264
|
+
#method-list h3 {
|
265
|
+
font-variant: small-caps;
|
266
|
+
text-transform: capitalize;
|
267
|
+
font-family: Georgia, serif;
|
268
|
+
color: #666666;
|
269
|
+
font-size: 1.1em; }
|
270
|
+
#method-list ol {
|
271
|
+
padding: 0 0 0.5em 0.5em; }
|
272
|
+
|
273
|
+
#context {
|
274
|
+
border-top: 1px dashed silver;
|
275
|
+
margin-top: 1em;
|
276
|
+
margin-bottom: 1em; }
|
277
|
+
|
278
|
+
#context h2, #section h2 {
|
279
|
+
font: small-caps 1.2em Georgia, serif;
|
280
|
+
color: #444444;
|
281
|
+
margin: 1em 0 0.2em 0; }
|
282
|
+
|
283
|
+
#methods .method {
|
284
|
+
border: 1px solid silver;
|
285
|
+
margin-top: 0.5em;
|
286
|
+
background: #eeeeee; }
|
287
|
+
#methods .method .synopsis {
|
288
|
+
color: black;
|
289
|
+
background: silver;
|
290
|
+
padding: 0.2em 1em; }
|
291
|
+
#methods .method .synopsis .name {
|
292
|
+
font-weight: bold; }
|
293
|
+
#methods .method .synopsis a {
|
294
|
+
text-decoration: none; }
|
295
|
+
#methods .method .description {
|
296
|
+
padding: 0 1em; }
|
297
|
+
#methods .method .description pre {
|
298
|
+
background: #f8f8f8; }
|
299
|
+
#methods .method .source {
|
300
|
+
margin: 0.5em 0; }
|
301
|
+
#methods .method .source-toggle {
|
302
|
+
font-size: 85%;
|
303
|
+
margin-left: 1em; }
|
304
|
+
#methods .public-class {
|
305
|
+
background: #ffffe4; }
|
306
|
+
#methods .public-instance .synopsis {
|
307
|
+
color: #eeeeee;
|
308
|
+
background: #336699; }
|
309
|
+
|
310
|
+
#content .method .source pre, #content pre.ruby, #methods .method .description pre.ruby {
|
311
|
+
background: #262626;
|
312
|
+
color: #ffdead;
|
313
|
+
margin: 1em;
|
314
|
+
padding: 0.5em;
|
315
|
+
border: 1px dashed #999999;
|
316
|
+
overflow: auto; }
|
317
|
+
#content .method .source pre .ruby-constant, #content pre.ruby .ruby-constant, #methods .method .description pre.ruby .ruby-constant {
|
318
|
+
color: #7fffd4;
|
319
|
+
background: transparent; }
|
320
|
+
#content .method .source pre .ruby-keyword, #content pre.ruby .ruby-keyword, #methods .method .description pre.ruby .ruby-keyword {
|
321
|
+
color: aqua;
|
322
|
+
background: transparent; }
|
323
|
+
#content .method .source pre .ruby-ivar, #content pre.ruby .ruby-ivar, #methods .method .description pre.ruby .ruby-ivar {
|
324
|
+
color: #eedd82;
|
325
|
+
background: transparent; }
|
326
|
+
#content .method .source pre .ruby-operator, #content pre.ruby .ruby-operator, #methods .method .description pre.ruby .ruby-operator {
|
327
|
+
color: #00ffee;
|
328
|
+
background: transparent; }
|
329
|
+
#content .method .source pre .ruby-identifier, #content pre.ruby .ruby-identifier, #methods .method .description pre.ruby .ruby-identifier {
|
330
|
+
color: #ffdead;
|
331
|
+
background: transparent; }
|
332
|
+
#content .method .source pre .ruby-string, #content pre.ruby .ruby-string, #methods .method .description pre.ruby .ruby-string {
|
333
|
+
color: #faa;
|
334
|
+
background: transparent; }
|
335
|
+
#content .method .source pre .ruby-node, #content pre.ruby .ruby-node, #methods .method .description pre.ruby .ruby-node {
|
336
|
+
color: #ffa07a;
|
337
|
+
background: transparent; }
|
338
|
+
#content .method .source pre .ruby-comment, #content pre.ruby .ruby-comment, #methods .method .description pre.ruby .ruby-comment {
|
339
|
+
color: #fdf;
|
340
|
+
font-weight: bold;
|
341
|
+
background: transparent; }
|
342
|
+
#content .method .source pre .ruby-regexp, #content pre.ruby .ruby-regexp, #methods .method .description pre.ruby .ruby-regexp {
|
343
|
+
color: #ffa07a;
|
344
|
+
background: transparent; }
|
345
|
+
#content .method .source pre .ruby-value, #content pre.ruby .ruby-value, #methods .method .description pre.ruby .ruby-value {
|
346
|
+
color: #7fffd4;
|
347
|
+
background: transparent; }
|
data/lib/hanna-nouveau.rb
CHANGED
@@ -12,15 +12,15 @@
|
|
12
12
|
# Michael Granger <ged@FaerieMUD.org>, who had maintained the original RDoc template
|
13
13
|
|
14
14
|
require 'pathname'
|
15
|
-
require '
|
16
|
-
require '
|
17
|
-
require 'rdoc/rdoc'
|
15
|
+
require 'erb'
|
16
|
+
require 'rdoc/rdoc' unless defined?(RDoc::Markup::ToHtml)
|
18
17
|
require 'rdoc/generator'
|
19
18
|
|
20
19
|
class RDoc::Markup::ToHtml
|
21
20
|
LIST_TYPE_TO_HTML[:LABEL] = ['<table class="rdoc-list label-list"><tbody>', '</tbody></table>']
|
22
21
|
LIST_TYPE_TO_HTML[:NOTE] = ['<table class="rdoc-list note-list"><tbody>', '</tbody></table>']
|
23
22
|
|
23
|
+
alias list_item_start list_item_start
|
24
24
|
def list_item_start(list_item, list_type)
|
25
25
|
case list_type
|
26
26
|
when :BULLET, :LALPHA, :NUMBER, :UALPHA then
|
@@ -32,6 +32,7 @@ class RDoc::Markup::ToHtml
|
|
32
32
|
end
|
33
33
|
end
|
34
34
|
|
35
|
+
alias list_end_for list_end_for
|
35
36
|
def list_end_for(list_type)
|
36
37
|
case list_type
|
37
38
|
when :BULLET, :LALPHA, :NUMBER, :UALPHA then
|
@@ -45,18 +46,18 @@ class RDoc::Markup::ToHtml
|
|
45
46
|
end
|
46
47
|
|
47
48
|
class RDoc::Generator::Hanna
|
48
|
-
STYLE = 'styles.
|
49
|
-
LAYOUT = 'layout.
|
49
|
+
STYLE = 'styles.css'
|
50
|
+
LAYOUT = 'layout.erb'
|
50
51
|
|
51
|
-
INDEX_PAGE = 'index.
|
52
|
-
CLASS_PAGE = 'page.
|
53
|
-
METHOD_LIST_PAGE = 'method_list.
|
52
|
+
INDEX_PAGE = 'index.erb'
|
53
|
+
CLASS_PAGE = 'page.erb'
|
54
|
+
METHOD_LIST_PAGE = 'method_list.erb'
|
54
55
|
FILE_PAGE = CLASS_PAGE
|
55
|
-
SECTIONS_PAGE = 'sections.
|
56
|
+
SECTIONS_PAGE = 'sections.erb'
|
56
57
|
|
57
|
-
FILE_INDEX = 'file_index.
|
58
|
-
CLASS_INDEX = 'class_index.
|
59
|
-
METHOD_INDEX = 'method_index.
|
58
|
+
FILE_INDEX = 'file_index.erb'
|
59
|
+
CLASS_INDEX = 'class_index.erb'
|
60
|
+
METHOD_INDEX = 'method_index.erb'
|
60
61
|
|
61
62
|
CLASS_DIR = 'classes'
|
62
63
|
FILE_DIR = 'files'
|
@@ -67,7 +68,9 @@ class RDoc::Generator::Hanna
|
|
67
68
|
METHOD_INDEX_OUT = 'fr_method_index.html'
|
68
69
|
STYLE_OUT = File.join('css', 'style.css')
|
69
70
|
|
70
|
-
|
71
|
+
METHOD_SEARCH_JS = "method_search.js"
|
72
|
+
|
73
|
+
DESCRIPTION = 'RDoc generator designed with simplicity, beauty and ease of browsing in mind'
|
71
74
|
|
72
75
|
# EPIC CUT AND PASTE TIEM NAO -- GG
|
73
76
|
RDoc::RDoc.add_generator( self )
|
@@ -116,17 +119,19 @@ class RDoc::Generator::Hanna
|
|
116
119
|
FileUtils.mkdir css_dir
|
117
120
|
end
|
118
121
|
|
119
|
-
File.
|
122
|
+
File.binwrite(File.join(css_dir, 'style.css'), File.read(templjoin(STYLE)))
|
120
123
|
end
|
121
124
|
|
122
125
|
# FIXME refactor
|
123
126
|
def generate_indexes
|
124
127
|
@main_page_uri = @files.find { |f| f.name == @options.main_page }.path rescue ''
|
125
|
-
File.
|
128
|
+
File.binwrite(outjoin(INDEX_OUT), erb_template(templjoin(INDEX_PAGE)).to_html(binding))
|
126
129
|
|
127
130
|
generate_index(FILE_INDEX_OUT, FILE_INDEX, 'File', { :files => @files})
|
128
131
|
generate_index(CLASS_INDEX_OUT, CLASS_INDEX, 'Class', { :classes => @classes })
|
129
132
|
generate_index(METHOD_INDEX_OUT, METHOD_INDEX, 'Method', { :methods => @methods, :attributes => @attributes })
|
133
|
+
|
134
|
+
File.binwrite(outjoin(METHOD_SEARCH_JS), File.binread(templjoin(METHOD_SEARCH_JS)))
|
130
135
|
end
|
131
136
|
|
132
137
|
def generate_index(outfile, templfile, index_name, values)
|
@@ -135,18 +140,14 @@ class RDoc::Generator::Hanna
|
|
135
140
|
:list_title => "#{index_name} Index"
|
136
141
|
})
|
137
142
|
|
138
|
-
index =
|
143
|
+
index = erb_template(templjoin(templfile))
|
139
144
|
|
140
|
-
File.
|
141
|
-
f << with_layout(values) do
|
142
|
-
index.to_html(binding, values)
|
143
|
-
end
|
144
|
-
end
|
145
|
+
File.binwrite(outjoin(outfile), with_layout(values){index.to_html(binding, values)})
|
145
146
|
end
|
146
147
|
|
147
148
|
def generate_file_files
|
148
|
-
file_page =
|
149
|
-
method_list_page =
|
149
|
+
file_page = erb_template(templjoin(FILE_PAGE))
|
150
|
+
method_list_page = erb_template(templjoin(METHOD_LIST_PAGE))
|
150
151
|
|
151
152
|
# FIXME non-Ruby files
|
152
153
|
@files.each do |file|
|
@@ -175,14 +176,14 @@ class RDoc::Generator::Hanna
|
|
175
176
|
FileUtils.mkdir_p dir
|
176
177
|
end
|
177
178
|
|
178
|
-
File.
|
179
|
+
File.binwrite(outjoin(file.path), result)
|
179
180
|
end
|
180
181
|
end
|
181
182
|
|
182
183
|
def generate_class_files
|
183
|
-
class_page =
|
184
|
-
method_list_page =
|
185
|
-
sections_page =
|
184
|
+
class_page = erb_template(templjoin(CLASS_PAGE))
|
185
|
+
method_list_page = erb_template(templjoin(METHOD_LIST_PAGE))
|
186
|
+
sections_page = erb_template(templjoin(SECTIONS_PAGE))
|
186
187
|
# FIXME refactor
|
187
188
|
|
188
189
|
@classes.each do |klass|
|
@@ -226,12 +227,12 @@ class RDoc::Generator::Hanna
|
|
226
227
|
FileUtils.mkdir_p dir
|
227
228
|
end
|
228
229
|
|
229
|
-
File.
|
230
|
+
File.binwrite(outfile, result)
|
230
231
|
end
|
231
232
|
end
|
232
233
|
|
233
234
|
def with_layout(values)
|
234
|
-
layout =
|
235
|
+
layout = erb_template(templjoin(LAYOUT))
|
235
236
|
layout.to_html(binding, :values => values) { yield }
|
236
237
|
end
|
237
238
|
|
@@ -264,7 +265,7 @@ class RDoc::Generator::Hanna
|
|
264
265
|
end
|
265
266
|
|
266
267
|
def h(html)
|
267
|
-
CGI::escapeHTML(html)
|
268
|
+
CGI::escapeHTML(html.to_s)
|
268
269
|
end
|
269
270
|
|
270
271
|
# XXX may my sins be not visited upon my sons.
|
@@ -297,21 +298,6 @@ class RDoc::Generator::Hanna
|
|
297
298
|
end
|
298
299
|
end
|
299
300
|
|
300
|
-
def build_javascript_search_index(entries)
|
301
|
-
result = "var search_index = [\n"
|
302
|
-
entries.each do |entry|
|
303
|
-
method_name = entry.name
|
304
|
-
module_name = entry.parent_name
|
305
|
-
# FIXME link
|
306
|
-
html = link_to_method(entry, [classfile(entry.parent), (entry.aref rescue "method-#{entry.html_name}")].join('#'))
|
307
|
-
result << " { method: '#{method_name.downcase}', " +
|
308
|
-
"module: '#{module_name.downcase}', " +
|
309
|
-
"html: '#{html}' },\n"
|
310
|
-
end
|
311
|
-
result << "]"
|
312
|
-
result
|
313
|
-
end
|
314
|
-
|
315
301
|
def link_to(text, url = nil, classname = nil)
|
316
302
|
class_attr = classname ? ' class="%s"' % classname : ''
|
317
303
|
|
@@ -328,7 +314,7 @@ class RDoc::Generator::Hanna
|
|
328
314
|
def link_to_method(entry, url = nil, classname = nil)
|
329
315
|
method_name = entry.pretty_name rescue entry.name
|
330
316
|
module_name = entry.parent_name rescue entry.name
|
331
|
-
link_to %Q(<span class="method_name">#{h method_name}</span> <span class="module_name">(#{h module_name})</span>), url, classname
|
317
|
+
link_to %Q(<span class="method_name" value="#{entry.name}">#{h method_name}</span> <span class="module_name">(#{h module_name})</span>), url, classname
|
332
318
|
end
|
333
319
|
|
334
320
|
def classfile(klass)
|
@@ -344,7 +330,23 @@ class RDoc::Generator::Hanna
|
|
344
330
|
File.join(@templatedir, name)
|
345
331
|
end
|
346
332
|
|
347
|
-
|
348
|
-
|
333
|
+
class ERB < ::ERB
|
334
|
+
def to_html(binding, values = nil, &block)
|
335
|
+
local_values = {}
|
336
|
+
binding.local_variables.each do |lv|
|
337
|
+
local_values[lv] = binding.local_variable_get(lv)
|
338
|
+
end
|
339
|
+
binding.local_variable_set(:values, values) if values
|
340
|
+
binding.local_variable_set(:block, block) if block
|
341
|
+
html = result(binding)
|
342
|
+
local_values.each do |lv, val|
|
343
|
+
binding.local_variable_set(lv, val)
|
344
|
+
end
|
345
|
+
html
|
346
|
+
end
|
347
|
+
end
|
348
|
+
|
349
|
+
def erb_template(file)
|
350
|
+
ERB.new(File.read(file))
|
349
351
|
end
|
350
352
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hanna-nouveau
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jeremy Evans
|
@@ -11,10 +11,10 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date:
|
14
|
+
date: 2021-12-23 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
|
-
name:
|
17
|
+
name: rdoc
|
18
18
|
requirement: !ruby/object:Gem::Requirement
|
19
19
|
requirements:
|
20
20
|
- - ">="
|
@@ -27,35 +27,8 @@ dependencies:
|
|
27
27
|
- - ">="
|
28
28
|
- !ruby/object:Gem::Version
|
29
29
|
version: '4'
|
30
|
-
|
31
|
-
|
32
|
-
requirement: !ruby/object:Gem::Requirement
|
33
|
-
requirements:
|
34
|
-
- - ">="
|
35
|
-
- !ruby/object:Gem::Version
|
36
|
-
version: '0'
|
37
|
-
type: :runtime
|
38
|
-
prerelease: false
|
39
|
-
version_requirements: !ruby/object:Gem::Requirement
|
40
|
-
requirements:
|
41
|
-
- - ">="
|
42
|
-
- !ruby/object:Gem::Version
|
43
|
-
version: '0'
|
44
|
-
- !ruby/object:Gem::Dependency
|
45
|
-
name: rdoc
|
46
|
-
requirement: !ruby/object:Gem::Requirement
|
47
|
-
requirements:
|
48
|
-
- - ">="
|
49
|
-
- !ruby/object:Gem::Version
|
50
|
-
version: '4.0'
|
51
|
-
type: :runtime
|
52
|
-
prerelease: false
|
53
|
-
version_requirements: !ruby/object:Gem::Requirement
|
54
|
-
requirements:
|
55
|
-
- - ">="
|
56
|
-
- !ruby/object:Gem::Version
|
57
|
-
version: '4.0'
|
58
|
-
description: ''
|
30
|
+
description: RDoc generator designed with simplicity, beauty and ease of browsing
|
31
|
+
in mind
|
59
32
|
email: code@jeremyevans.net
|
60
33
|
executables: []
|
61
34
|
extensions: []
|
@@ -63,28 +36,29 @@ extra_rdoc_files:
|
|
63
36
|
- LICENSE
|
64
37
|
- README.rdoc
|
65
38
|
files:
|
66
|
-
- Gemfile
|
67
39
|
- LICENSE
|
68
40
|
- README.rdoc
|
69
41
|
- Rakefile
|
70
42
|
- VERSION
|
71
43
|
- lib/hanna-nouveau.rb
|
72
|
-
- lib/hanna-nouveau/template_files/class_index.
|
73
|
-
- lib/hanna-nouveau/template_files/file_index.
|
74
|
-
- lib/hanna-nouveau/template_files/index.
|
75
|
-
- lib/hanna-nouveau/template_files/layout.
|
76
|
-
- lib/hanna-nouveau/template_files/method_index.
|
77
|
-
- lib/hanna-nouveau/template_files/method_list.
|
44
|
+
- lib/hanna-nouveau/template_files/class_index.erb
|
45
|
+
- lib/hanna-nouveau/template_files/file_index.erb
|
46
|
+
- lib/hanna-nouveau/template_files/index.erb
|
47
|
+
- lib/hanna-nouveau/template_files/layout.erb
|
48
|
+
- lib/hanna-nouveau/template_files/method_index.erb
|
49
|
+
- lib/hanna-nouveau/template_files/method_list.erb
|
78
50
|
- lib/hanna-nouveau/template_files/method_search.js
|
79
|
-
- lib/hanna-nouveau/template_files/page.
|
80
|
-
- lib/hanna-nouveau/template_files/
|
81
|
-
- lib/hanna-nouveau/template_files/
|
82
|
-
- lib/hanna-nouveau/template_files/styles.sass
|
51
|
+
- lib/hanna-nouveau/template_files/page.erb
|
52
|
+
- lib/hanna-nouveau/template_files/sections.erb
|
53
|
+
- lib/hanna-nouveau/template_files/styles.css
|
83
54
|
- lib/rdoc/discover.rb
|
84
|
-
homepage: https://github.com/
|
55
|
+
homepage: https://github.com/jeremyevans/hanna-nouveau
|
85
56
|
licenses:
|
86
57
|
- MIT
|
87
|
-
metadata:
|
58
|
+
metadata:
|
59
|
+
bug_tracker_uri: https://github.com/jeremyevans/hanna-nouveau/issues
|
60
|
+
mailing_list_uri: https://github.com/jeremyevans/hanna-nouveau/discussions
|
61
|
+
source_code_uri: https://github.com/jeremyevans/hanna-nouveau
|
88
62
|
post_install_message:
|
89
63
|
rdoc_options: []
|
90
64
|
require_paths:
|
@@ -93,16 +67,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
93
67
|
requirements:
|
94
68
|
- - ">="
|
95
69
|
- !ruby/object:Gem::Version
|
96
|
-
version:
|
70
|
+
version: 1.9.2
|
97
71
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
98
72
|
requirements:
|
99
73
|
- - ">="
|
100
74
|
- !ruby/object:Gem::Version
|
101
75
|
version: '0'
|
102
76
|
requirements: []
|
103
|
-
|
104
|
-
rubygems_version: 2.6.11
|
77
|
+
rubygems_version: 3.2.32
|
105
78
|
signing_key:
|
106
79
|
specification_version: 4
|
107
|
-
summary:
|
80
|
+
summary: RDoc generator designed with simplicity, beauty and ease of browsing in mind
|
108
81
|
test_files: []
|
data/Gemfile
DELETED
@@ -1,12 +0,0 @@
|
|
1
|
-
%h1= values[:list_title]
|
2
|
-
- any_hidden = false
|
3
|
-
|
4
|
-
%ol#index-entries{ :class => 'files' }
|
5
|
-
- values[:files].each do |file|
|
6
|
-
- hide = file.name =~ /\.rb$/
|
7
|
-
- any_hidden = true if hide
|
8
|
-
%li{ :class => hide ? 'other' : nil }= link_to file.name, file.path
|
9
|
-
|
10
|
-
- if any_hidden
|
11
|
-
%li
|
12
|
-
%a.show{ :href => '#', :onclick => 'this.parentNode.parentNode.className += " expanded"; this.parentNode.removeChild(this); return false' } show all
|