emerald 0.0.1.alpha4 → 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/README.rdoc +1 -1
- data/VERSION +1 -1
- data/data/javascripts/emerald.js +9 -4
- data/data/javascripts/functions.js +1 -13
- data/data/javascripts/jquery.js +5 -2
- data/data/stylesheets/rdoc.css +41 -37
- data/data/templates/classmodule.html.erb +4 -4
- data/data/templates/layout.html.erb +2 -12
- data/data/templates/toplevel.html.erb +1 -1
- data/lib/rdoc/generator/emerald.rb +7 -6
- metadata +34 -53
- data/pkg/emerald-0.0.1.alpha4/CHANGELOG.rdoc +0 -7
- data/pkg/emerald-0.0.1.alpha4/COPYING.rdoc +0 -664
- data/pkg/emerald-0.0.1.alpha4/LEGAL.rdoc +0 -140
- data/pkg/emerald-0.0.1.alpha4/README.rdoc +0 -119
- data/pkg/emerald-0.0.1.alpha4/lib/rdoc/discover.rb +0 -4
- data/pkg/emerald-0.0.1.alpha4/lib/rdoc/generator/emerald.rb +0 -304
- data/pkg/emerald-0.0.1.alpha4/lib/rdoc/generator/emerald/options.rb +0 -37
@@ -1,140 +0,0 @@
|
|
1
|
-
= Legal stuff
|
2
|
-
|
3
|
-
Emerald uses some code from RDoc (currently maintained by Eric Hodel)
|
4
|
-
and it’s Darkfish generator (written by Michael Granger) as well as
|
5
|
-
some of Darkfish’s iconset, which in turn was taken from the Silk
|
6
|
-
iconset by Mark James. See below for all those copying conditions.
|
7
|
-
|
8
|
-
For Emerald’s own licensing conditions, see the file COPYING.rdoc.
|
9
|
-
|
10
|
-
== RDoc license
|
11
|
-
|
12
|
-
RDoc is copyrighted free software.
|
13
|
-
|
14
|
-
You can redistribute it and/or modify it under either the terms of the GPL
|
15
|
-
version 2 (see the file GPL), or the conditions below:
|
16
|
-
|
17
|
-
1. You may make and give away verbatim copies of the source form of the
|
18
|
-
software without restriction, provided that you duplicate all of the
|
19
|
-
original copyright notices and associated disclaimers.
|
20
|
-
|
21
|
-
2. You may modify your copy of the software in any way, provided that
|
22
|
-
you do at least ONE of the following:
|
23
|
-
|
24
|
-
a. place your modifications in the Public Domain or otherwise
|
25
|
-
make them Freely Available, such as by posting said
|
26
|
-
modifications to Usenet or an equivalent medium, or by allowing
|
27
|
-
the author to include your modifications in the software.
|
28
|
-
|
29
|
-
b. use the modified software only within your corporation or
|
30
|
-
organization.
|
31
|
-
|
32
|
-
c. give non-standard binaries non-standard names, with
|
33
|
-
instructions on where to get the original software distribution.
|
34
|
-
|
35
|
-
d. make other distribution arrangements with the author.
|
36
|
-
|
37
|
-
3. You may distribute the software in object code or binary form,
|
38
|
-
provided that you do at least ONE of the following:
|
39
|
-
|
40
|
-
a. distribute the binaries and library files of the software,
|
41
|
-
together with instructions (in the manual page or equivalent)
|
42
|
-
on where to get the original distribution.
|
43
|
-
|
44
|
-
b. accompany the distribution with the machine-readable source of
|
45
|
-
the software.
|
46
|
-
|
47
|
-
c. give non-standard binaries non-standard names, with
|
48
|
-
instructions on where to get the original software distribution.
|
49
|
-
|
50
|
-
d. make other distribution arrangements with the author.
|
51
|
-
|
52
|
-
4. You may modify and include the part of the software into any other
|
53
|
-
software (possibly commercial). But some files in the distribution
|
54
|
-
are not written by the author, so that they are not under these terms.
|
55
|
-
|
56
|
-
For the list of those files and their copying conditions, see the
|
57
|
-
file LEGAL[http://rdoc.rubyforge.org/LEGAL_rdoc.html].
|
58
|
-
|
59
|
-
5. The scripts and library files supplied as input to or produced as
|
60
|
-
output from the software do not automatically fall under the
|
61
|
-
copyright of the software, but belong to whomever generated them,
|
62
|
-
and may be sold commercially, and may be aggregated with this
|
63
|
-
software.
|
64
|
-
|
65
|
-
6. THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
|
66
|
-
IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
|
67
|
-
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
68
|
-
PURPOSE.
|
69
|
-
|
70
|
-
== Darkfish license
|
71
|
-
|
72
|
-
Darkfish was written by Michael Granger and is included under the MIT
|
73
|
-
license. Darkfish contains images from the Silk Icons set by Mark
|
74
|
-
James.
|
75
|
-
|
76
|
-
=== Author/s
|
77
|
-
* Michael Granger (ged@FaerieMUD.org)
|
78
|
-
|
79
|
-
=== Contributors
|
80
|
-
* Mahlon E. Smith (mahlon@martini.nu)
|
81
|
-
* Eric Hodel (drbrain@segment7.net)
|
82
|
-
|
83
|
-
=== License
|
84
|
-
|
85
|
-
Copyright (c) 2007, 2008, Michael Granger. All rights reserved.
|
86
|
-
|
87
|
-
Redistribution and use in source and binary forms, with or without
|
88
|
-
modification, are permitted provided that the following conditions are met:
|
89
|
-
|
90
|
-
* Redistributions of source code must retain the above copyright notice,
|
91
|
-
this list of conditions and the following disclaimer.
|
92
|
-
|
93
|
-
* Redistributions in binary form must reproduce the above copyright notice,
|
94
|
-
this list of conditions and the following disclaimer in the documentation
|
95
|
-
and/or other materials provided with the distribution.
|
96
|
-
|
97
|
-
* Neither the name of the author/s, nor the names of the project's
|
98
|
-
contributors may be used to endorse or promote products derived from this
|
99
|
-
software without specific prior written permission.
|
100
|
-
|
101
|
-
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
102
|
-
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
103
|
-
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
104
|
-
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
|
105
|
-
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
106
|
-
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
107
|
-
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
108
|
-
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
109
|
-
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
110
|
-
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
111
|
-
|
112
|
-
=== Attributions
|
113
|
-
|
114
|
-
Darkfish uses the {Silk Icons}[http://www.famfamfam.com/lab/icons/silk/] set
|
115
|
-
by Mark James.
|
116
|
-
|
117
|
-
== jQuery license
|
118
|
-
|
119
|
-
Copyright 2012 jQuery Foundation and other contributors
|
120
|
-
|
121
|
-
http://jquery.com/
|
122
|
-
|
123
|
-
Permission is hereby granted, free of charge, to any person obtaining
|
124
|
-
a copy of this software and associated documentation files (the
|
125
|
-
"Software"), to deal in the Software without restriction, including
|
126
|
-
without limitation the rights to use, copy, modify, merge, publish,
|
127
|
-
distribute, sublicense, and/or sell copies of the Software, and to
|
128
|
-
permit persons to whom the Software is furnished to do so, subject to
|
129
|
-
the following conditions:
|
130
|
-
|
131
|
-
The above copyright notice and this permission notice shall be
|
132
|
-
included in all copies or substantial portions of the Software.
|
133
|
-
|
134
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
135
|
-
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
136
|
-
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
137
|
-
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
138
|
-
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
139
|
-
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
140
|
-
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
@@ -1,119 +0,0 @@
|
|
1
|
-
= Emerald -- Make your Ruby documentation a jewel, too
|
2
|
-
|
3
|
-
You think Darkfish is the worst RDoc generator ever? Got lost in SDoc
|
4
|
-
and Horo documentations? Found Hanna buggy and dislike frames? Then
|
5
|
-
this is for you: Emerald, the only RDoc template which makes your Ruby
|
6
|
-
docs a jewel, too.
|
7
|
-
|
8
|
-
Emerald is a generator for RDoc[http://rdoc.rubyforge.org], i.e. a
|
9
|
-
plugin that replaces RDoc’s standard _Darkfish_ generator from which
|
10
|
-
many people (myself included) think it’s the ugliest RDoc layouting
|
11
|
-
engine that ever was around. If you want nice and modern documentation
|
12
|
-
that allows you to retain overview over a library, Emerald is the
|
13
|
-
generator you want to use.
|
14
|
-
|
15
|
-
== Installation
|
16
|
-
|
17
|
-
Emerald is currently Alpha software. Use it at your own risk.
|
18
|
-
|
19
|
-
Get the current development release via RubyGems:
|
20
|
-
|
21
|
-
# gem install emerald --pre
|
22
|
-
|
23
|
-
If you want the latest version, check out the Git repisitory and build
|
24
|
-
the gem yourself:
|
25
|
-
|
26
|
-
$ git clone git://github.com/Quintus/emerald
|
27
|
-
$ cd emarald
|
28
|
-
$ rake gem
|
29
|
-
$ gem install pkg/emerald-x.x.x.gem
|
30
|
-
|
31
|
-
== Usage
|
32
|
-
|
33
|
-
From the commandline:
|
34
|
-
|
35
|
-
$ rdoc -f emerald YOURFILESHERE
|
36
|
-
|
37
|
-
From a rake RDoc::Task:
|
38
|
-
|
39
|
-
require "rdoc/task"
|
40
|
-
require "rdoc/generator/emerald"
|
41
|
-
|
42
|
-
RDoc::Task.new do |rt|
|
43
|
-
# Your option stuff...
|
44
|
-
rt.generator = "emerald"
|
45
|
-
end
|
46
|
-
|
47
|
-
== Features
|
48
|
-
|
49
|
-
* Default theme has is centered around light blue/grey, just as Hanna was.
|
50
|
-
* No frames.
|
51
|
-
* Uses jQuery[http://jquery.com].
|
52
|
-
* Generates a Table of Contents (ToC) for toplevel file docs (so yes,
|
53
|
-
your README will have a ToC).
|
54
|
-
* Classical file/class/method indices for best overview.
|
55
|
-
* Regular-Expression-powered JavaScript search.
|
56
|
-
* Darkfish-link compatible, i.e. if you switch to Emerald from Darkfish,
|
57
|
-
the old links to your documentation will still work.
|
58
|
-
* But note this is not the case for the other way round, as Emerald
|
59
|
-
allows you linking to more stuff.
|
60
|
-
* GPL’ed. Free software.
|
61
|
-
* And more...
|
62
|
-
|
63
|
-
== Weblinks
|
64
|
-
|
65
|
-
* Sourcecode: https://github.com/Quintus/emerald
|
66
|
-
* Bugtracker: https://github.com/Quintus/emerald/issues
|
67
|
-
|
68
|
-
== Caveats
|
69
|
-
|
70
|
-
* ToC generation only works for proper heading nestings, especially it
|
71
|
-
assumes your page to have <b>exactly one</b> level-1 heading. Having more
|
72
|
-
of these is bad style, and Emerald wants to encourage good
|
73
|
-
documentation/markup style.
|
74
|
-
* The search uses JavaScript’s regular expressions, so the quite
|
75
|
-
advanced constructs you can create with Ruby’s Regular Expressions
|
76
|
-
won’t work with all cases. But don’t tell me you search your API
|
77
|
-
documentation with constructs like <tt>\A(?>[^ab]q)\s*%.*stuff(?<!badstuff)\w{2,4}(?:$|\\\\)</tt>.
|
78
|
-
* Emerald is a bit slow at the moment. However, I did not optimise it
|
79
|
-
for speed. This may or may not change in the future.
|
80
|
-
|
81
|
-
== Thanks
|
82
|
-
|
83
|
-
Thanks to Eric Hodel keeping RDoc in an active and alive
|
84
|
-
state. Without this, there would be no point in developing
|
85
|
-
Emerald. Next my gratitude is dedicated at {Mislav
|
86
|
-
Marohnić}[https://github.com/mislav] for creating the {Hanna RDoc
|
87
|
-
template}[https://github.com/mislav/hanna], which sadly is not
|
88
|
-
maintained anymore, but was a big inspiration for Emerald and its
|
89
|
-
default theme, and to everyone on the web who posted something on
|
90
|
-
RDoc’s internals. Without you, it wouldn’t have been possible to get
|
91
|
-
Emerald to where it currently is.
|
92
|
-
|
93
|
-
== License
|
94
|
-
|
95
|
-
Emerald is an RDoc HTML generator.
|
96
|
-
|
97
|
-
Copyright © 2012 Marvin Gülker
|
98
|
-
|
99
|
-
This program is free software: you can redistribute it and/or modify
|
100
|
-
it under the terms of the GNU General Public License as published by
|
101
|
-
the Free Software Foundation, either version 3 of the License, or
|
102
|
-
(at your option) any later version.
|
103
|
-
|
104
|
-
This program is distributed in the hope that it will be useful,
|
105
|
-
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
106
|
-
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
107
|
-
GNU General Public License for more details.
|
108
|
-
|
109
|
-
You should have received a copy of the GNU General Public License
|
110
|
-
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
111
|
-
|
112
|
-
=== Additional notes
|
113
|
-
|
114
|
-
* You can find the GNU GPL in the file COPYING.rdoc.
|
115
|
-
* This project incorporates some code and data (mainly images) from
|
116
|
-
RDoc and the projects RDoc in turn uses stuff from. See the file
|
117
|
-
LEGAL.rdoc for more information. Same goes for the jQuery licensing
|
118
|
-
conditions.
|
119
|
-
* You can contact me at quintus ÄT quintilianus DÖT eu.
|
@@ -1,304 +0,0 @@
|
|
1
|
-
# -*- coding: utf-8 -*-
|
2
|
-
gem "rdoc"
|
3
|
-
|
4
|
-
require "pathname"
|
5
|
-
require "fileutils"
|
6
|
-
require "erb"
|
7
|
-
require "rdoc/rdoc"
|
8
|
-
require "rdoc/generator"
|
9
|
-
|
10
|
-
# This is the main generator class that is instanciated by RDoc when
|
11
|
-
# you order it to use the _emerald_ generator. It mainly works on
|
12
|
-
# ERB template files you can find in the <b>data/templates</b> directory,
|
13
|
-
# where each major component (read: classes and toplevel files) has a
|
14
|
-
# template file that is evaluated for it. The result is then injected
|
15
|
-
# into the layout template, <b>data/templates/layout.html.erb</b>, which
|
16
|
-
# is then evaluated as well.
|
17
|
-
#
|
18
|
-
# == About relative paths
|
19
|
-
# As the output generated by RDoc is supposed to be viewable by both
|
20
|
-
# visiting the doc/ directory with a browser and providing the doc/
|
21
|
-
# directory to an HTTP server, effectively making it the root directory,
|
22
|
-
# care has been taken to only use relative links in all the static HTML
|
23
|
-
# files. The key component for this to work is the #root_path method,
|
24
|
-
# which is called to set the relative path to the root directory (i.e.
|
25
|
-
# the output directory). When called without an argument, #root_path
|
26
|
-
# returns the value previously remembered (usually it contains a good
|
27
|
-
# number of <b>../</b> entries). This way, the root directory can be
|
28
|
-
# set whenever a new HTML file is going to be outputted and can then
|
29
|
-
# be referenced from the ERB template.
|
30
|
-
#
|
31
|
-
# == Darkfish compatibility
|
32
|
-
# RDoc’s HTML formatter has a good number of helper methods that
|
33
|
-
# have a strong hint regarding "where what belongs". By using these
|
34
|
-
# helper methods itself when creating cross-references, the HTML
|
35
|
-
# formatter enforces both the directory structure of the output
|
36
|
-
# directory and the anchor names used for references inside a single
|
37
|
-
# HTML file. The only way to circumvent this is to write another
|
38
|
-
# formatter, which I don’t intend to as the standard HTML formatter
|
39
|
-
# does a good job for HTML stuff. A nice side effect is that Emerald’s
|
40
|
-
# documentation is compatible with Darkfish’s one when it comes to links
|
41
|
-
# to specific elements. For example, you can create a link to a method
|
42
|
-
# called Foo::Bar#baz somewhere on the web, and if the destinatinon
|
43
|
-
# website chooses to switch from Darkfish output to Emerald (which I
|
44
|
-
# hope!), the link will continue to work.
|
45
|
-
class RDoc::Generator::Emerald
|
46
|
-
include FileUtils
|
47
|
-
|
48
|
-
# Generic exception class for this generator.
|
49
|
-
class EmeraldError < StandardError
|
50
|
-
end
|
51
|
-
|
52
|
-
# Minimal RDoc::Toplevel-alike object (i.e. it responds to the
|
53
|
-
# two methods required for rendering it, +full_name+ and
|
54
|
-
# +description+) that is used to create the index page if
|
55
|
-
# none was set. I really recommend to manually set a
|
56
|
-
# useful index page!
|
57
|
-
DummyStartPage = Struct.new(:full_name, :description) do
|
58
|
-
def initialize
|
59
|
-
super()
|
60
|
-
self.full_name = "Start page"
|
61
|
-
self.description =<<-DESC
|
62
|
-
<h1>RDoc documentation</h1>
|
63
|
-
<p>This is a dummy start page for the RDoc documentation of this project.</p>
|
64
|
-
<p>You’re seeing it, because the original author didn’t specify a real start
|
65
|
-
page for this project’s documentation, so you may want to contact him and
|
66
|
-
make him aware of this.</p>
|
67
|
-
<p>If you <em>are</em> the original author, try one or both of the following
|
68
|
-
code snippets to make your <strong>README.rdoc</strong> file the start
|
69
|
-
page of your documentation:</p>
|
70
|
-
<pre>
|
71
|
-
# In your gemspec:
|
72
|
-
Gem::Specification.new do |spec|
|
73
|
-
# ...
|
74
|
-
# "-m" sets the start ("main") page. "-t" specifies
|
75
|
-
# the title to display in the window title bar.
|
76
|
-
spec.rdoc_options << "-m" << "README.rdoc" << "-t" "Docs for YourProject"
|
77
|
-
end
|
78
|
-
|
79
|
-
# In your Rakefile:
|
80
|
-
RDoc::Task.new do |rt|
|
81
|
-
# ...
|
82
|
-
# Sets the start ("main") page and specifies the
|
83
|
-
# title to display in the window title bar:
|
84
|
-
rt.main = "README.rdoc"
|
85
|
-
rt.title = "Docs for YourProject"
|
86
|
-
end
|
87
|
-
</pre>
|
88
|
-
<p>For the time being, use the navigation sidebar to the left
|
89
|
-
in order to read this documentation.</p>
|
90
|
-
DESC
|
91
|
-
end
|
92
|
-
end
|
93
|
-
|
94
|
-
# Tell RDoc about the new generator
|
95
|
-
RDoc::RDoc.add_generator(self)
|
96
|
-
|
97
|
-
# Description displayed in RDoc’s help.
|
98
|
-
DESCRIPTION = "The only RDoc generator that makes your Ruby documentation a jewel, too"
|
99
|
-
|
100
|
-
# Root directory of this project.
|
101
|
-
ROOT_DIR = Pathname.new(__FILE__).dirname.parent.parent.parent
|
102
|
-
|
103
|
-
# Where to find the non-code stuff.
|
104
|
-
DATA_DIR = ROOT_DIR + "data"
|
105
|
-
|
106
|
-
# Main template used as the general layout.
|
107
|
-
LAYOUT_TEMPLATE = ERB.new(File.read(DATA_DIR + "templates" + "layout.html.erb"))
|
108
|
-
|
109
|
-
# Subtemplates injected into the main template.
|
110
|
-
TEMPLATES = {
|
111
|
-
:toplevel => ERB.new(File.read(DATA_DIR + "templates" + "toplevel.html.erb")),
|
112
|
-
:classmodule => ERB.new(File.read(DATA_DIR + "templates" + "classmodule.html.erb"))
|
113
|
-
}
|
114
|
-
|
115
|
-
# The version number.
|
116
|
-
VERSION = File.read(ROOT_DIR + "VERSION").chomp.freeze
|
117
|
-
|
118
|
-
# Add additional options to RDoc (see the
|
119
|
-
# RDoc::Generator::Emerald::Options module).
|
120
|
-
def self.setup_options(options)
|
121
|
-
options.extend(RDoc::Generator::Emerald::Options)
|
122
|
-
end
|
123
|
-
|
124
|
-
# Instanciates this generator. Automatically called
|
125
|
-
# by RDoc.
|
126
|
-
# ==Parameter
|
127
|
-
# [options]
|
128
|
-
# RDoc passed the current RDoc::Options instance.
|
129
|
-
def initialize(options)
|
130
|
-
@options = options
|
131
|
-
@op_dir = Pathname.pwd.expand_path + @options.op_dir
|
132
|
-
end
|
133
|
-
|
134
|
-
# Outputs a string on standard output, but only if RDoc
|
135
|
-
# was invoked with the <tt>--debug</tt> switch.
|
136
|
-
def debug(str)
|
137
|
-
puts(str) if $DEBUG_RDOC
|
138
|
-
end
|
139
|
-
|
140
|
-
# Main hook method called by RDoc, triggers the generation process.
|
141
|
-
def generate(top_levels)
|
142
|
-
debug "Sorting classes, modules, and methods..."
|
143
|
-
@toplevels = top_levels
|
144
|
-
@classes_and_modules = RDoc::TopLevel.all_classes_and_modules.sort_by{|klass| klass.full_name}
|
145
|
-
@methods = @classes_and_modules.map{|mod| mod.method_list}.flatten.sort
|
146
|
-
|
147
|
-
# Create the output directory
|
148
|
-
mkdir @op_dir unless @op_dir.exist?
|
149
|
-
|
150
|
-
copy_base_files
|
151
|
-
evaluate_toplevels
|
152
|
-
evaluate_classes_and_modules
|
153
|
-
|
154
|
-
unless @options.main_page # If set, #evaluate_toplevels creates the index.html for us
|
155
|
-
toplevel = DummyStartPage.new
|
156
|
-
root_path "./" # This *is* in the toplevel
|
157
|
-
File.open(@op_dir + "index.html", "w") do |file|
|
158
|
-
file.write(render(:toplevel, binding))
|
159
|
-
end
|
160
|
-
end
|
161
|
-
end
|
162
|
-
|
163
|
-
# Darkfish returns +nil+, hence we do this as well.
|
164
|
-
def file_dir
|
165
|
-
nil
|
166
|
-
end
|
167
|
-
|
168
|
-
# Darkfish returns +nil+, hence we do this as well.
|
169
|
-
def class_dir
|
170
|
-
nil
|
171
|
-
end
|
172
|
-
|
173
|
-
protected
|
174
|
-
|
175
|
-
# Set/get the root directory.
|
176
|
-
# == Parameter
|
177
|
-
# [set_to (nil)]
|
178
|
-
# If passed, this method _sets_ the root directory rather
|
179
|
-
# than returning it.
|
180
|
-
# == Return value
|
181
|
-
# The current relative path to the root directory.
|
182
|
-
# == Remarks
|
183
|
-
# See the class’ introductory text for more information
|
184
|
-
# on this.
|
185
|
-
def root_path(set_to = nil)
|
186
|
-
if set_to
|
187
|
-
@root_path = Pathname.new(set_to)
|
188
|
-
else
|
189
|
-
@root_path ||= Pathname.new("./")
|
190
|
-
end
|
191
|
-
end
|
192
|
-
|
193
|
-
# Set/get the page title.
|
194
|
-
# == Parameter
|
195
|
-
# [set_to (nil)]
|
196
|
-
# If passed, this method _sets_ the title rather
|
197
|
-
# than returning it.
|
198
|
-
# == Return value
|
199
|
-
# The current page title.
|
200
|
-
# == Remarks
|
201
|
-
# Works the same way as #root_path.
|
202
|
-
def title(set_to = nil)
|
203
|
-
if set_to
|
204
|
-
@title = set_to
|
205
|
-
else
|
206
|
-
@title ||= ""
|
207
|
-
end
|
208
|
-
end
|
209
|
-
|
210
|
-
# Takes a RDoc::TopLevel and transforms it into a complete pathname
|
211
|
-
# relative to the output directory. Filename alterations
|
212
|
-
# done by RDoc’s crossref-HTML formatter are honoured. Note you
|
213
|
-
# have to prepend #root_path to get a complete href.
|
214
|
-
def rdocize_toplevel(toplevel)
|
215
|
-
Pathname.new("#{toplevel.relative_name.gsub(".", "_")}.html")
|
216
|
-
end
|
217
|
-
|
218
|
-
# Takes a RDoc::ClassModule and transforms it into a complete pathname
|
219
|
-
# relative to the output directory. Filename alterations
|
220
|
-
# done by RDoc’s crossref-HTML formatter are honoured. Note you
|
221
|
-
# have to prepend #root_path to get a complete href.
|
222
|
-
def rdocize_classmod(classmod)
|
223
|
-
Pathname.new("#{classmod.full_name.split("::").join("/")}.html")
|
224
|
-
end
|
225
|
-
|
226
|
-
private
|
227
|
-
|
228
|
-
def copy_base_files
|
229
|
-
debug "Copying base base files..."
|
230
|
-
mkdir @op_dir + "stylesheets" unless File.directory?(@op_dir + "stylesheets")
|
231
|
-
|
232
|
-
cp Dir[DATA_DIR + "stylesheets" + "*.css"], @op_dir + "stylesheets"
|
233
|
-
cp_r DATA_DIR + "javascripts", @op_dir
|
234
|
-
cp_r DATA_DIR + "images", @op_dir
|
235
|
-
end
|
236
|
-
|
237
|
-
def evaluate_toplevels
|
238
|
-
@toplevels.each do |toplevel|
|
239
|
-
debug "Processing toplevel #{toplevel.name}..."
|
240
|
-
|
241
|
-
root_path("../" * (toplevel.relative_name.split("/").count - 1)) # Last component is a filename
|
242
|
-
title toplevel.relative_name
|
243
|
-
|
244
|
-
# Create the path to the file if necessary
|
245
|
-
path = @op_dir + rdocize_toplevel(toplevel)
|
246
|
-
mkdir_p path.parent unless path.parent.exist?
|
247
|
-
|
248
|
-
# Evaluate the actual file documentation
|
249
|
-
File.open(path, "w") do |file|
|
250
|
-
debug " => #{path}"
|
251
|
-
file.write(render(:toplevel, binding))
|
252
|
-
end
|
253
|
-
|
254
|
-
# If this toplevel is supposed to be the main file,
|
255
|
-
# copy it’s content to the index.html file.
|
256
|
-
if toplevel.relative_name == @options.main_page
|
257
|
-
debug " => This is the main page. Writing index.html."
|
258
|
-
|
259
|
-
root_path "./" # We *are* at the top here
|
260
|
-
|
261
|
-
File.open(@op_dir + "index.html", "w") do |file|
|
262
|
-
file.write(render(:toplevel, binding))
|
263
|
-
end
|
264
|
-
end
|
265
|
-
end
|
266
|
-
end
|
267
|
-
|
268
|
-
def evaluate_classes_and_modules
|
269
|
-
@classes_and_modules.each do |classmod|
|
270
|
-
debug "Processing class/module #{classmod.full_name} (#{classmod.method_list.count} methods)..."
|
271
|
-
|
272
|
-
path = @op_dir + rdocize_classmod(classmod)
|
273
|
-
|
274
|
-
mkdir_p path.parent unless path.parent.directory?
|
275
|
-
title classmod.full_name
|
276
|
-
root_path "../" * (classmod.full_name.split("::").count - 1) # Last element is a file
|
277
|
-
|
278
|
-
|
279
|
-
File.open(path, "w") do |file|
|
280
|
-
debug " => #{path}"
|
281
|
-
file.write(render(:classmodule, binding))
|
282
|
-
end
|
283
|
-
end
|
284
|
-
end
|
285
|
-
|
286
|
-
# Renders the subtemplate +template_name+ in the +context+ of the
|
287
|
-
# given binding, then injects it into the main template (which is
|
288
|
-
# evaluated in the same +context+).
|
289
|
-
#
|
290
|
-
# Returns the resulting string.
|
291
|
-
def render(template_name, context)
|
292
|
-
render_into_layout{TEMPLATES[template_name].result(context)}
|
293
|
-
end
|
294
|
-
|
295
|
-
# Renders into the main layout. The return value of the block
|
296
|
-
# passed to this method will be placed in the layout in place
|
297
|
-
# of the +yield+ expression.
|
298
|
-
def render_into_layout
|
299
|
-
LAYOUT_TEMPLATE.result(binding)
|
300
|
-
end
|
301
|
-
|
302
|
-
end
|
303
|
-
|
304
|
-
require_relative "emerald/options"
|