rdoc-generator-fivefish 0.0.1 → 0.1.0.pre.87
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +4 -2
- data/.gemtest +0 -0
- data/ChangeLog +35 -2
- data/History.rdoc +11 -0
- data/Rakefile +8 -5
- data/data/rdoc-generator-fivefish/css/fivefish.min.css +29 -1
- data/data/rdoc-generator-fivefish/templates/class.tmpl +12 -0
- data/data/rdoc-generator-fivefish/templates/index.tmpl +5 -4
- data/data/rdoc-generator-fivefish/templates/layout.tmpl +3 -0
- data/lib/fivefish.rb +6 -4
- data/lib/rdoc/discover.rb +2 -0
- data/lib/rdoc/generator/fivefish.rb +179 -122
- metadata +68 -64
- metadata.gz.sig +0 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: b1c31edb8ff7f8f6979b5391984e439c9fa285a1
|
4
|
+
data.tar.gz: a82da0842d0ca0c73593cab01fecf212f43a2d88
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 1fc838df2a6111ff7c11fdda5b7ae803dec5b6cb73ccd5a793413c3b482c51ecc3faa1452e5aba2fbc85f1e8e8a199f2433a03ab869ef9fa14e8a012e3367df4
|
7
|
+
data.tar.gz: 6b265b5dc435fbc5c88d695dd63daa3aa37f590fca4b80e51e9c55a50218cb89c508cadcc6a19ce3445aa3a7b1b7c3acda01e1189910e2bf03400d2c4e5cc5ee
|
checksums.yaml.gz.sig
ADDED
Binary file
|
data.tar.gz.sig
CHANGED
@@ -1,2 +1,4 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
ry
|
2
|
+
�
|
3
|
+
H��@�#��:��t���ս�~;���ŵ�i��Z��N�Y���n>�!-!�B˫��d
|
4
|
+
���7�)���4|�V�%hZ(T�]����8L�%�jjy���E�L�W�s�ΐ��i
|
data/.gemtest
ADDED
File without changes
|
data/ChangeLog
CHANGED
@@ -1,8 +1,41 @@
|
|
1
|
+
2012-12-10 Michael Granger <ged@FaerieMUD.org>
|
2
|
+
|
3
|
+
* .rvm.gems, Rakefile, lib/fivefish.rb, lib/rdoc/discover.rb,
|
4
|
+
lib/rdoc/generator/fivefish.rb:
|
5
|
+
Update for RDoc 4
|
6
|
+
[06e965cb1905] [tip]
|
7
|
+
|
8
|
+
2012-09-12 Michael Granger <ged@FaerieMUD.org>
|
9
|
+
|
10
|
+
* .hgtags:
|
11
|
+
Added tag v0.0.1 for changeset dc96dffc23e0
|
12
|
+
[b33f8d965c61] [github/master]
|
13
|
+
|
14
|
+
* .hgsigs:
|
15
|
+
Added signature for changeset e900e8771607
|
16
|
+
[dc96dffc23e0] [v0.0.1]
|
17
|
+
|
18
|
+
* History.rdoc:
|
19
|
+
Update the history doc
|
20
|
+
[e900e8771607]
|
21
|
+
|
22
|
+
* tasks/bootstrap.rb:
|
23
|
+
Clone instead of qcloning the bootstrap repo
|
24
|
+
[ef81a5b81b7f]
|
25
|
+
|
26
|
+
* tasks/bootstrap.rb:
|
27
|
+
Use my bitbucket clone of bootstrap.
|
28
|
+
[fd83414d9340]
|
29
|
+
|
30
|
+
* README.rdoc:
|
31
|
+
Updated the README.
|
32
|
+
[6bef1f941287]
|
33
|
+
|
1
34
|
2012-07-27 Michael Granger <ged@FaerieMUD.org>
|
2
35
|
|
3
36
|
* assets/css/fivefish.css:
|
4
37
|
Adding line-height to description Ps
|
5
|
-
[4eebebca05bc]
|
38
|
+
[4eebebca05bc]
|
6
39
|
|
7
40
|
2012-07-16 Michael Granger <ged@FaerieMUD.org>
|
8
41
|
|
@@ -43,7 +76,7 @@
|
|
43
76
|
|
44
77
|
* assets/css/fivefish.css:
|
45
78
|
Try another CSS strategy for the offset anchor targets.
|
46
|
-
[b9337d344ae5]
|
79
|
+
[b9337d344ae5] [github/master@default]
|
47
80
|
|
48
81
|
2012-05-21 Michael Granger <ged@FaerieMUD.org>
|
49
82
|
|
data/History.rdoc
CHANGED
@@ -1,3 +1,14 @@
|
|
1
|
+
== v0.1.0 [2013-02-27] Michael Granger <ged@FaerieMUD.org>
|
2
|
+
|
3
|
+
- Add some CSS and module-index visual tweaks
|
4
|
+
- Make the synopsis-extraction more intelligent
|
5
|
+
- Add support for module extension
|
6
|
+
- Add Ruby 2.0 support
|
7
|
+
- Add an --additional-stylesheet option
|
8
|
+
- Make the anchor and top links in titles less obnoxious
|
9
|
+
- Update for RDoc 4
|
10
|
+
|
11
|
+
|
1
12
|
== v0.0.1 [2012-09-12] Michael Granger <ged@FaerieMUD.org>
|
2
13
|
|
3
14
|
Initial release.
|
data/Rakefile
CHANGED
@@ -70,12 +70,14 @@ hoespec = Hoe.spec( PACKAGE_NAME ) do
|
|
70
70
|
|
71
71
|
self.developer 'Michael Granger', 'ged@FaerieMUD.org'
|
72
72
|
|
73
|
-
self.dependency 'inversion',
|
74
|
-
self.dependency '
|
75
|
-
self.dependency '
|
73
|
+
self.dependency 'inversion', '~> 0.12'
|
74
|
+
self.dependency 'loggability', '~> 0.6'
|
75
|
+
self.dependency 'yajl-ruby', '~> 1.1'
|
76
|
+
self.dependency 'rdoc', '~> 4.0'
|
76
77
|
|
77
|
-
self.dependency '
|
78
|
-
self.dependency '
|
78
|
+
self.dependency 'hoe-deveiate', '~> 0.2', :developer
|
79
|
+
self.dependency 'uglifier', '~> 1.2', :developer
|
80
|
+
self.dependency 'less', '~> 2.2', :developer
|
79
81
|
|
80
82
|
self.spec_extras[:licenses] = ["BSD"]
|
81
83
|
self.require_ruby_version( '>=1.9.3' )
|
@@ -109,6 +111,7 @@ task :dev do
|
|
109
111
|
ENV['FIVEFISH_DEVELMODE'] = 'true'
|
110
112
|
end
|
111
113
|
|
114
|
+
task :gem => :assets
|
112
115
|
|
113
116
|
# Eat our own dogfood
|
114
117
|
task :docs => :assets
|
@@ -91,7 +91,10 @@ div.container > header.hero-unit h1 {
|
|
91
91
|
display: inline-block;
|
92
92
|
text-shadow: 1px 1px 3px rgba( 25,25,25, 0.2 );
|
93
93
|
}
|
94
|
-
|
94
|
+
/* ...and allow it to be flexible about its width */
|
95
|
+
.popover {
|
96
|
+
width: inherit;
|
97
|
+
}
|
95
98
|
|
96
99
|
/* Indexes */
|
97
100
|
section#indexes {
|
@@ -125,6 +128,20 @@ section.description h3 {
|
|
125
128
|
margin-bottom: 0;
|
126
129
|
}
|
127
130
|
|
131
|
+
header h1 span,
|
132
|
+
section.description h2 span,
|
133
|
+
section.description h3 span,
|
134
|
+
section.description h4 span {
|
135
|
+
font-size: 12px;
|
136
|
+
padding: 0 0.5em;
|
137
|
+
}
|
138
|
+
header h1 span a,
|
139
|
+
section.description h2 span a,
|
140
|
+
section.description h3 span a,
|
141
|
+
section.description h4 span a {
|
142
|
+
color: #bbb;
|
143
|
+
}
|
144
|
+
|
128
145
|
/* :section: groups */
|
129
146
|
section.documentation-section {
|
130
147
|
margin-top: 3em;
|
@@ -394,7 +411,18 @@ div.dropdown-menu {
|
|
394
411
|
content: "";
|
395
412
|
}
|
396
413
|
|
414
|
+
.nav-list li a {
|
415
|
+
overflow: hidden;
|
416
|
+
text-overflow: ellipsis;
|
417
|
+
}
|
418
|
+
.nav-list li a:hover {
|
419
|
+
overflow: visible;
|
420
|
+
}
|
421
|
+
.nav-list li .ns {
|
422
|
+
font-size: smaller;
|
423
|
+
}
|
397
424
|
|
398
425
|
footer {
|
399
426
|
padding: 1em 0 3em;
|
400
427
|
}
|
428
|
+
|
@@ -44,6 +44,18 @@
|
|
44
44
|
<?end if ?>
|
45
45
|
<?end for ?>
|
46
46
|
<?end unless ?>
|
47
|
+
|
48
|
+
<?unless klass.extends.empty? ?>
|
49
|
+
<dt>Extended With</dt>
|
50
|
+
<?for ext in klass.extends ?>
|
51
|
+
<?if ext.module.respond_to?(:path) ?>
|
52
|
+
<dd class="extend"><a href="[?call klass.aref_to(ext.module.path) ?]"><?call
|
53
|
+
ext.module.full_name ?></a></dd>
|
54
|
+
<?else ?>
|
55
|
+
<dd class="extend"><?call ext.name ?></dd>
|
56
|
+
<?end if ?>
|
57
|
+
<?end for ?>
|
58
|
+
<?end unless ?>
|
47
59
|
</dl>
|
48
60
|
</section>
|
49
61
|
|
@@ -1,4 +1,4 @@
|
|
1
|
-
<?import rel_prefix, modsort, files ?>
|
1
|
+
<?import rel_prefix, modsort, methods, files ?>
|
2
2
|
|
3
3
|
<header class="hero-unit">
|
4
4
|
<?attr synopsis ?>
|
@@ -14,8 +14,9 @@
|
|
14
14
|
<ul id="class-index" class="nav nav-list">
|
15
15
|
<li class="nav-header">Classes/Modules</li>
|
16
16
|
<?for index_class in modsort.select( &:documented? ).uniq {|c| c.path } ?>
|
17
|
-
<li><a href="[?attr rel_prefix ?]/[?call index_class.path ?]"
|
18
|
-
index_class.full_name
|
17
|
+
<li><a href="[?attr rel_prefix ?]/[?call index_class.path ?]"
|
18
|
+
title="[?call index_class.full_name ?]"><?call
|
19
|
+
index_class.full_name.gsub(/(.+?)(?=::)/, '<span class="ns">\\1</span>') ?></a></li>
|
19
20
|
<?end for ?>
|
20
21
|
</ul>
|
21
22
|
</div>
|
@@ -23,7 +24,7 @@
|
|
23
24
|
<div class="span4">
|
24
25
|
<ul id="method-index" class="nav nav-list">
|
25
26
|
<li class="nav-header">Methods</li>
|
26
|
-
<?for method in
|
27
|
+
<?for method in methods.uniq {|m| m.path } ?>
|
27
28
|
<li class="method"><a title="[?call method.parent.full_name ?]"
|
28
29
|
href="[?call method.path ?]"><?call method.pretty_name ?>
|
29
30
|
<span class="method-parent">[<?call
|
@@ -28,6 +28,9 @@
|
|
28
28
|
<link href="[?attr rel_prefix ?]" rel="prefix" />
|
29
29
|
|
30
30
|
<link href="[?attr rel_prefix ?]/css/fivefish.min.css" rel="stylesheet" />
|
31
|
+
<?if rdoc_options.additional_stylesheet ?>
|
32
|
+
<link href="[?call rdoc_options.additional_stylesheet ?]" rel="stylesheet" title="Site Style" />
|
33
|
+
<?end if ?>
|
31
34
|
|
32
35
|
<script src="[?attr rel_prefix ?]/js/jquery-1.7.1.min.js" type="text/javascript"
|
33
36
|
defer="defer" charset="utf-8"></script>
|
data/lib/fivefish.rb
CHANGED
@@ -4,19 +4,20 @@ require 'rdoc/rdoc'
|
|
4
4
|
require 'rdoc/generator/fivefish'
|
5
5
|
|
6
6
|
# :title: Fivefish RDoc
|
7
|
-
|
7
|
+
#
|
8
8
|
# Toplevel namespace for Fivefish. The main goods are in RDoc::Generator::Fivefish.
|
9
9
|
module Fivefish
|
10
10
|
|
11
11
|
# Library version constant
|
12
|
-
VERSION = '0.0
|
12
|
+
VERSION = '0.1.0'
|
13
13
|
|
14
14
|
# Version-control revision constant
|
15
|
-
REVISION = %q$Revision:
|
15
|
+
REVISION = %q$Revision: 7b178d4789f8 $
|
16
16
|
|
17
17
|
# Fivefish project URL
|
18
18
|
PROJECT_URL = 'http://deveiate.org/fivefish.html'
|
19
19
|
|
20
|
+
|
20
21
|
### Get the library version. If +include_buildnum+ is true, the version string will
|
21
22
|
### include the VCS rev ID.
|
22
23
|
def self::version_string( include_buildnum=false )
|
@@ -25,4 +26,5 @@ module Fivefish
|
|
25
26
|
return vstring
|
26
27
|
end
|
27
28
|
|
28
|
-
end # module Fivefish
|
29
|
+
end # module Fivefish
|
30
|
+
|
data/lib/rdoc/discover.rb
CHANGED
@@ -1,9 +1,11 @@
|
|
1
1
|
# -*- mode: ruby; ruby-indent-level: 4; tab-width: 4 -*-
|
2
2
|
|
3
|
-
gem 'rdoc'
|
3
|
+
gem 'rdoc'
|
4
4
|
|
5
|
+
require 'uri'
|
5
6
|
require 'yajl'
|
6
7
|
require 'inversion'
|
8
|
+
require 'loggability'
|
7
9
|
require 'fileutils'
|
8
10
|
require 'pathname'
|
9
11
|
require 'rdoc/rdoc'
|
@@ -11,8 +13,14 @@ require 'rdoc/generator/json_index'
|
|
11
13
|
|
12
14
|
# The Fivefish generator class.
|
13
15
|
class RDoc::Generator::Fivefish
|
16
|
+
extend Loggability
|
14
17
|
include FileUtils
|
15
18
|
|
19
|
+
|
20
|
+
# Loggability API -- set up a Logger for Fivefish
|
21
|
+
log_as :fivefish
|
22
|
+
|
23
|
+
|
16
24
|
# The data directory in the project if that exists, otherwise the gem datadir
|
17
25
|
DATADIR = if ENV['FIVEFISH_DATADIR']
|
18
26
|
Pathname( ENV['FIVEFISH_DATADIR'] ).expand_path( Pathname.pwd )
|
@@ -28,11 +36,32 @@ class RDoc::Generator::Fivefish
|
|
28
36
|
RDoc::RDoc.add_generator( self )
|
29
37
|
|
30
38
|
|
39
|
+
### Add generator-specific options to the option-parser
|
40
|
+
def self::setup_options( rdoc_options )
|
41
|
+
op = rdoc_options.option_parser
|
42
|
+
|
43
|
+
op.accept( URI ) do |string|
|
44
|
+
uri = URI.parse( string ) rescue nil
|
45
|
+
raise OptionParser::InvalidArgument unless uri
|
46
|
+
uri
|
47
|
+
end
|
48
|
+
op.on( '--additional-stylesheet=URL', URI,
|
49
|
+
"Add an additional (preferred) stylesheet",
|
50
|
+
"link to each generated page. This allows",
|
51
|
+
"the output style to be overridden." ) do |url|
|
52
|
+
rdoc_options.additional_stylesheet = url
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
|
31
57
|
### Set up some instance variables
|
32
|
-
def initialize( options )
|
58
|
+
def initialize( store, options )
|
59
|
+
@store = store
|
33
60
|
@options = options
|
34
61
|
$DEBUG_RDOC = $VERBOSE || $DEBUG
|
35
62
|
|
63
|
+
self.log.debug "Setting up generator for %p with options: %p" % [ @store, @options ]
|
64
|
+
|
36
65
|
extend( FileUtils::Verbose ) if $DEBUG_RDOC
|
37
66
|
extend( FileUtils::DryRun ) if options.dry_run
|
38
67
|
|
@@ -65,6 +94,9 @@ class RDoc::Generator::Fivefish
|
|
65
94
|
# The command-line options given to the rdoc command
|
66
95
|
attr_reader :options
|
67
96
|
|
97
|
+
# The RDoc::Store that contains the parsed CodeObjects
|
98
|
+
attr_reader :store
|
99
|
+
|
68
100
|
|
69
101
|
### Output progress information if debugging is enabled
|
70
102
|
def debug_msg( *msg )
|
@@ -87,13 +119,9 @@ class RDoc::Generator::Fivefish
|
|
87
119
|
end
|
88
120
|
|
89
121
|
|
90
|
-
### Build the initial indices and output objects based on
|
91
|
-
|
92
|
-
|
93
|
-
@files = top_levels.sort
|
94
|
-
@classes = RDoc::TopLevel.all_classes_and_modules.sort
|
95
|
-
@methods = @classes.map {|m| m.method_list }.flatten.sort
|
96
|
-
@modsort = self.get_sorted_module_list( @classes )
|
122
|
+
### Build the initial indices and output objects based on the files in the generator's store.
|
123
|
+
def generate
|
124
|
+
self.populate_data_objects
|
97
125
|
|
98
126
|
self.generate_index_page
|
99
127
|
self.generate_class_files
|
@@ -105,111 +133,19 @@ class RDoc::Generator::Fivefish
|
|
105
133
|
end
|
106
134
|
|
107
135
|
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
def find_static_assets
|
116
|
-
paths = self.options.static_path || []
|
117
|
-
self.debug_msg "Finding asset paths. Static paths: %p" % [ paths ]
|
118
|
-
|
119
|
-
# Add each subdirectory of the template dir
|
120
|
-
self.debug_msg " adding directories under %s" % [ self.template_dir ]
|
121
|
-
paths << self.template_dir
|
122
|
-
self.debug_msg " paths are now: %p" % [ paths ]
|
123
|
-
|
124
|
-
return paths.flatten.compact.uniq
|
125
|
-
end
|
126
|
-
|
127
|
-
|
128
|
-
### Copies static files from the static_path into the output directory
|
129
|
-
def copy_static_assets
|
130
|
-
asset_paths = self.find_static_assets
|
131
|
-
|
132
|
-
self.debug_msg "Copying assets from paths:", *asset_paths
|
133
|
-
|
134
|
-
asset_paths.each do |path|
|
135
|
-
|
136
|
-
# For plain files, just install them
|
137
|
-
if path.file?
|
138
|
-
self.debug_msg " plain file; installing as-is"
|
139
|
-
install( path, self.output_dir, :mode => 0644 )
|
140
|
-
|
141
|
-
# Glob all the files out of subdirectories and install them
|
142
|
-
elsif path.directory?
|
143
|
-
self.debug_msg " directory %p; copying contents" % [ path ]
|
144
|
-
|
145
|
-
Pathname.glob( path + '{css,fonts,img,js}/**/*'.to_s ).each do |asset|
|
146
|
-
next if asset.directory? || asset.basename.to_s.start_with?( '.' )
|
147
|
-
|
148
|
-
dst = asset.relative_path_from( path )
|
149
|
-
dst.dirname.mkpath
|
150
|
-
|
151
|
-
self.debug_msg " %p -> %p" % [ asset, dst ]
|
152
|
-
install asset, dst, :mode => 0644
|
153
|
-
end
|
154
|
-
end
|
155
|
-
end
|
156
|
-
end
|
157
|
-
|
158
|
-
|
159
|
-
### Return a list of the documented modules sorted by salience first, then
|
160
|
-
### by name.
|
161
|
-
def get_sorted_module_list(classes)
|
162
|
-
nscounts = classes.inject({}) do |counthash, klass|
|
163
|
-
top_level = klass.full_name.gsub( /::.*/, '' )
|
164
|
-
counthash[top_level] ||= 0
|
165
|
-
counthash[top_level] += 1
|
166
|
-
|
167
|
-
counthash
|
168
|
-
end
|
169
|
-
|
170
|
-
# Sort based on how often the top level namespace occurs, and then on the
|
171
|
-
# name of the module -- this works for projects that put their stuff into
|
172
|
-
# a namespace, of course, but doesn't hurt if they don't.
|
173
|
-
classes.sort_by do |klass|
|
174
|
-
top_level = klass.full_name.gsub( /::.*/, '' )
|
175
|
-
[nscounts[top_level] * -1, klass.full_name]
|
176
|
-
end.select do |klass|
|
177
|
-
klass.display?
|
178
|
-
end
|
179
|
-
end
|
180
|
-
|
181
|
-
|
182
|
-
### Fetch the template with the specified +name+ from the cache or load it
|
183
|
-
### and cache it.
|
184
|
-
def load_template( name )
|
185
|
-
unless @template_cache.key?( name )
|
186
|
-
@template_cache[ name ] = Inversion::Template.load( name, encoding:'utf-8' )
|
187
|
-
end
|
188
|
-
|
189
|
-
return @template_cache[ name ].dup
|
190
|
-
end
|
191
|
-
|
192
|
-
|
193
|
-
### Load the layout template and return it after setting any values it needs.
|
194
|
-
def load_layout_template
|
195
|
-
template = self.load_template( 'layout.tmpl' )
|
196
|
-
|
197
|
-
template.files = @files
|
198
|
-
template.classes = @classes
|
199
|
-
template.methods = @methods
|
200
|
-
template.modsort = @modsort
|
201
|
-
template.rdoc_options = @options
|
202
|
-
|
203
|
-
template.rdoc_version = RDoc::VERSION
|
204
|
-
template.fivefish_version = Fivefish.version_string
|
205
|
-
|
206
|
-
return template
|
136
|
+
### Populate the data objects necessary to generate documentation from the generator's
|
137
|
+
### #store.
|
138
|
+
def populate_data_objects
|
139
|
+
@files = self.store.all_files.sort
|
140
|
+
@classes = self.store.all_classes_and_modules.sort
|
141
|
+
@methods = @classes.map {|m| m.method_list }.flatten.sort
|
142
|
+
@modsort = self.get_sorted_module_list( @classes )
|
207
143
|
end
|
208
144
|
|
209
145
|
|
210
146
|
### Generate an index page which lists all the classes which are documented.
|
211
147
|
def generate_index_page
|
212
|
-
self.
|
148
|
+
self.log.debug "Generating index page"
|
213
149
|
layout = self.load_layout_template
|
214
150
|
template = self.load_template( 'index.tmpl' )
|
215
151
|
out_file = self.output_dir + 'index.html'
|
@@ -221,17 +157,13 @@ class RDoc::Generator::Fivefish
|
|
221
157
|
else
|
222
158
|
mainpage = @files.find {|f| f.full_name =~ /\breadme\b/i }
|
223
159
|
end
|
224
|
-
self.
|
160
|
+
self.log.debug " using main_page (%s)" % [ mainpage ]
|
225
161
|
|
226
162
|
if mainpage
|
227
163
|
template.mainpage = mainpage
|
228
|
-
template.synopsis =
|
164
|
+
template.synopsis = self.extract_synopsis( mainpage )
|
229
165
|
end
|
230
166
|
|
231
|
-
template.all_methods = RDoc::TopLevel.all_classes_and_modules.flat_map do |mod|
|
232
|
-
mod.method_list
|
233
|
-
end.sort
|
234
|
-
|
235
167
|
layout.rel_prefix = self.output_dir.relative_path_from( out_file.dirname )
|
236
168
|
layout.contents = template
|
237
169
|
layout.pageclass = 'index-page'
|
@@ -245,10 +177,10 @@ class RDoc::Generator::Fivefish
|
|
245
177
|
layout = self.load_layout_template
|
246
178
|
template = self.load_template( 'class.tmpl' )
|
247
179
|
|
248
|
-
|
180
|
+
self.log.debug "Generating class documentation in #{self.output_dir}"
|
249
181
|
|
250
182
|
@classes.each do |klass|
|
251
|
-
|
183
|
+
self.log.debug " working on %s (%s)" % [klass.full_name, klass.path]
|
252
184
|
|
253
185
|
out_file = self.output_dir + klass.path
|
254
186
|
out_file.dirname.mkpath
|
@@ -269,13 +201,13 @@ class RDoc::Generator::Fivefish
|
|
269
201
|
layout = self.load_layout_template
|
270
202
|
template = self.load_template( 'file.tmpl' )
|
271
203
|
|
272
|
-
|
204
|
+
self.log.debug "Generating file documentation in #{self.output_dir}"
|
273
205
|
|
274
206
|
@files.select {|f| f.text? }.each do |file|
|
275
207
|
out_file = self.output_dir + file.path
|
276
208
|
out_file.dirname.mkpath
|
277
209
|
|
278
|
-
|
210
|
+
self.log.debug " working on %s (%s)" % [file.full_name, out_file]
|
279
211
|
|
280
212
|
template.file = file
|
281
213
|
|
@@ -302,12 +234,12 @@ class RDoc::Generator::Fivefish
|
|
302
234
|
def generate_search_index
|
303
235
|
out_file = self.output_dir + 'js/searchindex.js'
|
304
236
|
|
305
|
-
self.
|
237
|
+
self.log.debug "Generating search index (%s)." % [ out_file ]
|
306
238
|
index = []
|
307
239
|
|
308
240
|
objs = self.get_indexable_objects
|
309
241
|
objs.each do |codeobj|
|
310
|
-
self.
|
242
|
+
self.log.debug " #{codeobj.name}..."
|
311
243
|
record = codeobj.search_record
|
312
244
|
index << {
|
313
245
|
name: record[2],
|
@@ -317,7 +249,7 @@ class RDoc::Generator::Fivefish
|
|
317
249
|
}
|
318
250
|
end
|
319
251
|
|
320
|
-
self.
|
252
|
+
self.log.debug " dumping JSON..."
|
321
253
|
out_file.dirname.mkpath
|
322
254
|
ofh = out_file.open( 'w:utf-8', 0644 )
|
323
255
|
|
@@ -327,6 +259,107 @@ class RDoc::Generator::Fivefish
|
|
327
259
|
end
|
328
260
|
|
329
261
|
|
262
|
+
### Copies static files from the static_path into the output directory
|
263
|
+
def copy_static_assets
|
264
|
+
asset_paths = self.find_static_assets
|
265
|
+
|
266
|
+
self.log.debug "Copying assets from paths:", *asset_paths
|
267
|
+
|
268
|
+
asset_paths.each do |path|
|
269
|
+
|
270
|
+
# For plain files, just install them
|
271
|
+
if path.file?
|
272
|
+
self.log.debug " plain file; installing as-is"
|
273
|
+
install( path, self.output_dir, :mode => 0644 )
|
274
|
+
|
275
|
+
# Glob all the files out of subdirectories and install them
|
276
|
+
elsif path.directory?
|
277
|
+
self.log.debug " directory %p; copying contents" % [ path ]
|
278
|
+
|
279
|
+
Pathname.glob( path + '{css,fonts,img,js}/**/*'.to_s ).each do |asset|
|
280
|
+
next if asset.directory? || asset.basename.to_s.start_with?( '.' )
|
281
|
+
|
282
|
+
dst = asset.relative_path_from( path )
|
283
|
+
dst.dirname.mkpath
|
284
|
+
|
285
|
+
self.log.debug " %p -> %p" % [ asset, dst ]
|
286
|
+
install asset, dst, :mode => 0644
|
287
|
+
end
|
288
|
+
end
|
289
|
+
end
|
290
|
+
end
|
291
|
+
|
292
|
+
|
293
|
+
#########
|
294
|
+
protected
|
295
|
+
#########
|
296
|
+
|
297
|
+
### Return an Array of Pathname objects for each file/directory in the
|
298
|
+
### list of static assets that should be copied into the output directory.
|
299
|
+
def find_static_assets
|
300
|
+
paths = self.options.static_path || []
|
301
|
+
self.log.debug "Finding asset paths. Static paths: %p" % [ paths ]
|
302
|
+
|
303
|
+
# Add each subdirectory of the template dir
|
304
|
+
self.log.debug " adding directories under %s" % [ self.template_dir ]
|
305
|
+
paths << self.template_dir
|
306
|
+
self.log.debug " paths are now: %p" % [ paths ]
|
307
|
+
|
308
|
+
return paths.flatten.compact.uniq
|
309
|
+
end
|
310
|
+
|
311
|
+
|
312
|
+
### Return a list of the documented modules sorted by salience first, then
|
313
|
+
### by name.
|
314
|
+
def get_sorted_module_list(classes)
|
315
|
+
nscounts = classes.inject({}) do |counthash, klass|
|
316
|
+
top_level = klass.full_name.gsub( /::.*/, '' )
|
317
|
+
counthash[top_level] ||= 0
|
318
|
+
counthash[top_level] += 1
|
319
|
+
|
320
|
+
counthash
|
321
|
+
end
|
322
|
+
|
323
|
+
# Sort based on how often the top level namespace occurs, and then on the
|
324
|
+
# name of the module -- this works for projects that put their stuff into
|
325
|
+
# a namespace, of course, but doesn't hurt if they don't.
|
326
|
+
classes.sort_by do |klass|
|
327
|
+
top_level = klass.full_name.gsub( /::.*/, '' )
|
328
|
+
[nscounts[top_level] * -1, klass.full_name]
|
329
|
+
end.select do |klass|
|
330
|
+
klass.display?
|
331
|
+
end
|
332
|
+
end
|
333
|
+
|
334
|
+
|
335
|
+
### Fetch the template with the specified +name+ from the cache or load it
|
336
|
+
### and cache it.
|
337
|
+
def load_template( name )
|
338
|
+
unless @template_cache.key?( name )
|
339
|
+
@template_cache[ name ] = Inversion::Template.load( name, encoding:'utf-8' )
|
340
|
+
end
|
341
|
+
|
342
|
+
return @template_cache[ name ].dup
|
343
|
+
end
|
344
|
+
|
345
|
+
|
346
|
+
### Load the layout template and return it after setting any values it needs.
|
347
|
+
def load_layout_template
|
348
|
+
template = self.load_template( 'layout.tmpl' )
|
349
|
+
|
350
|
+
template.files = @files
|
351
|
+
template.classes = @classes
|
352
|
+
template.methods = @methods
|
353
|
+
template.modsort = @modsort
|
354
|
+
template.rdoc_options = @options
|
355
|
+
|
356
|
+
template.rdoc_version = RDoc::VERSION
|
357
|
+
template.fivefish_version = Fivefish.version_string
|
358
|
+
|
359
|
+
return template
|
360
|
+
end
|
361
|
+
|
362
|
+
|
330
363
|
### Return a list of CodeObjects that belong in the index.
|
331
364
|
def get_indexable_objects
|
332
365
|
objs = []
|
@@ -339,6 +372,30 @@ class RDoc::Generator::Fivefish
|
|
339
372
|
end
|
340
373
|
|
341
374
|
|
375
|
+
### Extract a synopsis for the project from the specified +mainpage+ and
|
376
|
+
### return it as a String.
|
377
|
+
def extract_synopsis( mainpage )
|
378
|
+
desc = mainpage.description
|
379
|
+
heading = desc[ %r{(<h1.*?/h1>)}im ]
|
380
|
+
paras = desc.scan( %r{<p\b.*?/p>}im )
|
381
|
+
|
382
|
+
first_para = paras.map( &:strip ).find do |para|
|
383
|
+
# Discard paragraphs consisting only of a link
|
384
|
+
!( para.start_with?('<p><a') && para.end_with?('/a></p>') )
|
385
|
+
end
|
386
|
+
|
387
|
+
return heading + first_para
|
388
|
+
end
|
389
|
+
|
342
390
|
end # class RDoc::Generator::Fivefish
|
343
391
|
|
344
392
|
|
393
|
+
# Reopen to add custom option attrs.
|
394
|
+
class RDoc::Options
|
395
|
+
|
396
|
+
##
|
397
|
+
# Allow setting a custom stylesheet
|
398
|
+
attr_accessor :additional_stylesheet
|
399
|
+
|
400
|
+
end
|
401
|
+
|
metadata
CHANGED
@@ -1,63 +1,68 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rdoc-generator-fivefish
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.1.0.pre.87
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Michael Granger
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain:
|
12
|
-
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
RGVyQ0FhZ01WdURRClUwQkxtV0RGelBHR1dsUGVRQ3JZSENyK0FjSnorTlJu
|
36
|
-
YUhDS0xaZFNLai9SSHVUT3QrZ2JsUmV4OEZBaDhOZUEKY21saFhlNDZwWk5K
|
37
|
-
Z1dLYnhaYWg4NWpJang5NWhSOHZPSStOQU01aUg5a09xSzEzRHJ4YWNUS1Bo
|
38
|
-
cWo1UGp3RgotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==
|
39
|
-
date: 2012-09-12 00:00:00.000000000 Z
|
11
|
+
- |
|
12
|
+
-----BEGIN CERTIFICATE-----
|
13
|
+
MIIDbDCCAlSgAwIBAgIBATANBgkqhkiG9w0BAQUFADA+MQwwCgYDVQQDDANnZWQx
|
14
|
+
GTAXBgoJkiaJk/IsZAEZFglGYWVyaWVNVUQxEzARBgoJkiaJk/IsZAEZFgNvcmcw
|
15
|
+
HhcNMTMwMjI3MTY0ODU4WhcNMTQwMjI3MTY0ODU4WjA+MQwwCgYDVQQDDANnZWQx
|
16
|
+
GTAXBgoJkiaJk/IsZAEZFglGYWVyaWVNVUQxEzARBgoJkiaJk/IsZAEZFgNvcmcw
|
17
|
+
ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDb92mkyYwuGBg1oRxt2tkH
|
18
|
+
+Uo3LAsaL/APBfSLzy8o3+B3AUHKCjMUaVeBoZdWtMHB75X3VQlvXfZMyBxj59Vo
|
19
|
+
cDthr3zdao4HnyrzAIQf7BO5Y8KBwVD+yyXCD/N65TTwqsQnO3ie7U5/9ut1rnNr
|
20
|
+
OkOzAscMwkfQxBkXDzjvAWa6UF4c5c9kR/T79iA21kDx9+bUMentU59aCJtUcbxa
|
21
|
+
7kcKJhPEYsk4OdxR9q2dphNMFDQsIdRO8rywX5FRHvcb+qnXC17RvxLHtOjysPtp
|
22
|
+
EWsYoZMxyCDJpUqbwoeiM+tAHoz2ABMv3Ahie3Qeb6+MZNAtMmaWfBx3dg2u+/WN
|
23
|
+
AgMBAAGjdTBzMAkGA1UdEwQCMAAwCwYDVR0PBAQDAgSwMB0GA1UdDgQWBBSZ0hCV
|
24
|
+
qoHr122fGKelqffzEQBhszAcBgNVHREEFTATgRFnZWRARmFlcmllTVVELm9yZzAc
|
25
|
+
BgNVHRIEFTATgRFnZWRARmFlcmllTVVELm9yZzANBgkqhkiG9w0BAQUFAAOCAQEA
|
26
|
+
Vlcfyq6GwyE8i0QuFPCeVOwJaneSvcwx316DApjy9/tt2YD2HomLbtpXtji5QXor
|
27
|
+
ON6oln4tWBIB3Klbr3szq5oR3Rc1D02SaBTalxSndp4M6UkW9hRFu5jn98pDB4fq
|
28
|
+
5l8wMMU0Xdmqx1VYvysVAjVFVC/W4NNvlmg+2mEgSVZP5K6Tc9qDh3eMQInoYw6h
|
29
|
+
t1YA6RsUJHp5vGQyhP1x34YpLAaly8icbns/8PqOf7Osn9ztmg8bOMJCeb32eQLj
|
30
|
+
6mKCwjpegytE0oifXfF8k75A9105cBnNiMZOe1tXiqYc/exCgWvbggurzDOcRkZu
|
31
|
+
/YSusaiDXHKU2O3Akc3htA==
|
32
|
+
-----END CERTIFICATE-----
|
33
|
+
date: 2013-03-25 00:00:00.000000000 Z
|
40
34
|
dependencies:
|
41
35
|
- !ruby/object:Gem::Dependency
|
42
36
|
name: inversion
|
43
37
|
requirement: !ruby/object:Gem::Requirement
|
44
|
-
none: false
|
45
38
|
requirements:
|
46
39
|
- - ~>
|
47
40
|
- !ruby/object:Gem::Version
|
48
|
-
version: '0.
|
41
|
+
version: '0.12'
|
49
42
|
type: :runtime
|
50
43
|
prerelease: false
|
51
44
|
version_requirements: !ruby/object:Gem::Requirement
|
52
|
-
none: false
|
53
45
|
requirements:
|
54
46
|
- - ~>
|
55
47
|
- !ruby/object:Gem::Version
|
56
|
-
version: '0.
|
48
|
+
version: '0.12'
|
49
|
+
- !ruby/object:Gem::Dependency
|
50
|
+
name: loggability
|
51
|
+
requirement: !ruby/object:Gem::Requirement
|
52
|
+
requirements:
|
53
|
+
- - ~>
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: '0.6'
|
56
|
+
type: :runtime
|
57
|
+
prerelease: false
|
58
|
+
version_requirements: !ruby/object:Gem::Requirement
|
59
|
+
requirements:
|
60
|
+
- - ~>
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '0.6'
|
57
63
|
- !ruby/object:Gem::Dependency
|
58
64
|
name: yajl-ruby
|
59
65
|
requirement: !ruby/object:Gem::Requirement
|
60
|
-
none: false
|
61
66
|
requirements:
|
62
67
|
- - ~>
|
63
68
|
- !ruby/object:Gem::Version
|
@@ -65,7 +70,6 @@ dependencies:
|
|
65
70
|
type: :runtime
|
66
71
|
prerelease: false
|
67
72
|
version_requirements: !ruby/object:Gem::Requirement
|
68
|
-
none: false
|
69
73
|
requirements:
|
70
74
|
- - ~>
|
71
75
|
- !ruby/object:Gem::Version
|
@@ -73,23 +77,20 @@ dependencies:
|
|
73
77
|
- !ruby/object:Gem::Dependency
|
74
78
|
name: rdoc
|
75
79
|
requirement: !ruby/object:Gem::Requirement
|
76
|
-
none: false
|
77
80
|
requirements:
|
78
81
|
- - ~>
|
79
82
|
- !ruby/object:Gem::Version
|
80
|
-
version: '
|
83
|
+
version: '4.0'
|
81
84
|
type: :runtime
|
82
85
|
prerelease: false
|
83
86
|
version_requirements: !ruby/object:Gem::Requirement
|
84
|
-
none: false
|
85
87
|
requirements:
|
86
88
|
- - ~>
|
87
89
|
- !ruby/object:Gem::Version
|
88
|
-
version: '
|
90
|
+
version: '4.0'
|
89
91
|
- !ruby/object:Gem::Dependency
|
90
92
|
name: hoe-mercurial
|
91
93
|
requirement: !ruby/object:Gem::Requirement
|
92
|
-
none: false
|
93
94
|
requirements:
|
94
95
|
- - ~>
|
95
96
|
- !ruby/object:Gem::Version
|
@@ -97,7 +98,6 @@ dependencies:
|
|
97
98
|
type: :development
|
98
99
|
prerelease: false
|
99
100
|
version_requirements: !ruby/object:Gem::Requirement
|
100
|
-
none: false
|
101
101
|
requirements:
|
102
102
|
- - ~>
|
103
103
|
- !ruby/object:Gem::Version
|
@@ -105,7 +105,6 @@ dependencies:
|
|
105
105
|
- !ruby/object:Gem::Dependency
|
106
106
|
name: hoe-highline
|
107
107
|
requirement: !ruby/object:Gem::Requirement
|
108
|
-
none: false
|
109
108
|
requirements:
|
110
109
|
- - ~>
|
111
110
|
- !ruby/object:Gem::Version
|
@@ -113,15 +112,27 @@ dependencies:
|
|
113
112
|
type: :development
|
114
113
|
prerelease: false
|
115
114
|
version_requirements: !ruby/object:Gem::Requirement
|
116
|
-
none: false
|
117
115
|
requirements:
|
118
116
|
- - ~>
|
119
117
|
- !ruby/object:Gem::Version
|
120
118
|
version: 0.1.0
|
119
|
+
- !ruby/object:Gem::Dependency
|
120
|
+
name: hoe-deveiate
|
121
|
+
requirement: !ruby/object:Gem::Requirement
|
122
|
+
requirements:
|
123
|
+
- - ~>
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: '0.2'
|
126
|
+
type: :development
|
127
|
+
prerelease: false
|
128
|
+
version_requirements: !ruby/object:Gem::Requirement
|
129
|
+
requirements:
|
130
|
+
- - ~>
|
131
|
+
- !ruby/object:Gem::Version
|
132
|
+
version: '0.2'
|
121
133
|
- !ruby/object:Gem::Dependency
|
122
134
|
name: uglifier
|
123
135
|
requirement: !ruby/object:Gem::Requirement
|
124
|
-
none: false
|
125
136
|
requirements:
|
126
137
|
- - ~>
|
127
138
|
- !ruby/object:Gem::Version
|
@@ -129,7 +140,6 @@ dependencies:
|
|
129
140
|
type: :development
|
130
141
|
prerelease: false
|
131
142
|
version_requirements: !ruby/object:Gem::Requirement
|
132
|
-
none: false
|
133
143
|
requirements:
|
134
144
|
- - ~>
|
135
145
|
- !ruby/object:Gem::Version
|
@@ -137,7 +147,6 @@ dependencies:
|
|
137
147
|
- !ruby/object:Gem::Dependency
|
138
148
|
name: less
|
139
149
|
requirement: !ruby/object:Gem::Requirement
|
140
|
-
none: false
|
141
150
|
requirements:
|
142
151
|
- - ~>
|
143
152
|
- !ruby/object:Gem::Version
|
@@ -145,7 +154,6 @@ dependencies:
|
|
145
154
|
type: :development
|
146
155
|
prerelease: false
|
147
156
|
version_requirements: !ruby/object:Gem::Requirement
|
148
|
-
none: false
|
149
157
|
requirements:
|
150
158
|
- - ~>
|
151
159
|
- !ruby/object:Gem::Version
|
@@ -153,27 +161,23 @@ dependencies:
|
|
153
161
|
- !ruby/object:Gem::Dependency
|
154
162
|
name: hoe
|
155
163
|
requirement: !ruby/object:Gem::Requirement
|
156
|
-
none: false
|
157
164
|
requirements:
|
158
165
|
- - ~>
|
159
166
|
- !ruby/object:Gem::Version
|
160
|
-
version: '3.
|
167
|
+
version: '3.5'
|
161
168
|
type: :development
|
162
169
|
prerelease: false
|
163
170
|
version_requirements: !ruby/object:Gem::Requirement
|
164
|
-
none: false
|
165
171
|
requirements:
|
166
172
|
- - ~>
|
167
173
|
- !ruby/object:Gem::Version
|
168
|
-
version: '3.
|
169
|
-
description:
|
170
|
-
|
174
|
+
version: '3.5'
|
175
|
+
description: |-
|
176
|
+
A(nother) HTML(5) generator for RDoc.
|
171
177
|
|
172
178
|
It uses {Twitter Bootstrap}[http://twitter.github.com/bootstrap/] for the
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
and stuff, and has a QuickSilver-like incremental searching.'
|
179
|
+
pretty, doesn't take up valuable horizontal real estate space with indexes
|
180
|
+
and stuff, and has a QuickSilver-like incremental searching.
|
177
181
|
email:
|
178
182
|
- ged@FaerieMUD.org
|
179
183
|
executables: []
|
@@ -209,9 +213,11 @@ files:
|
|
209
213
|
- lib/fivefish.rb
|
210
214
|
- lib/rdoc/discover.rb
|
211
215
|
- lib/rdoc/generator/fivefish.rb
|
216
|
+
- .gemtest
|
212
217
|
homepage: http://deveiate.org/fivefish.html
|
213
218
|
licenses:
|
214
219
|
- BSD
|
220
|
+
metadata: {}
|
215
221
|
post_install_message:
|
216
222
|
rdoc_options:
|
217
223
|
- --main
|
@@ -219,21 +225,19 @@ rdoc_options:
|
|
219
225
|
require_paths:
|
220
226
|
- lib
|
221
227
|
required_ruby_version: !ruby/object:Gem::Requirement
|
222
|
-
none: false
|
223
228
|
requirements:
|
224
|
-
- -
|
229
|
+
- - '>='
|
225
230
|
- !ruby/object:Gem::Version
|
226
231
|
version: 1.9.3
|
227
232
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
228
|
-
none: false
|
229
233
|
requirements:
|
230
|
-
- -
|
234
|
+
- - '>='
|
231
235
|
- !ruby/object:Gem::Version
|
232
236
|
version: '0'
|
233
237
|
requirements: []
|
234
238
|
rubyforge_project: rdoc-generator-fivefish
|
235
|
-
rubygems_version:
|
239
|
+
rubygems_version: 2.0.3
|
236
240
|
signing_key:
|
237
|
-
specification_version:
|
241
|
+
specification_version: 4
|
238
242
|
summary: A(nother) HTML(5) generator for RDoc
|
239
243
|
test_files: []
|
metadata.gz.sig
CHANGED
Binary file
|