hanna-nouveau 1.4.0 → 1.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/hanna-nouveau.rb +1 -300
- data/lib/rdoc/discover.rb +1 -1
- metadata +11 -59
- data/CHANGELOG +0 -109
- data/LICENSE +0 -20
- data/README.rdoc +0 -63
- data/lib/hanna-nouveau/template_files/class_index.erb +0 -4
- data/lib/hanna-nouveau/template_files/file_index.erb +0 -9
- data/lib/hanna-nouveau/template_files/index.erb +0 -15
- data/lib/hanna-nouveau/template_files/layout.erb +0 -35
- data/lib/hanna-nouveau/template_files/method_index.erb +0 -11
- data/lib/hanna-nouveau/template_files/method_list.erb +0 -58
- data/lib/hanna-nouveau/template_files/method_search.js +0 -45
- data/lib/hanna-nouveau/template_files/page.erb +0 -48
- data/lib/hanna-nouveau/template_files/sections.erb +0 -92
- data/lib/hanna-nouveau/template_files/styles.css +0 -368
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 54497bac5426465da4abdbebdf20ec3013f62fb9748cc1af78444cb534a5b48b
|
4
|
+
data.tar.gz: 509cb544f7b3795c56c7da4356794d52e2959cedb763cda6b2d31d38f6e4d33d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5ea89935bf112288288377a09e56e648f495877c4b49133937ae7f963204855a4774fead5b25ea9cc56f80781ec7c0fa2ed89e2fb0e37ecdb97cec4650463c16
|
7
|
+
data.tar.gz: 1cc75c4a3af790c98d84063c3956f03943d9dda0e7ebd78c3e380b1820755c964da299a0e8a1bfd1b5ed919346f01456a83cc98a93222883cfaaf0c29a86f3a2
|
data/lib/hanna-nouveau.rb
CHANGED
@@ -1,300 +1 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
# = A better RDoc HTML template
|
4
|
-
|
5
|
-
require 'pathname'
|
6
|
-
require 'erb'
|
7
|
-
# :nocov:
|
8
|
-
require 'rdoc/rdoc' unless defined?(RDoc::Markup::ToHtml)
|
9
|
-
# :nocov:
|
10
|
-
require 'rdoc/generator'
|
11
|
-
|
12
|
-
# Hanna version of RDoc::Generator
|
13
|
-
class RDoc::Generator::Hanna
|
14
|
-
STYLE = 'styles.css'
|
15
|
-
LAYOUT = 'layout.erb'
|
16
|
-
|
17
|
-
INDEX_PAGE = 'index.erb'
|
18
|
-
CLASS_PAGE = 'page.erb'
|
19
|
-
METHOD_LIST_PAGE = 'method_list.erb'
|
20
|
-
FILE_PAGE = CLASS_PAGE
|
21
|
-
SECTIONS_PAGE = 'sections.erb'
|
22
|
-
|
23
|
-
FILE_INDEX = 'file_index.erb'
|
24
|
-
CLASS_INDEX = 'class_index.erb'
|
25
|
-
METHOD_INDEX = 'method_index.erb'
|
26
|
-
|
27
|
-
CLASS_DIR = 'classes'
|
28
|
-
FILE_DIR = 'files'
|
29
|
-
|
30
|
-
INDEX_OUT = 'index.html'
|
31
|
-
FILE_INDEX_OUT = 'fr_file_index.html'
|
32
|
-
CLASS_INDEX_OUT = 'fr_class_index.html'
|
33
|
-
METHOD_INDEX_OUT = 'fr_method_index.html'
|
34
|
-
STYLE_OUT = File.join('css', 'style.css')
|
35
|
-
|
36
|
-
METHOD_SEARCH_JS = "method_search.js"
|
37
|
-
|
38
|
-
DESCRIPTION = 'RDoc generator designed with simplicity, beauty and ease of browsing in mind'
|
39
|
-
|
40
|
-
RDoc::RDoc.add_generator( self )
|
41
|
-
|
42
|
-
class << self
|
43
|
-
alias for new
|
44
|
-
end
|
45
|
-
|
46
|
-
def initialize( store, options )
|
47
|
-
@options = options
|
48
|
-
@store = store
|
49
|
-
|
50
|
-
@templatedir = Pathname.new File.expand_path('../hanna-nouveau/template_files', __FILE__)
|
51
|
-
|
52
|
-
@files = nil
|
53
|
-
@classes = nil
|
54
|
-
@methods = nil
|
55
|
-
@attributes = nil
|
56
|
-
|
57
|
-
@basedir = Pathname.pwd.expand_path
|
58
|
-
end
|
59
|
-
|
60
|
-
def generate
|
61
|
-
@outputdir = Pathname.new( @options.op_dir ).expand_path( @basedir )
|
62
|
-
|
63
|
-
@files = @store.all_files.sort
|
64
|
-
@classes = @store.all_classes_and_modules.sort
|
65
|
-
@methods = @classes.map {|m| m.method_list }.flatten.sort
|
66
|
-
@attributes = @classes.map(&:attributes).flatten.sort
|
67
|
-
|
68
|
-
# Now actually write the output
|
69
|
-
write_static_files
|
70
|
-
generate_indexes
|
71
|
-
generate_class_files
|
72
|
-
generate_file_files
|
73
|
-
end
|
74
|
-
|
75
|
-
def write_static_files
|
76
|
-
css_dir = outjoin('css')
|
77
|
-
FileUtils.mkdir_p css_dir
|
78
|
-
File.binwrite(File.join(css_dir, 'style.css'), File.read(templjoin(STYLE)))
|
79
|
-
end
|
80
|
-
|
81
|
-
def generate_indexes
|
82
|
-
@main_page_uri = @files.find { |f| f.name == @options.main_page }.path rescue ''
|
83
|
-
File.binwrite(outjoin(INDEX_OUT), erb_template(templjoin(INDEX_PAGE)).to_html(binding))
|
84
|
-
|
85
|
-
generate_index(FILE_INDEX_OUT, FILE_INDEX, 'File', { :files => @files})
|
86
|
-
generate_index(CLASS_INDEX_OUT, CLASS_INDEX, 'Class', { :classes => @classes })
|
87
|
-
generate_index(METHOD_INDEX_OUT, METHOD_INDEX, 'Method', { :methods => @methods, :attributes => @attributes })
|
88
|
-
|
89
|
-
File.binwrite(outjoin(METHOD_SEARCH_JS), File.binread(templjoin(METHOD_SEARCH_JS)))
|
90
|
-
end
|
91
|
-
|
92
|
-
def generate_index(outfile, templfile, index_name, values)
|
93
|
-
values.merge!({
|
94
|
-
:stylesheet => STYLE_OUT,
|
95
|
-
:list_title => "#{index_name} Index"
|
96
|
-
})
|
97
|
-
|
98
|
-
index = erb_template(templjoin(templfile))
|
99
|
-
|
100
|
-
File.binwrite(outjoin(outfile), with_layout(values){index.to_html(binding, values)})
|
101
|
-
end
|
102
|
-
|
103
|
-
def generate_file_files
|
104
|
-
file_page = erb_template(templjoin(FILE_PAGE))
|
105
|
-
method_list_page = erb_template(templjoin(METHOD_LIST_PAGE))
|
106
|
-
|
107
|
-
@files.each do |file|
|
108
|
-
path = Pathname.new(file.path)
|
109
|
-
stylesheet = Pathname.new(STYLE_OUT).relative_path_from(path.dirname)
|
110
|
-
|
111
|
-
values = {
|
112
|
-
:file => file,
|
113
|
-
:entry => file,
|
114
|
-
:stylesheet => stylesheet,
|
115
|
-
:classmod => nil,
|
116
|
-
:title => file.base_name,
|
117
|
-
:list_title => nil,
|
118
|
-
:description => file.description
|
119
|
-
}
|
120
|
-
|
121
|
-
result = with_layout(values) do
|
122
|
-
file_page.to_html(binding, :values => values) do
|
123
|
-
method_list_page.to_html(binding, values)
|
124
|
-
end
|
125
|
-
end
|
126
|
-
|
127
|
-
dir = path.dirname
|
128
|
-
FileUtils.mkdir_p dir
|
129
|
-
File.binwrite(outjoin(file.path), result)
|
130
|
-
end
|
131
|
-
end
|
132
|
-
|
133
|
-
def generate_class_files
|
134
|
-
class_page = erb_template(templjoin(CLASS_PAGE))
|
135
|
-
method_list_page = erb_template(templjoin(METHOD_LIST_PAGE))
|
136
|
-
sections_page = erb_template(templjoin(SECTIONS_PAGE))
|
137
|
-
|
138
|
-
@classes.each do |klass|
|
139
|
-
outfile = classfile(klass)
|
140
|
-
stylesheet = Pathname.new(STYLE_OUT).relative_path_from(outfile.dirname)
|
141
|
-
sections = {}
|
142
|
-
klass.each_section do |section, constants, attributes|
|
143
|
-
method_types = []
|
144
|
-
alias_types = []
|
145
|
-
klass.methods_by_type(section).each do |type, visibilities|
|
146
|
-
visibilities.each do |visibility, methods|
|
147
|
-
aliases, methods = methods.partition{|x| x.is_alias_for}
|
148
|
-
method_types << ["#{visibility.to_s.capitalize} #{type.to_s.capitalize}", methods.sort] unless methods.empty?
|
149
|
-
alias_types << ["#{visibility.to_s.capitalize} #{type.to_s.capitalize}", aliases.sort] unless aliases.empty?
|
150
|
-
end
|
151
|
-
end
|
152
|
-
sections[section] = {:constants=>constants, :attributes=>attributes, :method_types=>method_types, :alias_types=>alias_types}
|
153
|
-
end
|
154
|
-
|
155
|
-
values = {
|
156
|
-
:file => klass.path,
|
157
|
-
:entry => klass,
|
158
|
-
:stylesheet => stylesheet,
|
159
|
-
:classmod => klass.type,
|
160
|
-
:title => klass.full_name,
|
161
|
-
:list_title => nil,
|
162
|
-
:description => klass.description,
|
163
|
-
:sections => sections
|
164
|
-
}
|
165
|
-
|
166
|
-
result = with_layout(values) do
|
167
|
-
h = {:values => values}
|
168
|
-
class_page.to_html(binding, h) do
|
169
|
-
method_list_page.to_html(binding, h) + sections_page.to_html(binding, h)
|
170
|
-
end
|
171
|
-
end
|
172
|
-
|
173
|
-
dir = outfile.dirname
|
174
|
-
FileUtils.mkdir_p dir
|
175
|
-
File.binwrite(outfile, result)
|
176
|
-
end
|
177
|
-
end
|
178
|
-
|
179
|
-
def with_layout(values)
|
180
|
-
layout = erb_template(templjoin(LAYOUT))
|
181
|
-
layout.to_html(binding, :values => values) { yield }
|
182
|
-
end
|
183
|
-
|
184
|
-
def frame_link(content)
|
185
|
-
content.gsub(%r!<a[ \n]href="https?://[^>]*>!).each do |tag|
|
186
|
-
a_tag, rest = tag.split(' ', 2)
|
187
|
-
rest.gsub!(/target="[^"]*"/, '')
|
188
|
-
a_tag + ' target="_top" ' + rest
|
189
|
-
end
|
190
|
-
end
|
191
|
-
|
192
|
-
def class_dir
|
193
|
-
CLASS_DIR
|
194
|
-
end
|
195
|
-
|
196
|
-
def file_dir
|
197
|
-
FILE_DIR
|
198
|
-
end
|
199
|
-
|
200
|
-
def h(html)
|
201
|
-
CGI::escapeHTML(html.to_s)
|
202
|
-
end
|
203
|
-
|
204
|
-
def render_class_tree(entries, prefix=nil, out=String.new)
|
205
|
-
namespaces = { }
|
206
|
-
|
207
|
-
entries.sort.each do |klass|
|
208
|
-
full_name = klass.full_name
|
209
|
-
next if namespaces[full_name]
|
210
|
-
|
211
|
-
class_prefix = "#{full_name}::"
|
212
|
-
subentries = @classes.select{|c| c.full_name.start_with?(class_prefix)}
|
213
|
-
subentries.each { |x| namespaces[x.full_name] = true }
|
214
|
-
|
215
|
-
text = prefix ? (prefix + klass.name) : klass.name
|
216
|
-
link = link_to(text, classfile(klass))
|
217
|
-
|
218
|
-
if subentries.empty?
|
219
|
-
out << "<span class=\"class-link\">" << link << "</span>\n"
|
220
|
-
else
|
221
|
-
out << '<details'
|
222
|
-
out << ' open' if full_name.count(':') == 0
|
223
|
-
out << '><summary>' << link << "</summary>\n"
|
224
|
-
render_class_tree(subentries, "<span class=\"parent\">#{full_name}::</span>", out)
|
225
|
-
out << "</details>"
|
226
|
-
end
|
227
|
-
end
|
228
|
-
|
229
|
-
out
|
230
|
-
end
|
231
|
-
|
232
|
-
def link_to(text, url)
|
233
|
-
%[<a href="#{url}">#{text}</a>]
|
234
|
-
end
|
235
|
-
|
236
|
-
def link_to_method(entry, url)
|
237
|
-
method_name = entry.pretty_name rescue entry.name
|
238
|
-
module_name = entry.parent_name rescue entry.name
|
239
|
-
link_to %Q(<span class="method_name" value="#{entry.name}">#{h method_name}</span> <span class="module_name">(#{h module_name})</span>), url
|
240
|
-
end
|
241
|
-
|
242
|
-
def classfile(klass)
|
243
|
-
Pathname.new(File.join(CLASS_DIR, klass.full_name.split('::')) + '.html')
|
244
|
-
end
|
245
|
-
|
246
|
-
def outjoin(name)
|
247
|
-
File.join(@outputdir, name)
|
248
|
-
end
|
249
|
-
|
250
|
-
def templjoin(name)
|
251
|
-
File.join(@templatedir, name)
|
252
|
-
end
|
253
|
-
|
254
|
-
class ERB < ::ERB
|
255
|
-
def to_html(binding, values = nil, &block)
|
256
|
-
local_values = {}
|
257
|
-
binding.local_variables.each do |lv|
|
258
|
-
local_values[lv] = binding.local_variable_get(lv)
|
259
|
-
end
|
260
|
-
binding.local_variable_set(:values, values) if values
|
261
|
-
binding.local_variable_set(:block, block) if block
|
262
|
-
html = result(binding)
|
263
|
-
local_values.each do |lv, val|
|
264
|
-
binding.local_variable_set(lv, val)
|
265
|
-
end
|
266
|
-
html
|
267
|
-
end
|
268
|
-
end
|
269
|
-
|
270
|
-
def erb_template(file)
|
271
|
-
ERB.new(File.read(file))
|
272
|
-
end
|
273
|
-
|
274
|
-
module LabelListTable
|
275
|
-
def list_item_start(list_item, list_type)
|
276
|
-
case list_type
|
277
|
-
when :LABEL, :NOTE
|
278
|
-
"<tr><td class='label'>#{Array(list_item.label).map{|label| to_html(label)}.join("<br />")}</td><td>"
|
279
|
-
else
|
280
|
-
super
|
281
|
-
end
|
282
|
-
end
|
283
|
-
|
284
|
-
def list_end_for(list_type)
|
285
|
-
case list_type
|
286
|
-
when :LABEL, :NOTE then
|
287
|
-
"</td></tr>"
|
288
|
-
else
|
289
|
-
super
|
290
|
-
end
|
291
|
-
end
|
292
|
-
end
|
293
|
-
end
|
294
|
-
|
295
|
-
class RDoc::Markup::ToHtml
|
296
|
-
LIST_TYPE_TO_HTML[:LABEL] = ['<table class="rdoc-list label-list"><tbody>', '</tbody></table>']
|
297
|
-
LIST_TYPE_TO_HTML[:NOTE] = ['<table class="rdoc-list note-list"><tbody>', '</tbody></table>']
|
298
|
-
|
299
|
-
prepend RDoc::Generator::Hanna::LabelListTable
|
300
|
-
end
|
1
|
+
require 'hanna'
|
data/lib/rdoc/discover.rb
CHANGED
@@ -1 +1 @@
|
|
1
|
-
require 'hanna
|
1
|
+
require 'hanna'
|
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.
|
4
|
+
version: 1.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jeremy Evans
|
@@ -11,82 +11,34 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date: 2023-
|
14
|
+
date: 2023-08-10 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
|
-
name:
|
17
|
+
name: hanna
|
18
18
|
requirement: !ruby/object:Gem::Requirement
|
19
19
|
requirements:
|
20
20
|
- - ">="
|
21
21
|
- !ruby/object:Gem::Version
|
22
|
-
version: '
|
22
|
+
version: '1.5'
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
26
26
|
requirements:
|
27
27
|
- - ">="
|
28
28
|
- !ruby/object:Gem::Version
|
29
|
-
version: '
|
30
|
-
|
31
|
-
name: minitest-hooks
|
32
|
-
requirement: !ruby/object:Gem::Requirement
|
33
|
-
requirements:
|
34
|
-
- - ">="
|
35
|
-
- !ruby/object:Gem::Version
|
36
|
-
version: '0'
|
37
|
-
type: :development
|
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: minitest-global_expectations
|
46
|
-
requirement: !ruby/object:Gem::Requirement
|
47
|
-
requirements:
|
48
|
-
- - ">="
|
49
|
-
- !ruby/object:Gem::Version
|
50
|
-
version: '0'
|
51
|
-
type: :development
|
52
|
-
prerelease: false
|
53
|
-
version_requirements: !ruby/object:Gem::Requirement
|
54
|
-
requirements:
|
55
|
-
- - ">="
|
56
|
-
- !ruby/object:Gem::Version
|
57
|
-
version: '0'
|
58
|
-
description: RDoc generator designed with simplicity, beauty and ease of browsing
|
59
|
-
in mind
|
29
|
+
version: '1.5'
|
30
|
+
description: Loads hanna due to gem rename
|
60
31
|
email: code@jeremyevans.net
|
61
32
|
executables: []
|
62
33
|
extensions: []
|
63
|
-
extra_rdoc_files:
|
64
|
-
- LICENSE
|
65
|
-
- README.rdoc
|
66
|
-
- CHANGELOG
|
34
|
+
extra_rdoc_files: []
|
67
35
|
files:
|
68
|
-
- CHANGELOG
|
69
|
-
- LICENSE
|
70
|
-
- README.rdoc
|
71
36
|
- lib/hanna-nouveau.rb
|
72
|
-
- lib/hanna-nouveau/template_files/class_index.erb
|
73
|
-
- lib/hanna-nouveau/template_files/file_index.erb
|
74
|
-
- lib/hanna-nouveau/template_files/index.erb
|
75
|
-
- lib/hanna-nouveau/template_files/layout.erb
|
76
|
-
- lib/hanna-nouveau/template_files/method_index.erb
|
77
|
-
- lib/hanna-nouveau/template_files/method_list.erb
|
78
|
-
- lib/hanna-nouveau/template_files/method_search.js
|
79
|
-
- lib/hanna-nouveau/template_files/page.erb
|
80
|
-
- lib/hanna-nouveau/template_files/sections.erb
|
81
|
-
- lib/hanna-nouveau/template_files/styles.css
|
82
37
|
- lib/rdoc/discover.rb
|
83
|
-
homepage: https://github.com/jeremyevans/hanna
|
38
|
+
homepage: https://github.com/jeremyevans/hanna
|
84
39
|
licenses:
|
85
40
|
- MIT
|
86
|
-
metadata:
|
87
|
-
bug_tracker_uri: https://github.com/jeremyevans/hanna-nouveau/issues
|
88
|
-
mailing_list_uri: https://github.com/jeremyevans/hanna-nouveau/discussions
|
89
|
-
source_code_uri: https://github.com/jeremyevans/hanna-nouveau
|
41
|
+
metadata: {}
|
90
42
|
post_install_message:
|
91
43
|
rdoc_options: []
|
92
44
|
require_paths:
|
@@ -102,8 +54,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
102
54
|
- !ruby/object:Gem::Version
|
103
55
|
version: '0'
|
104
56
|
requirements: []
|
105
|
-
rubygems_version: 3.4.
|
57
|
+
rubygems_version: 3.4.10
|
106
58
|
signing_key:
|
107
59
|
specification_version: 4
|
108
|
-
summary:
|
60
|
+
summary: Loads hanna due to gem rename
|
109
61
|
test_files: []
|
data/CHANGELOG
DELETED
@@ -1,109 +0,0 @@
|
|
1
|
-
# 1.4.0 (2023-01-10)
|
2
|
-
|
3
|
-
* Improve style for mobile devices (janko) (#18, #19)
|
4
|
-
|
5
|
-
# 1.3.0 (2022-06-27)
|
6
|
-
|
7
|
-
* Use details/summary for class index (jeremyevans)
|
8
|
-
|
9
|
-
* Optimize render_class_tree, and avoid creation of O(n^2) regexps (jeremyevans)
|
10
|
-
|
11
|
-
* Use target="_top" for https links as well as http links (jeremyevans)
|
12
|
-
|
13
|
-
# 1.2.0 (2021-12-23)
|
14
|
-
|
15
|
-
* Remove dependency on haml, by switching to stdlib erb (jeremyevans)
|
16
|
-
|
17
|
-
* Remove use of prototype.js for the method index, switching to plain javascript (jeremyevans)
|
18
|
-
|
19
|
-
# 1.1.0 (2021-12-15)
|
20
|
-
|
21
|
-
* Remove dependency on sass, by converting the stylesheet to CSS (jeremyevans)
|
22
|
-
|
23
|
-
* Avoid Ruby verbose mode warnings (jeremyevans)
|
24
|
-
|
25
|
-
# 1.0.4 (2020-06-24)
|
26
|
-
|
27
|
-
* Avoid whitespace between method name and argument list (jeremyevans)
|
28
|
-
|
29
|
-
# 1.0.3 (2018-02-15)
|
30
|
-
|
31
|
-
* Avoid using deprecated sass color operators (jeremyevans)
|
32
|
-
|
33
|
-
# 1.0.2 (2017-07-01)
|
34
|
-
|
35
|
-
* Handle documenting BasicObject (jeremyevans)
|
36
|
-
|
37
|
-
# 1.0.1 (2016-10-12)
|
38
|
-
|
39
|
-
* Remove unneeded and harmful target="docwin" from links (jeremyevans)
|
40
|
-
|
41
|
-
# 1.0.0 (2016-09-21)
|
42
|
-
|
43
|
-
* Support haml 4+ and rdoc 5+ (jeremyevans)
|
44
|
-
|
45
|
-
* Remove no longer needed override of parseable? in rdoc (jeremyevans)
|
46
|
-
|
47
|
-
# 0.4.2 (2014-11-26)
|
48
|
-
|
49
|
-
* Use ruby's built-in syntax parser instead of parser gem to check for valid syntax (jeremyevans)
|
50
|
-
|
51
|
-
# 0.4.1 (2014-08-29)
|
52
|
-
|
53
|
-
* Update syntax highlighting color for comments and strings (jeremyevans)
|
54
|
-
|
55
|
-
# 0.4.0 (2014-08-19)
|
56
|
-
|
57
|
-
* Add parser as a dependency for checking for valid Ruby syntax (jeremyevans)
|
58
|
-
|
59
|
-
* Use table instead of dl for better styling of label/note lists (jeremyevans)
|
60
|
-
|
61
|
-
* Syntax highlight ruby code blocks, not just method source (jeremyevans)
|
62
|
-
|
63
|
-
# 0.3.0 (2014-06-18)
|
64
|
-
|
65
|
-
* Show superclass instead of parent for classes (Quintus, jeremyevans)
|
66
|
-
|
67
|
-
* Add support for RDoc 4 (Atsushi Nagase, jeremyevans)
|
68
|
-
|
69
|
-
# 0.2.7 (2013-03-23)
|
70
|
-
|
71
|
-
* Remove duplicate entries from method index (jeremyevans)
|
72
|
-
|
73
|
-
* Fix attribute links (jeremyevans)
|
74
|
-
|
75
|
-
# 0.2.6 (2013-03-01)
|
76
|
-
|
77
|
-
* Fix homepage in gem (erikh)
|
78
|
-
|
79
|
-
# 0.2.5 (2013-03-01)
|
80
|
-
|
81
|
-
* Restrict rdoc version in gem to ~> 3.1, since the gem doesn't work with RDoc 4 (jeremyevans)
|
82
|
-
|
83
|
-
# 0.2.4 (2011-07-24)
|
84
|
-
|
85
|
-
* Respect markup in section comments (jeremyevans)
|
86
|
-
|
87
|
-
* Fix class/singleton attribute anchors (jeremyevans)
|
88
|
-
|
89
|
-
* Work with RDoc 3.8+ (jeremyevans)
|
90
|
-
|
91
|
-
* Support RDoc sections (jeremyevans)
|
92
|
-
|
93
|
-
* Automatically link classes, modules, included modules, and attributes (jeremyevans)
|
94
|
-
|
95
|
-
# 0.2.3 (2011-05-12)
|
96
|
-
|
97
|
-
* Sort method, aliases, and attribute lists (jeremyevans)
|
98
|
-
|
99
|
-
# 0.2.2 (2010-12-28)
|
100
|
-
|
101
|
-
* Work with RDoc 3.1+ (erikh)
|
102
|
-
|
103
|
-
# 0.2.1 (2010-12-23)
|
104
|
-
|
105
|
-
* Rename internal files to hanna-nouveau (erikh)
|
106
|
-
|
107
|
-
# 0.2.0 (2010-12-23)
|
108
|
-
|
109
|
-
* Initial release
|
data/LICENSE
DELETED
@@ -1,20 +0,0 @@
|
|
1
|
-
Copyright (c) 2009 Mislav Marohnić
|
2
|
-
Copyright (c) 2010, 2011 Erik Hollensbe
|
3
|
-
Copyright (c) 2011-2022 Jeremy Evans
|
4
|
-
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
6
|
-
this software and associated documentation files (the "Software"), to deal in
|
7
|
-
the Software without restriction, including without limitation the rights to
|
8
|
-
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
9
|
-
the Software, and to permit persons to whom the Software is furnished to do so,
|
10
|
-
subject to the following conditions:
|
11
|
-
|
12
|
-
The above copyright notice and this permission notice shall be included in all
|
13
|
-
copies or substantial portions of the Software.
|
14
|
-
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
17
|
-
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
18
|
-
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
19
|
-
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
20
|
-
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.rdoc
DELETED
@@ -1,63 +0,0 @@
|
|
1
|
-
= Hanna-nouveau
|
2
|
-
|
3
|
-
Hanna-nouveau is an RDoc generator built with simplicity, beauty
|
4
|
-
and ease of browsing in mind.
|
5
|
-
|
6
|
-
== Installation
|
7
|
-
|
8
|
-
gem install hanna-nouveau
|
9
|
-
|
10
|
-
== Usage
|
11
|
-
|
12
|
-
rdoc -o doc -f hanna lib
|
13
|
-
|
14
|
-
An alternative is to set the `RDOCOPT` environment variable:
|
15
|
-
|
16
|
-
RDOCOPT="-f hanna"
|
17
|
-
|
18
|
-
This will make RDoc always use hanna-nouveau unless it is explicitly overridden.
|
19
|
-
|
20
|
-
== Integrating with RubyGems
|
21
|
-
|
22
|
-
If you put the following line in your .gemrc, this will make
|
23
|
-
RubyGems use Hanna for all rdoc generation:
|
24
|
-
|
25
|
-
rdoc: -f hanna
|
26
|
-
|
27
|
-
After doing this, if you wish to have documentation for all your installed gems
|
28
|
-
to be formatted in hanna:
|
29
|
-
|
30
|
-
gem rdoc --all --overwrite
|
31
|
-
|
32
|
-
== Rake task
|
33
|
-
|
34
|
-
For repeated generation of API docs, you can set up a Rake task. Set
|
35
|
-
hanna as the RDoc generator:
|
36
|
-
|
37
|
-
require 'rdoc/task'
|
38
|
-
RDoc::Task.new do |rdoc|
|
39
|
-
rdoc.generator = 'hanna'
|
40
|
-
end
|
41
|
-
|
42
|
-
== Modification to RDoc
|
43
|
-
|
44
|
-
Hanna makes a small modification to RDoc to generate more
|
45
|
-
friendly documentation. It changes label lists to use a table
|
46
|
-
instead of a description list, since it is very difficult to
|
47
|
-
get visually appealing styling for description lists without
|
48
|
-
cutting corners (like using fixed widths).
|
49
|
-
|
50
|
-
== Contributors
|
51
|
-
|
52
|
-
The Hanna template was created by {Mislav}[http://mislav.uniqpath.com/] and
|
53
|
-
since then has seen contributions from:
|
54
|
-
|
55
|
-
1. {Tony Strauss}[https://github.com/DesigningPatterns], who participated from
|
56
|
-
the early start and made tons of fixes and enhancements to the template.
|
57
|
-
2. {Michael Granger}[https://github.com/ged] who maintained the original RDoc template.
|
58
|
-
3. {Hongli Lai}[https://blog.phusion.nl/] with the search filter for methods.
|
59
|
-
4. {Erik Hollensbe}[https://github.com/erikh] a serious refactoring and up to
|
60
|
-
date with RDoc 2.5.x and 3.x, now named 'hanna-nouveau'.
|
61
|
-
5. {James Tucker}[https://github.com/raggi] minor cleanups and RubyGems integration
|
62
|
-
6. {Jeremy Evans}[https://github.com/jeremyevans] RDoc 4+ support, switch from
|
63
|
-
haml/sass to erb, maintenance since 2014.
|
@@ -1,9 +0,0 @@
|
|
1
|
-
<h1>File Index</h1><% any_hidden = false %>
|
2
|
-
<ol class='files' id='index-entries'>
|
3
|
-
<% values[:files].each do |file|
|
4
|
-
hide = file.name =~ /\.rb$/
|
5
|
-
any_hidden = true if hide %><li<%= " class='other'" if hide %>><%= link_to(file.name, file.path) %></li>
|
6
|
-
<% end %><% if any_hidden %><li>
|
7
|
-
<a class='show' href='#' onclick='this.parentNode.parentNode.className += " expanded"; this.parentNode.removeChild(this); return false'>show all</a>
|
8
|
-
</li><% end %>
|
9
|
-
</ol>
|
@@ -1,15 +0,0 @@
|
|
1
|
-
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
|
2
|
-
<html lang='en' xml:lang='en' xmlns='http://www.w3.org/1999/xhtml'>
|
3
|
-
<head>
|
4
|
-
<title><%=h @options.title %></title>
|
5
|
-
<meta content='text/html; charset=<%=h @options.charset %>' http-equiv='Content-Type'>
|
6
|
-
</head>
|
7
|
-
<frameset border='1' bordercolor='gray' cols='20%, *' frameborder='1'>
|
8
|
-
<frameset rows='15%, 35%, 50%'>
|
9
|
-
<frame name='Files' src='fr_file_index.html' title='Files'>
|
10
|
-
<frame name='Classes' src='fr_class_index.html'>
|
11
|
-
<frame name='Methods' src='fr_method_index.html'>
|
12
|
-
</frameset>
|
13
|
-
<frame name='docwin' src='<%=h @main_page_uri %>'></frame>
|
14
|
-
</frameset>
|
15
|
-
</html>
|
@@ -1,35 +0,0 @@
|
|
1
|
-
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><% values = values[:values]; index = values[:list_title] %>
|
2
|
-
<html lang='en'>
|
3
|
-
<head>
|
4
|
-
<title><%= h(values[:title]) if values[:title] %></title>
|
5
|
-
<meta name='viewport' content='width=device-width, initial-scale=1'>
|
6
|
-
<meta content='text/html; charset=<%=h @options.charset %>' http-equiv='Content-Type'>
|
7
|
-
<link href='<%=h values[:stylesheet] %>' media='screen' rel='stylesheet' type='text/css'>
|
8
|
-
<% if index %><base target='docwin'>
|
9
|
-
<% else %><script type='text/javascript'>
|
10
|
-
function popupCode(url) {
|
11
|
-
window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
|
12
|
-
}
|
13
|
-
|
14
|
-
function toggleCode(id) {
|
15
|
-
var code = document.getElementById(id)
|
16
|
-
|
17
|
-
code.style.display = code.style.display != 'block' ? 'block' : 'none'
|
18
|
-
return true
|
19
|
-
}
|
20
|
-
|
21
|
-
// Make codeblocks hidden by default
|
22
|
-
document.writeln('<' + 'style type="text/css">.method .source pre { display: none }<\/style>')
|
23
|
-
</script>
|
24
|
-
<% end %></head>
|
25
|
-
<body class='<%= index ? 'list' : 'page' %>'>
|
26
|
-
<% if index %><div id='index'><%= yield %></div>
|
27
|
-
<% else %><div class='<%= values[:classmod] ? 'class' : 'file' %>' id='wrapper'>
|
28
|
-
<%= yield %>
|
29
|
-
<div id='footer-push'></div>
|
30
|
-
</div>
|
31
|
-
<div id='footer'>
|
32
|
-
<a href="https://github.com/jeremyevans/hanna-nouveau"><strong>Hanna Nouveau</strong> RDoc template</a>
|
33
|
-
</div>
|
34
|
-
<% end %></body>
|
35
|
-
</html>
|
@@ -1,11 +0,0 @@
|
|
1
|
-
<h1><%=h values[:list_title] %></h1>
|
2
|
-
<form id='search_form'>
|
3
|
-
<input autocomplete='off' class='untouched' id='search' placeholder='Enter search terms...' type='text'>
|
4
|
-
<span class='clear_button' id='clear_button'>
|
5
|
-
x
|
6
|
-
</span>
|
7
|
-
</form>
|
8
|
-
<ol class='methods' id='index-entries'>
|
9
|
-
<% (values[:attributes] + values[:methods]).uniq.each do |entry| %><li><%= link_to_method(entry, [classfile(entry.parent), entry.aref].join('#')) %></li>
|
10
|
-
<% end %></ol>
|
11
|
-
<script src='method_search.js' type='text/javascript'></script>
|
@@ -1,58 +0,0 @@
|
|
1
|
-
<%
|
2
|
-
values = values[:values] if values[:values]
|
3
|
-
entry = values[:entry]
|
4
|
-
sections = values[:sections].keys if values.has_key?(:sections)
|
5
|
-
methods = entry.method_list + entry.attributes
|
6
|
-
unless methods.empty? %><div id='method-list'>
|
7
|
-
<h2>Methods</h2>
|
8
|
-
<% %w[attr attr_accessor attr_reader attr_writer class instance].each do |type|
|
9
|
-
(RDoc::VISIBILITIES rescue RDoc::Context::VISIBILITIES).each do |vis|
|
10
|
-
list = methods.reject { |x| x.respond_to?(:is_alias_for) && x.is_alias_for }.select { |x| x.visibility == vis && x.type == type.to_s }.sort
|
11
|
-
next if list.empty?
|
12
|
-
type_result = ""
|
13
|
-
if type =~ /^attr_/
|
14
|
-
type_result += type.sub(/^attr_/, '').capitalize
|
15
|
-
else
|
16
|
-
type_result += type.capitalize
|
17
|
-
end
|
18
|
-
type_result = "#{vis.to_s.capitalize} #{type_result}"
|
19
|
-
%><h3><%=h type_result %></h3>
|
20
|
-
<ol>
|
21
|
-
<%
|
22
|
-
list.each do |method|
|
23
|
-
if method.respond_to?(:aref)
|
24
|
-
if method.name.to_s.empty? && method.call_seq %><li><%= link_to(method.call_seq.gsub(/<br\s*\/?>/, "").split(/[\r\n]+/).map{ |s| s.split(/([({]+|\[\{|\s+(#?=>|→)\s+)/).first.sub(/^[A-Za-z0-9_:]+\./, "").sub(/\s+=\s+.*/, "=").strip }.uniq.join("<br />\n"), '#' + method.aref) %></li>
|
25
|
-
<% else %><li><%= link_to(method.name, '#' + method.aref) %></li>
|
26
|
-
<% end
|
27
|
-
elsif method.respond_to?(:html_name) %><li><%= link_to(method.name, "#method-#{method.html_name}") %></li>
|
28
|
-
<% else %><li><%=h method.name %></li>
|
29
|
-
<% end
|
30
|
-
end %></ol>
|
31
|
-
<% end
|
32
|
-
end %></div>
|
33
|
-
<%
|
34
|
-
end
|
35
|
-
if entry.requires or sections or entry.includes %><div id='context'>
|
36
|
-
<% unless entry.requires.empty? %><div id='requires'>
|
37
|
-
<h2>Required files</h2>
|
38
|
-
<ol>
|
39
|
-
<% entry.requires.each do |req| %><li><%=h req.name %></li>
|
40
|
-
<% end %></ol>
|
41
|
-
</div>
|
42
|
-
<% end
|
43
|
-
if sections && (sections.length > 1 || sections.first.title.to_s != '')
|
44
|
-
%><div id='contents'>
|
45
|
-
<h2>Contents</h2>
|
46
|
-
<ol>
|
47
|
-
<% sections.sort_by{|s| s.title.to_s}.each do |section| %><li><%= link_to(section.title, "##{section.aref}") %></li>
|
48
|
-
<% end %></ol>
|
49
|
-
</div>
|
50
|
-
<% end
|
51
|
-
unless entry.includes.empty?
|
52
|
-
%><div id='includes'>
|
53
|
-
<h2>Included modules</h2>
|
54
|
-
<ol>
|
55
|
-
<% entry.includes.each do |inc| %><li><%= (mod = inc.module).is_a?(String) ? h(inc.name) : link_to(inc.name, entry.aref_to(mod.path)) %></li>
|
56
|
-
<% end %></ol>
|
57
|
-
</div>
|
58
|
-
<% end %></div><% end %>
|
@@ -1,45 +0,0 @@
|
|
1
|
-
var search_box = document.getElementById('search');
|
2
|
-
var search_timeout;
|
3
|
-
var search_value = search_box.value;
|
4
|
-
|
5
|
-
function performSearch(e) {
|
6
|
-
if (e) {
|
7
|
-
e.preventDefault();
|
8
|
-
}
|
9
|
-
if (search.value === search_value) {
|
10
|
-
return;
|
11
|
-
}
|
12
|
-
search_value = search_box.value;
|
13
|
-
|
14
|
-
if (search_value == '') {
|
15
|
-
document.querySelectorAll("#index-entries li.hide").forEach(elem => {
|
16
|
-
elem.classList.remove('hide');
|
17
|
-
});
|
18
|
-
} else {
|
19
|
-
document.querySelectorAll("#index-entries span.method_name").forEach(elem => {
|
20
|
-
var value = elem.getAttribute('value');
|
21
|
-
var li_classes = elem.parentElement.parentElement.classList;
|
22
|
-
if (value && value.includes(search_value)) {
|
23
|
-
li_classes.remove('hide');
|
24
|
-
} else {
|
25
|
-
li_classes.add('hide');
|
26
|
-
}
|
27
|
-
});
|
28
|
-
}
|
29
|
-
}
|
30
|
-
|
31
|
-
document.getElementById('search_form').onsubmit = performSearch;
|
32
|
-
|
33
|
-
search.oninput = function(e) {
|
34
|
-
if (search_timeout) {
|
35
|
-
clearTimeout(search_timeout);
|
36
|
-
}
|
37
|
-
search_timeout = setTimeout(performSearch, 300);
|
38
|
-
};
|
39
|
-
|
40
|
-
document.getElementById('clear_button').onclick = function(e) {
|
41
|
-
e.stopPropagation();
|
42
|
-
search_box.value = '';
|
43
|
-
performSearch();
|
44
|
-
search_box.focus();
|
45
|
-
};
|
@@ -1,48 +0,0 @@
|
|
1
|
-
<%
|
2
|
-
values = values[:values] if values[:values]
|
3
|
-
file_page = !values[:classmod]
|
4
|
-
title_in_description = values[:entry].description && values[:entry].description =~ /^\s*<h1>/m
|
5
|
-
%><div class='header'>
|
6
|
-
<%
|
7
|
-
title = if file_page
|
8
|
-
h(values[:file].name)
|
9
|
-
else
|
10
|
-
"<span class='type'>#{values[:classmod]}</span>\n#{h values[:entry].full_name}"
|
11
|
-
end
|
12
|
-
|
13
|
-
if title_in_description %><div class='name'><%= title %></div>
|
14
|
-
<% else %><h1 class='name'><%= title %>
|
15
|
-
</h1>
|
16
|
-
<% end
|
17
|
-
|
18
|
-
if file_page %><div class='paths'>
|
19
|
-
<%=h values[:file].relative_name %>
|
20
|
-
</div>
|
21
|
-
<% else %><ol class='paths'>
|
22
|
-
<% values[:entry].in_files.each_with_index do |file, index| %><li<%= " class='other'" if index > 0 %>>
|
23
|
-
<%= link_to(file.full_name, Pathname.new(file.path).relative_path_from(Pathname.new(values[:entry].path).dirname)) %>
|
24
|
-
</li>
|
25
|
-
<% end
|
26
|
-
if values[:entry].in_files.size > 1 %><li>
|
27
|
-
<a class='show' href='#' onclick='this.parentNode.parentNode.className += " expanded"; this.parentNode.removeChild(this); return false'>show all</a>
|
28
|
-
</li>
|
29
|
-
<% end %></ol>
|
30
|
-
<% end
|
31
|
-
|
32
|
-
if !file_page && values[:entry].type == "class" %><div class='parent'>
|
33
|
-
Superclass:
|
34
|
-
<strong><%= (values[:entry].superclass.kind_of?(String) || !values[:entry].superclass) ? h(values[:entry].superclass) : link_to(values[:entry].superclass.name, Pathname.new(class_dir) + Pathname.new(values[:entry].superclass.path).relative_path_from(Pathname.new values[:entry].path)) %></strong>
|
35
|
-
</div>
|
36
|
-
<% end
|
37
|
-
|
38
|
-
if values[:entry].respond_to?(:last_modified) and values[:entry].last_modified %><div class='last-update'>
|
39
|
-
Last Update:
|
40
|
-
<span class='datetime'><%=h values[:entry].last_modified %></span>
|
41
|
-
</div>
|
42
|
-
<% end %></div>
|
43
|
-
<div id='content'>
|
44
|
-
<div id='text'>
|
45
|
-
<% if values[:description] %><div id='description'><%= frame_link(values[:description]) %></div>
|
46
|
-
<% end %><%= frame_link(block.call) %>
|
47
|
-
</div>
|
48
|
-
</div>
|
@@ -1,92 +0,0 @@
|
|
1
|
-
<%
|
2
|
-
values = values[:values] if values[:values]
|
3
|
-
unless values[:entry].classes_and_modules.empty? %><div id='class-list'>
|
4
|
-
<h2>Classes and Modules</h2>
|
5
|
-
<ol>
|
6
|
-
<% (values[:entry].modules.sort + values[:entry].classes.sort).each do |mod| %><li><%= link_to(mod.full_name, values[:entry].aref_to(mod.path)) %></li>
|
7
|
-
<% end %></ol>
|
8
|
-
</div>
|
9
|
-
<% end
|
10
|
-
|
11
|
-
values[:sections].sort_by{|s, h| s.title.to_s}.each do |section, h|
|
12
|
-
constants, attributes, alias_types, method_types = h.values_at(:constants, :attributes, :alias_types, :method_types)
|
13
|
-
%><div id='section'>
|
14
|
-
<% if section.title.to_s != '' %><h2>
|
15
|
-
<a name='<%=h section.aref %>'><%=h section.title %></a>
|
16
|
-
<% if section.comment %><div class='section-comment'><%= section.description %></div>
|
17
|
-
<% end %></h2>
|
18
|
-
<% end
|
19
|
-
unless constants.empty? %><div id='constants-list'>
|
20
|
-
<h2>Constants</h2>
|
21
|
-
<div class='name-list'>
|
22
|
-
<table summary='Constants'>
|
23
|
-
<% constants.each do |const| %><tr class='top-aligned-row context-row'>
|
24
|
-
<td class='context-item-name'><%= const.name %></td>
|
25
|
-
<td>=</td>
|
26
|
-
<td class='context-item-value'><%= const.value %></td>
|
27
|
-
<% if const.description %><td> </td>
|
28
|
-
<td class='context-item-desc'><%= const.description %></td>
|
29
|
-
<% end %></tr>
|
30
|
-
<% end %></table>
|
31
|
-
</div>
|
32
|
-
</div>
|
33
|
-
<% end
|
34
|
-
unless alias_types.empty?
|
35
|
-
alias_types.each do |type, aliases|
|
36
|
-
%><div id='aliases-list'>
|
37
|
-
<h2><%= type %> Aliases</h2>
|
38
|
-
<div class='name-list'>
|
39
|
-
<table summary='<%= type %> Aliases'>
|
40
|
-
<% aliases.each do |alia| %><tr class='top-aligned-row context-row'>
|
41
|
-
<td class='context-item-name'><%= alia.name %></td>
|
42
|
-
<td>-></td>
|
43
|
-
<td class='context-item-value'><%= link_to(alia.is_alias_for.name, "##{alia.is_alias_for.aref}") %></td>
|
44
|
-
<% unless alia.description.empty? %><td class='context-item-desc'><%= alia.description %></td>
|
45
|
-
<% end %></tr>
|
46
|
-
<% end %></table>
|
47
|
-
</div>
|
48
|
-
</div>
|
49
|
-
<% end
|
50
|
-
end
|
51
|
-
unless attributes.empty? %><div id='attribute-list'>
|
52
|
-
<h2 class='section-bar'>Attributes</h2>
|
53
|
-
<div class='name-list'>
|
54
|
-
<table>
|
55
|
-
<% attributes.each do |attrib| %><tr class='top-aligned-row context-row'>
|
56
|
-
<td class='context-item-name'>
|
57
|
-
<a name='<%=h attrib.aref %>'><%= attrib.name %></a>
|
58
|
-
</td>
|
59
|
-
<td class='context-item-value'><%= attrib.rw ? "[#{attrib.rw}]" : ' ' %></td>
|
60
|
-
<td class='context-item-desc'><%= attrib.description %></td>
|
61
|
-
</tr>
|
62
|
-
<% end %></table>
|
63
|
-
</div>
|
64
|
-
</div>
|
65
|
-
<% end
|
66
|
-
unless method_types.empty? %><div id='methods'>
|
67
|
-
<% method_types.each do |type, list| next if list.empty? %><h2><%= type %> methods</h2>
|
68
|
-
<% list.each do |method| %><div class='method <%= "#{type.gsub(/\s+/, '-')}".downcase %>' id='method-<%= method.aref %>'>
|
69
|
-
<a name='<%= method.aref %>'></a>
|
70
|
-
<div class='synopsis'>
|
71
|
-
<% if method.call_seq %><span class='name'>
|
72
|
-
<% method.call_seq.split(/\r?\n/).each do |seq| %><div><%= seq %></div>
|
73
|
-
</span>
|
74
|
-
<% end
|
75
|
-
else %><span class='name'><%= method.name %></span><span class='arguments'><%= method.params %></span>
|
76
|
-
|
77
|
-
<% end %></div>
|
78
|
-
<% if method.description %><div class='description'>
|
79
|
-
<%= method.description %>
|
80
|
-
</div>
|
81
|
-
<% end
|
82
|
-
if method.markup_code
|
83
|
-
name = "#{method.aref}-source" %><div class='source'>
|
84
|
-
<a class='source-toggle' href='#' onclick='toggleCode('<%= name %>'); return false'>
|
85
|
-
[show source]
|
86
|
-
</a>
|
87
|
-
<pre id='<%= name %>'><%= method.markup_code %></pre>
|
88
|
-
</div>
|
89
|
-
<% end %></div>
|
90
|
-
<% end
|
91
|
-
end %></div>
|
92
|
-
<% end %></div><% end %>
|
@@ -1,368 +0,0 @@
|
|
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
|
-
#index div#index-entries.classes details > summary { list-style: none; white-space: nowrap; }
|
157
|
-
#index div#index-entries.classes details > summary::marker { content: none; }
|
158
|
-
#index div#index-entries.classes details > summary:after { content: " \25B6"; }
|
159
|
-
#index div#index-entries.classes details[open] > summary:after { content: " \25BC"; }
|
160
|
-
#index div#index-entries.classes span.class-link { display: block; white-space: nowrap; }
|
161
|
-
|
162
|
-
#attribute-list .context-item-name {
|
163
|
-
font-weight: bold; }
|
164
|
-
|
165
|
-
div.header {
|
166
|
-
font-size: 80%;
|
167
|
-
padding: 0.5em 1rem;
|
168
|
-
font-family: Arial, Helvetica, sans-serif;
|
169
|
-
border-bottom: 1px solid silver; }
|
170
|
-
div.header .name {
|
171
|
-
font-size: 1.6em;
|
172
|
-
font-family: Georgia, serif;
|
173
|
-
overflow-wrap: break-word; }
|
174
|
-
div.header .name .type {
|
175
|
-
color: #666666;
|
176
|
-
font-size: 80%;
|
177
|
-
font-variant: small-caps; }
|
178
|
-
div.header h1.name {
|
179
|
-
font-size: 2.2em; }
|
180
|
-
div.header .paths, div.header .last-update, div.header .parent {
|
181
|
-
color: #666666; }
|
182
|
-
div.header .last-update .datetime {
|
183
|
-
color: #484848; }
|
184
|
-
div.header .parent {
|
185
|
-
margin-top: 0.3em; }
|
186
|
-
div.header .parent strong {
|
187
|
-
font-weight: normal;
|
188
|
-
color: #484848; }
|
189
|
-
|
190
|
-
#content {
|
191
|
-
padding: 12px 1rem; }
|
192
|
-
#content pre, #content .method .synopsis {
|
193
|
-
font: 14px Monaco, DejaVu Sans Mono, Bitstream Vera Sans Mono, Courier New, monospace;
|
194
|
-
overflow-wrap: break-word; }
|
195
|
-
#content pre {
|
196
|
-
color: black;
|
197
|
-
background: #eeeeee;
|
198
|
-
border: 1px solid silver;
|
199
|
-
padding: 0.5em 0.8em;
|
200
|
-
overflow: auto; }
|
201
|
-
#content p code, #content p tt, #content li code, #content li tt, #content dl code, #content dl tt {
|
202
|
-
font: 14px Monaco, DejaVu Sans Mono, Bitstream Vera Sans Mono, Courier New, monospace;
|
203
|
-
background: #ffffe3;
|
204
|
-
padding: 2px 3px;
|
205
|
-
line-height: 1.4; }
|
206
|
-
#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 {
|
207
|
-
font-size: 1.1em; }
|
208
|
-
#content #text {
|
209
|
-
position: relative; }
|
210
|
-
#content #description p {
|
211
|
-
margin-top: 0.5em; }
|
212
|
-
#content #description h1, #content #description h2, #content #description h3, #content #description h4, #content #description h5, #content #description h6 {
|
213
|
-
font-family: Georgia, serif; }
|
214
|
-
#content #description h1 {
|
215
|
-
font-size: 2.2em;
|
216
|
-
margin-bottom: 0.2em;
|
217
|
-
border-bottom: 3px double #d8d8d8;
|
218
|
-
padding-bottom: 0.1em; }
|
219
|
-
#content #description h2 {
|
220
|
-
font-size: 1.8em;
|
221
|
-
color: #0e3062;
|
222
|
-
margin: 0.8em 0 0.3em 0; }
|
223
|
-
#content #description h3 {
|
224
|
-
font-size: 1.6em;
|
225
|
-
margin: 0.8em 0 0.3em 0;
|
226
|
-
color: #666666; }
|
227
|
-
#content #description h4 {
|
228
|
-
font-size: 1.4em;
|
229
|
-
margin: 0.8em 0 0.3em 0; }
|
230
|
-
#content #description h5 {
|
231
|
-
font-size: 1.2em;
|
232
|
-
margin: 0.8em 0 0.3em 0;
|
233
|
-
color: #0e3062; }
|
234
|
-
#content #description h6 {
|
235
|
-
font-size: 1em;
|
236
|
-
margin: 0.8em 0 0.3em 0;
|
237
|
-
color: #666666; }
|
238
|
-
#content #description ul, #content #description ol, #content .method .description ul, #content .method .description ol {
|
239
|
-
margin: 0.8em 0;
|
240
|
-
padding-left: 1.5em; }
|
241
|
-
#content #description ol, #content .method .description ol {
|
242
|
-
list-style: decimal; }
|
243
|
-
#content #description ol li, #content .method .description ol li {
|
244
|
-
white-space: normal; }
|
245
|
-
#content table.rdoc-list {
|
246
|
-
border-collapse: collapse;
|
247
|
-
border-spacing: 0;
|
248
|
-
width: 100%;
|
249
|
-
overflow: auto;
|
250
|
-
display: block; }
|
251
|
-
#content table.rdoc-list tr {
|
252
|
-
background-color: white; }
|
253
|
-
#content table.rdoc-list tr:nth-child(2n) {
|
254
|
-
background-color: #f8f8f8; }
|
255
|
-
#content table.rdoc-list td.label {
|
256
|
-
font-weight: bold; }
|
257
|
-
#content table.rdoc-list td {
|
258
|
-
border: 1px solid #ddd;
|
259
|
-
padding: 6px 13px; }
|
260
|
-
|
261
|
-
#method-list {
|
262
|
-
max-height: 30rem;
|
263
|
-
background: #eeeeee;
|
264
|
-
border: 1px solid silver;
|
265
|
-
padding: 0.4em 1%;
|
266
|
-
overflow-y: auto;
|
267
|
-
overflow-x: hidden; }
|
268
|
-
#method-list h2 {
|
269
|
-
font-size: 1.3em; }
|
270
|
-
#method-list h3 {
|
271
|
-
font-variant: small-caps;
|
272
|
-
text-transform: capitalize;
|
273
|
-
font-family: Georgia, serif;
|
274
|
-
color: #666666;
|
275
|
-
font-size: 1.1em; }
|
276
|
-
#method-list ol {
|
277
|
-
padding: 0 0 0.5em 0.5em; }
|
278
|
-
|
279
|
-
#context {
|
280
|
-
border-top: 1px dashed silver;
|
281
|
-
margin-top: 1em;
|
282
|
-
margin-bottom: 1em; }
|
283
|
-
|
284
|
-
#context h2, #section h2 {
|
285
|
-
font: small-caps 1.2em Georgia, serif;
|
286
|
-
color: #444444;
|
287
|
-
margin: 1em 0 0.2em 0; }
|
288
|
-
|
289
|
-
.name-list, #class-list ol, #context ol {
|
290
|
-
overflow: auto; }
|
291
|
-
|
292
|
-
#methods .method {
|
293
|
-
border: 1px solid silver;
|
294
|
-
margin-top: 0.5em;
|
295
|
-
background: #eeeeee; }
|
296
|
-
#methods .method .synopsis {
|
297
|
-
color: black;
|
298
|
-
background: silver;
|
299
|
-
padding: 0.2em 1em; }
|
300
|
-
#methods .method .synopsis .name {
|
301
|
-
font-weight: bold; }
|
302
|
-
#methods .method .synopsis a {
|
303
|
-
text-decoration: none; }
|
304
|
-
#methods .method .description {
|
305
|
-
padding: 0 1em; }
|
306
|
-
#methods .method .description pre {
|
307
|
-
background: #f8f8f8; }
|
308
|
-
#methods .method .source {
|
309
|
-
margin: 0.5em 0; }
|
310
|
-
#methods .method .source-toggle {
|
311
|
-
font-size: 85%;
|
312
|
-
margin-left: 1em; }
|
313
|
-
#methods .public-class {
|
314
|
-
background: #ffffe4; }
|
315
|
-
#methods .public-instance .synopsis {
|
316
|
-
color: #eeeeee;
|
317
|
-
background: #336699; }
|
318
|
-
|
319
|
-
#content .method .source pre, #content pre.ruby, #methods .method .description pre.ruby {
|
320
|
-
background: #262626;
|
321
|
-
color: #ffdead;
|
322
|
-
padding: 0.5em;
|
323
|
-
border: 1px dashed #999999;
|
324
|
-
overflow: auto; }
|
325
|
-
#content .method .source pre .ruby-constant, #content pre.ruby .ruby-constant, #methods .method .description pre.ruby .ruby-constant {
|
326
|
-
color: #7fffd4;
|
327
|
-
background: transparent; }
|
328
|
-
#content .method .source pre .ruby-keyword, #content pre.ruby .ruby-keyword, #methods .method .description pre.ruby .ruby-keyword {
|
329
|
-
color: aqua;
|
330
|
-
background: transparent; }
|
331
|
-
#content .method .source pre .ruby-ivar, #content pre.ruby .ruby-ivar, #methods .method .description pre.ruby .ruby-ivar {
|
332
|
-
color: #eedd82;
|
333
|
-
background: transparent; }
|
334
|
-
#content .method .source pre .ruby-operator, #content pre.ruby .ruby-operator, #methods .method .description pre.ruby .ruby-operator {
|
335
|
-
color: #00ffee;
|
336
|
-
background: transparent; }
|
337
|
-
#content .method .source pre .ruby-identifier, #content pre.ruby .ruby-identifier, #methods .method .description pre.ruby .ruby-identifier {
|
338
|
-
color: #ffdead;
|
339
|
-
background: transparent; }
|
340
|
-
#content .method .source pre .ruby-string, #content pre.ruby .ruby-string, #methods .method .description pre.ruby .ruby-string {
|
341
|
-
color: #faa;
|
342
|
-
background: transparent; }
|
343
|
-
#content .method .source pre .ruby-node, #content pre.ruby .ruby-node, #methods .method .description pre.ruby .ruby-node {
|
344
|
-
color: #ffa07a;
|
345
|
-
background: transparent; }
|
346
|
-
#content .method .source pre .ruby-comment, #content pre.ruby .ruby-comment, #methods .method .description pre.ruby .ruby-comment {
|
347
|
-
color: #fdf;
|
348
|
-
font-weight: bold;
|
349
|
-
background: transparent; }
|
350
|
-
#content .method .source pre .ruby-regexp, #content pre.ruby .ruby-regexp, #methods .method .description pre.ruby .ruby-regexp {
|
351
|
-
color: #ffa07a;
|
352
|
-
background: transparent; }
|
353
|
-
#content .method .source pre .ruby-value, #content pre.ruby .ruby-value, #methods .method .description pre.ruby .ruby-value {
|
354
|
-
color: #7fffd4;
|
355
|
-
background: transparent; }
|
356
|
-
|
357
|
-
@media (min-width: 640px) {
|
358
|
-
div.class #content {
|
359
|
-
position: relative;
|
360
|
-
width: 72%; }
|
361
|
-
|
362
|
-
#method-list {
|
363
|
-
position: absolute;
|
364
|
-
top: 0px;
|
365
|
-
right: -33%;
|
366
|
-
width: 28%;
|
367
|
-
}
|
368
|
-
}
|