voloko-sdoc 0.1.10 → 0.2.0
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/VERSION.yml +2 -2
- data/lib/sdoc.rb +8 -6
- data/lib/sdoc/generator/shtml.rb +24 -56
- data/lib/sdoc/generator/template/merge/index.rhtml +14 -0
- data/lib/sdoc/generator/template/shtml/_context.rhtml +0 -0
- data/lib/sdoc/generator/template/shtml/class.rhtml +0 -0
- data/lib/sdoc/generator/template/shtml/file.rhtml +0 -0
- data/lib/sdoc/generator/template/shtml/index.rhtml +0 -0
- data/lib/sdoc/generator/template/shtml/resources/css/main.css +0 -0
- data/lib/sdoc/generator/template/shtml/resources/css/panel.css +0 -0
- data/lib/sdoc/generator/template/shtml/resources/css/reset.css +0 -0
- data/lib/sdoc/generator/template/shtml/resources/i/arrows.png +0 -0
- data/lib/sdoc/generator/template/shtml/resources/i/results_bg.png +0 -0
- data/lib/sdoc/generator/template/shtml/resources/i/tree_bg.png +0 -0
- data/lib/sdoc/generator/template/shtml/resources/js/jquery-1.3.2.min.js +0 -0
- data/lib/sdoc/generator/template/shtml/resources/js/main.js +0 -0
- data/lib/sdoc/generator/template/shtml/resources/js/searchdoc.js +3 -2
- data/lib/sdoc/generator/template/shtml/resources/panel/index.html +0 -0
- data/lib/sdoc/github.rb +1 -1
- data/lib/sdoc/merge.rb +32 -20
- data/lib/sdoc/templatable.rb +45 -0
- metadata +5 -2
data/VERSION.yml
CHANGED
data/lib/sdoc.rb
CHANGED
@@ -10,12 +10,14 @@ end
|
|
10
10
|
require "sdoc/generator/shtml"
|
11
11
|
require "sdoc/c_parser_fix"
|
12
12
|
|
13
|
-
|
14
|
-
|
13
|
+
unless defined? SDOC_FIXED_RDOC_OPTIONS
|
14
|
+
SDOC_FIXED_RDOC_OPTIONS = 1
|
15
|
+
class RDoc::Options
|
16
|
+
alias_method :rdoc_initialize, :initialize
|
15
17
|
|
16
|
-
|
17
|
-
|
18
|
-
|
18
|
+
def initialize
|
19
|
+
rdoc_initialize
|
20
|
+
@generator = RDoc::Generator::SHtml
|
21
|
+
end
|
19
22
|
end
|
20
23
|
end
|
21
|
-
|
data/lib/sdoc/generator/shtml.rb
CHANGED
@@ -17,6 +17,7 @@ require 'rdoc/generator'
|
|
17
17
|
require 'rdoc/generator/markup'
|
18
18
|
|
19
19
|
require 'sdoc/github'
|
20
|
+
require 'sdoc/templatable'
|
20
21
|
|
21
22
|
class RDoc::ClassModule
|
22
23
|
def with_documentation?
|
@@ -28,6 +29,7 @@ class RDoc::Generator::SHtml
|
|
28
29
|
RDoc::RDoc.add_generator( self )
|
29
30
|
include ERB::Util
|
30
31
|
include SDoc::GitHub
|
32
|
+
include SDoc::Templatable
|
31
33
|
|
32
34
|
GENERATOR_DIRS = [File.join('sdoc', 'generator'), File.join('rdoc', 'generator')]
|
33
35
|
|
@@ -50,6 +52,16 @@ class RDoc::Generator::SHtml
|
|
50
52
|
self.new(options)
|
51
53
|
end
|
52
54
|
|
55
|
+
def self.template_dir template
|
56
|
+
$LOAD_PATH.map do |path|
|
57
|
+
GENERATOR_DIRS.map do |dir|
|
58
|
+
File.join path, dir, 'template', template
|
59
|
+
end
|
60
|
+
end.flatten.find do |dir|
|
61
|
+
File.directory? dir
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
53
65
|
def initialize(options)
|
54
66
|
@options = options
|
55
67
|
@options.diagram = false
|
@@ -57,18 +69,12 @@ class RDoc::Generator::SHtml
|
|
57
69
|
|
58
70
|
template = @options.template || 'shtml'
|
59
71
|
|
60
|
-
|
61
|
-
GENERATOR_DIRS.map do |dir|
|
62
|
-
File.join path, dir, 'template', template
|
63
|
-
end
|
64
|
-
end.flatten.find do |dir|
|
65
|
-
File.directory? dir
|
66
|
-
end
|
72
|
+
templ_dir = self.class.template_dir template
|
67
73
|
|
68
74
|
raise RDoc::Error, "could not find template #{template.inspect}" unless
|
69
|
-
|
75
|
+
templ_dir
|
70
76
|
|
71
|
-
@template_dir = Pathname.new File.expand_path(
|
77
|
+
@template_dir = Pathname.new File.expand_path(templ_dir)
|
72
78
|
@basedir = Pathname.pwd.expand_path
|
73
79
|
end
|
74
80
|
|
@@ -108,7 +114,7 @@ class RDoc::Generator::SHtml
|
|
108
114
|
topclasses = @classes.select {|klass| !(RDoc::ClassModule === klass.parent) }
|
109
115
|
tree = generate_class_tree_level topclasses
|
110
116
|
debug_msg " writing class tree to %s" % TREE_FILE
|
111
|
-
File.open(TREE_FILE, "w") do |f|
|
117
|
+
File.open(TREE_FILE, "w", 0644) do |f|
|
112
118
|
f.write('var tree = '); f.write(tree.to_json)
|
113
119
|
end unless $dryrun
|
114
120
|
end
|
@@ -147,7 +153,7 @@ class RDoc::Generator::SHtml
|
|
147
153
|
data = {
|
148
154
|
:index => index
|
149
155
|
}
|
150
|
-
File.open(SEARCH_INDEX_FILE, "w") do |f|
|
156
|
+
File.open(SEARCH_INDEX_FILE, "w", 0644) do |f|
|
151
157
|
f.write('var search_data = '); f.write(data.to_json)
|
152
158
|
end unless $dryrun
|
153
159
|
end
|
@@ -206,7 +212,7 @@ class RDoc::Generator::SHtml
|
|
206
212
|
end
|
207
213
|
|
208
214
|
list.each do |method|
|
209
|
-
index[:searchIndex].push( search_string(method.name) )
|
215
|
+
index[:searchIndex].push( search_string(method.name) + '()' )
|
210
216
|
index[:longSearchIndex].push( search_string(method.parent.name) )
|
211
217
|
index[:info].push([
|
212
218
|
method.name,
|
@@ -254,7 +260,11 @@ class RDoc::Generator::SHtml
|
|
254
260
|
debug_msg "Generating index file in #@outputdir"
|
255
261
|
templatefile = @template_dir + 'index.rhtml'
|
256
262
|
outfile = @outputdir + 'index.html'
|
257
|
-
|
263
|
+
if @options.main_page && index_path = @files.find { |f| f.full_name == @options.main_page }
|
264
|
+
index_path = index_path.path
|
265
|
+
else
|
266
|
+
index_path = @files.first.path
|
267
|
+
end
|
258
268
|
|
259
269
|
self.render_template( templatefile, binding(), outfile )
|
260
270
|
end
|
@@ -293,48 +303,6 @@ class RDoc::Generator::SHtml
|
|
293
303
|
def copy_resources
|
294
304
|
resoureces_path = @template_dir + RESOURCES_DIR
|
295
305
|
debug_msg "Copying #{resoureces_path}/** to #{@outputdir}/**"
|
296
|
-
FileUtils.cp_r resoureces_path.to_s, @outputdir.to_s unless $dryrun
|
306
|
+
FileUtils.cp_r resoureces_path.to_s, @outputdir.to_s, :preserve => true unless $dryrun
|
297
307
|
end
|
298
|
-
|
299
|
-
### Load and render the erb template in the given +templatefile+ within the
|
300
|
-
### specified +context+ (a Binding object) and return output
|
301
|
-
### Both +templatefile+ and +outfile+ should be Pathname-like objects.
|
302
|
-
def eval_template(templatefile, context)
|
303
|
-
template_src = templatefile.read
|
304
|
-
template = ERB.new( template_src, nil, '<>' )
|
305
|
-
template.filename = templatefile.to_s
|
306
|
-
|
307
|
-
begin
|
308
|
-
template.result( context )
|
309
|
-
rescue NoMethodError => err
|
310
|
-
raise RDoc::Error, "Error while evaluating %s: %s (at %p)" % [
|
311
|
-
templatefile.to_s,
|
312
|
-
err.message,
|
313
|
-
eval( "_erbout[-50,50]", context )
|
314
|
-
], err.backtrace
|
315
|
-
end
|
316
|
-
end
|
317
|
-
|
318
|
-
### Load and render the erb template with the given +template_name+ within
|
319
|
-
### current context. Adds all +local_assigns+ to context
|
320
|
-
def include_template(template_name, local_assigns = {})
|
321
|
-
source = local_assigns.keys.map { |key| "#{key} = local_assigns[:#{key}];" }.join
|
322
|
-
eval("#{source};templatefile = @template_dir + template_name;eval_template(templatefile, binding)")
|
323
|
-
end
|
324
|
-
|
325
|
-
### Load and render the erb template in the given +templatefile+ within the
|
326
|
-
### specified +context+ (a Binding object) and write it out to +outfile+.
|
327
|
-
### Both +templatefile+ and +outfile+ should be Pathname-like objects.
|
328
|
-
def render_template( templatefile, context, outfile )
|
329
|
-
output = eval_template(templatefile, context)
|
330
|
-
unless $dryrun
|
331
|
-
outfile.dirname.mkpath
|
332
|
-
outfile.open( 'w', 0644 ) do |ofh|
|
333
|
-
ofh.print( output )
|
334
|
-
end
|
335
|
-
else
|
336
|
-
debug_msg " would have written %d bytes to %s" %
|
337
|
-
[ output.length, outfile ]
|
338
|
-
end
|
339
|
-
end
|
340
308
|
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
<!DOCTYPE html
|
2
|
+
PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
|
3
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
|
4
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
5
|
+
<head>
|
6
|
+
<meta http-equiv="Content-Type" content="text/html; charset=%charset%"/>
|
7
|
+
|
8
|
+
<title><%= @title %></title>
|
9
|
+
</head>
|
10
|
+
<frameset cols="300,*" frameborder="1" border="1" bordercolor="#666666" framespacing="1">
|
11
|
+
<frame src="panel/index.html" title="Search" name="panel" />
|
12
|
+
<frame src="<%= index_path %>" name="docwin" />
|
13
|
+
</frameset>
|
14
|
+
</html>
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -166,7 +166,7 @@ Searchdoc.Searcher.prototype = new function() {
|
|
166
166
|
|
167
167
|
/* ----- Utilities ------ */
|
168
168
|
function splitQuery(query) {
|
169
|
-
return jQuery.grep(query.split(
|
169
|
+
return jQuery.grep(query.split(/(\s+|\(\)?)/), function(string) { return string.match(/\S/) });
|
170
170
|
}
|
171
171
|
|
172
172
|
function buildRegexps(queries) {
|
@@ -506,7 +506,7 @@ Searchdoc.Tree.prototype = $.extend({}, Searchdoc.Navigation, new function() {
|
|
506
506
|
this.move = function(isDown) {
|
507
507
|
if (!this.$current) {
|
508
508
|
this.select(this.$list.find('li:first'));
|
509
|
-
return;
|
509
|
+
return true;
|
510
510
|
}
|
511
511
|
var next = this.$current[0];
|
512
512
|
if (isDown) {
|
@@ -526,6 +526,7 @@ Searchdoc.Tree.prototype = $.extend({}, Searchdoc.Navigation, new function() {
|
|
526
526
|
scrollIntoView(next, this.$element[0]);
|
527
527
|
this.$current = $(next);
|
528
528
|
}
|
529
|
+
return true;
|
529
530
|
}
|
530
531
|
|
531
532
|
function toggleVis($li, show) {
|
File without changes
|
data/lib/sdoc/github.rb
CHANGED
data/lib/sdoc/merge.rb
CHANGED
@@ -3,25 +3,34 @@ require 'pathname'
|
|
3
3
|
require 'fileutils'
|
4
4
|
require 'json'
|
5
5
|
|
6
|
+
require 'sdoc/templatable'
|
7
|
+
|
6
8
|
class SDoc::Merge
|
9
|
+
include SDoc::Templatable
|
7
10
|
|
8
11
|
FLAG_FILE = "created.rid"
|
9
12
|
|
10
13
|
def initialize()
|
11
14
|
@names = []
|
12
15
|
@op_dir = 'doc'
|
16
|
+
@title = ''
|
13
17
|
@directories = []
|
18
|
+
template_dir = RDoc::Generator::SHtml.template_dir('merge')
|
19
|
+
@template_dir = Pathname.new File.expand_path(template_dir)
|
14
20
|
end
|
15
21
|
|
16
22
|
def merge(options)
|
17
23
|
parse_options options
|
18
24
|
|
25
|
+
@outputdir = Pathname.new( @op_dir )
|
26
|
+
|
19
27
|
check_directories
|
20
28
|
setup_output_dir
|
21
29
|
setup_names
|
22
30
|
copy_files
|
23
|
-
merge_tree
|
24
31
|
merge_search_index
|
32
|
+
merge_tree
|
33
|
+
generate_index_file
|
25
34
|
end
|
26
35
|
|
27
36
|
def parse_options(options)
|
@@ -35,6 +44,10 @@ class SDoc::Merge
|
|
35
44
|
opt.on("-o", "--op [DIRECTORY]", "Set the output directory") do |v|
|
36
45
|
@op_dir = v
|
37
46
|
end
|
47
|
+
|
48
|
+
opt.on("-t", "--title [TITLE]", "Set the title of merged file") do |v|
|
49
|
+
@title = v
|
50
|
+
end
|
38
51
|
end
|
39
52
|
opts.parse! options
|
40
53
|
@directories = options.dup
|
@@ -49,7 +62,7 @@ class SDoc::Merge
|
|
49
62
|
subtree = JSON.parse data
|
50
63
|
item = [
|
51
64
|
name,
|
52
|
-
|
65
|
+
@indexes[name]["index"]["info"][0][2],
|
53
66
|
'',
|
54
67
|
append_path(subtree, name)
|
55
68
|
]
|
@@ -58,7 +71,7 @@ class SDoc::Merge
|
|
58
71
|
|
59
72
|
dst = File.join @op_dir, RDoc::Generator::SHtml::TREE_FILE
|
60
73
|
FileUtils.mkdir_p File.dirname(dst)
|
61
|
-
File.open(dst, "w") do |f|
|
74
|
+
File.open(dst, "w", 0644) do |f|
|
62
75
|
f.write('var tree = '); f.write(tree.to_json)
|
63
76
|
end
|
64
77
|
end
|
@@ -73,11 +86,13 @@ class SDoc::Merge
|
|
73
86
|
|
74
87
|
def merge_search_index
|
75
88
|
items = []
|
89
|
+
@indexes = {}
|
76
90
|
@directories.each_with_index do |dir, i|
|
77
91
|
name = @names[i]
|
78
92
|
filename = File.join dir, RDoc::Generator::SHtml::SEARCH_INDEX_FILE
|
79
93
|
data = open(filename).read.sub(/var search_data =\s*/, '')
|
80
94
|
subindex = JSON.parse data
|
95
|
+
@indexes[name] = subindex
|
81
96
|
|
82
97
|
searchIndex = subindex["index"]["searchIndex"]
|
83
98
|
longSearchIndex = subindex["index"]["longSearchIndex"]
|
@@ -92,15 +107,8 @@ class SDoc::Merge
|
|
92
107
|
end
|
93
108
|
end
|
94
109
|
items.sort! do |a, b|
|
95
|
-
|
96
|
-
|
97
|
-
(a[:info][6] == b[:info][6] ? # or doc part
|
98
|
-
a[:info][1] <=> b[:info][1] : # or namespace
|
99
|
-
a[:info][6] <=> b[:info][6]
|
100
|
-
) :
|
101
|
-
a[:info][0] <=> b[:info][0]
|
102
|
-
) :
|
103
|
-
a[:info][5] <=> b[:info][5]
|
110
|
+
# type (class/method/file) or name or doc part or namespace
|
111
|
+
[a[:info][5], a[:info][0], a[:info][6], a[:info][1]] <=> [b[:info][5], b[:info][0], b[:info][6], b[:info][1]]
|
104
112
|
end
|
105
113
|
|
106
114
|
index = {
|
@@ -115,13 +123,21 @@ class SDoc::Merge
|
|
115
123
|
|
116
124
|
dst = File.join @op_dir, RDoc::Generator::SHtml::SEARCH_INDEX_FILE
|
117
125
|
FileUtils.mkdir_p File.dirname(dst)
|
118
|
-
File.open(dst, "w") do |f|
|
126
|
+
File.open(dst, "w", 0644) do |f|
|
119
127
|
f.write('var search_data = '); f.write(search_data.to_json)
|
120
128
|
end
|
121
129
|
end
|
122
130
|
|
131
|
+
def generate_index_file
|
132
|
+
templatefile = @template_dir + 'index.rhtml'
|
133
|
+
outfile = @outputdir + 'index.html'
|
134
|
+
index_path = @indexes[@names.first]["index"]["info"][0][2]
|
135
|
+
|
136
|
+
render_template templatefile, binding(), outfile
|
137
|
+
end
|
138
|
+
|
123
139
|
def setup_names
|
124
|
-
unless @names.size
|
140
|
+
unless @names.size > 0
|
125
141
|
@directories.each do |dir|
|
126
142
|
name = File.basename dir
|
127
143
|
name = File.basename File.dirname(dir) if name == 'doc'
|
@@ -138,7 +154,7 @@ class SDoc::Merge
|
|
138
154
|
|
139
155
|
Dir.new(dir).each do |item|
|
140
156
|
if File.directory?(File.join(dir, item)) && item != '.' && item != '..' && item != index_dir
|
141
|
-
FileUtils.cp_r File.join(dir, item), File.join(@op_dir, name, item)
|
157
|
+
FileUtils.cp_r File.join(dir, item), File.join(@op_dir, name, item), :preserve => true
|
142
158
|
end
|
143
159
|
end
|
144
160
|
end
|
@@ -146,7 +162,7 @@ class SDoc::Merge
|
|
146
162
|
dir = @directories.first
|
147
163
|
Dir.new(dir).each do |item|
|
148
164
|
if item != '.' && item != '..' && item != RDoc::Generator::SHtml::FILE_DIR && item != RDoc::Generator::SHtml::CLASS_DIR
|
149
|
-
FileUtils.cp_r File.join(dir, item), @op_dir
|
165
|
+
FileUtils.cp_r File.join(dir, item), @op_dir, :preserve => true
|
150
166
|
end
|
151
167
|
end
|
152
168
|
end
|
@@ -168,10 +184,6 @@ class SDoc::Merge
|
|
168
184
|
end
|
169
185
|
end
|
170
186
|
|
171
|
-
def update_output_dir(op_dir, time)
|
172
|
-
File.open(File.join @op_dir, FLAG_FILE, "w") { |f| f.puts time.rfc2822 }
|
173
|
-
end
|
174
|
-
|
175
187
|
##
|
176
188
|
# Report an error message and exit
|
177
189
|
|
@@ -0,0 +1,45 @@
|
|
1
|
+
require "sdoc"
|
2
|
+
|
3
|
+
module SDoc::Templatable
|
4
|
+
### Load and render the erb template in the given +templatefile+ within the
|
5
|
+
### specified +context+ (a Binding object) and return output
|
6
|
+
### Both +templatefile+ and +outfile+ should be Pathname-like objects.
|
7
|
+
def eval_template(templatefile, context)
|
8
|
+
template_src = templatefile.read
|
9
|
+
template = ERB.new( template_src, nil, '<>' )
|
10
|
+
template.filename = templatefile.to_s
|
11
|
+
|
12
|
+
begin
|
13
|
+
template.result( context )
|
14
|
+
rescue NoMethodError => err
|
15
|
+
raise RDoc::Error, "Error while evaluating %s: %s (at %p)" % [
|
16
|
+
templatefile.to_s,
|
17
|
+
err.message,
|
18
|
+
eval( "_erbout[-50,50]", context )
|
19
|
+
], err.backtrace
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
### Load and render the erb template with the given +template_name+ within
|
24
|
+
### current context. Adds all +local_assigns+ to context
|
25
|
+
def include_template(template_name, local_assigns = {})
|
26
|
+
source = local_assigns.keys.map { |key| "#{key} = local_assigns[:#{key}];" }.join
|
27
|
+
eval("#{source};templatefile = @template_dir + template_name;eval_template(templatefile, binding)")
|
28
|
+
end
|
29
|
+
|
30
|
+
### Load and render the erb template in the given +templatefile+ within the
|
31
|
+
### specified +context+ (a Binding object) and write it out to +outfile+.
|
32
|
+
### Both +templatefile+ and +outfile+ should be Pathname-like objects.
|
33
|
+
def render_template( templatefile, context, outfile )
|
34
|
+
output = eval_template(templatefile, context)
|
35
|
+
unless $dryrun
|
36
|
+
outfile.dirname.mkpath
|
37
|
+
outfile.open( 'w', 0644 ) do |file|
|
38
|
+
file.print( output )
|
39
|
+
end
|
40
|
+
else
|
41
|
+
debug_msg " would have written %d bytes to %s" %
|
42
|
+
[ output.length, outfile ]
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: voloko-sdoc
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Volodya Kolesnikov
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-04-
|
12
|
+
date: 2009-04-03 00:00:00 -07:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -51,6 +51,8 @@ files:
|
|
51
51
|
- lib/sdoc/generator
|
52
52
|
- lib/sdoc/generator/shtml.rb
|
53
53
|
- lib/sdoc/generator/template
|
54
|
+
- lib/sdoc/generator/template/merge
|
55
|
+
- lib/sdoc/generator/template/merge/index.rhtml
|
54
56
|
- lib/sdoc/generator/template/shtml
|
55
57
|
- lib/sdoc/generator/template/shtml/_context.rhtml
|
56
58
|
- lib/sdoc/generator/template/shtml/class.rhtml
|
@@ -73,6 +75,7 @@ files:
|
|
73
75
|
- lib/sdoc/generator/template/shtml/resources/panel/index.html
|
74
76
|
- lib/sdoc/github.rb
|
75
77
|
- lib/sdoc/merge.rb
|
78
|
+
- lib/sdoc/templatable.rb
|
76
79
|
- lib/sdoc.rb
|
77
80
|
- README
|
78
81
|
- LICENSE
|