jeffreyhunter77-R2Doc 0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +1 -0
- data/LICENSE +20 -0
- data/Manifest +50 -0
- data/R2Doc.gemspec +33 -0
- data/README +103 -0
- data/README.rdoc +103 -0
- data/Rakefile +9 -0
- data/bin/r2doc +157 -0
- data/lib/r2doc.rb +7 -0
- data/lib/r2doc/context_extensions.rb +237 -0
- data/lib/r2doc/erb_template_engine.rb +11 -0
- data/lib/r2doc/generator.rb +123 -0
- data/lib/r2doc/rdoc_v2_generator.rb +112 -0
- data/lib/r2doc/template.rb +95 -0
- data/lib/r2doc/template/r2doc/_aliases.html.erb +22 -0
- data/lib/r2doc/template/r2doc/_attributes.html.erb +24 -0
- data/lib/r2doc/template/r2doc/_classes_and_modules.html.erb +13 -0
- data/lib/r2doc/template/r2doc/_constants.html.erb +22 -0
- data/lib/r2doc/template/r2doc/_method_detail.html.erb +10 -0
- data/lib/r2doc/template/r2doc/_method_details.html.erb +17 -0
- data/lib/r2doc/template/r2doc/_method_listing.html.erb +37 -0
- data/lib/r2doc/template/r2doc/_method_listing_row.html.erb +4 -0
- data/lib/r2doc/template/r2doc/_nav.html.erb +40 -0
- data/lib/r2doc/template/r2doc/_nav_item.html.erb +1 -0
- data/lib/r2doc/template/r2doc/class.html.erb +71 -0
- data/lib/r2doc/template/r2doc/file.html.erb +52 -0
- data/lib/r2doc/template/r2doc/images/blue-arrow-right.png +0 -0
- data/lib/r2doc/template/r2doc/images/blue-arrow-up.png +0 -0
- data/lib/r2doc/template/r2doc/images/blue-box.png +0 -0
- data/lib/r2doc/template/r2doc/images/blue-plus.png +0 -0
- data/lib/r2doc/template/r2doc/images/close-button.png +0 -0
- data/lib/r2doc/template/r2doc/images/green-arrow-right.png +0 -0
- data/lib/r2doc/template/r2doc/images/green-arrow-up.png +0 -0
- data/lib/r2doc/template/r2doc/images/nav-back.png +0 -0
- data/lib/r2doc/template/r2doc/images/nav-bottom.png +0 -0
- data/lib/r2doc/template/r2doc/images/nav-top.png +0 -0
- data/lib/r2doc/template/r2doc/images/orange-hash.png +0 -0
- data/lib/r2doc/template/r2doc/images/red-dash.png +0 -0
- data/lib/r2doc/template/r2doc/images/search-back.png +0 -0
- data/lib/r2doc/template/r2doc/images/top-back.png +0 -0
- data/lib/r2doc/template/r2doc/images/top-left.png +0 -0
- data/lib/r2doc/template/r2doc/images/top-right.png +0 -0
- data/lib/r2doc/template/r2doc/index.html.erb +42 -0
- data/lib/r2doc/template/r2doc/jquery.js +19 -0
- data/lib/r2doc/template/r2doc/prototype.js +285 -0
- data/lib/r2doc/template/r2doc/r2doc.css +400 -0
- data/lib/r2doc/template/r2doc/rdoc-utils.js +510 -0
- data/lib/r2doc/template/r2doc/rdoc.js.erb +164 -0
- data/lib/r2doc/template_util.rb +82 -0
- data/lib/rdoc/discover.rb +4 -0
- data/lib/rdoc/generators/r2doc_generator.rb +105 -0
- metadata +155 -0
@@ -0,0 +1,95 @@
|
|
1
|
+
module R2Doc
|
2
|
+
|
3
|
+
# Thrown when a template file cannot be found
|
4
|
+
class TemplateMissingError < StandardError
|
5
|
+
# name of the missing template
|
6
|
+
attr_reader :template
|
7
|
+
|
8
|
+
def initialize(template)
|
9
|
+
super "Could not find template \"#{template}\""
|
10
|
+
@template = template
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
# The TemplateManager class handles loading and parsing of templates.
|
15
|
+
# The actual details of reading the file and creating a parsed template
|
16
|
+
# object is handled by a template engine class. TemplateManager's
|
17
|
+
# responsibilities are to record registration of template directories
|
18
|
+
# and engines, to locate the correct template source file, and then
|
19
|
+
# dispatch to the right engine.
|
20
|
+
#
|
21
|
+
# A template engine class need only supply a very limited interface.
|
22
|
+
# It must supply a class method named +load+ which accepts a file name
|
23
|
+
# as a single argument. The +load+ method is expected to return an
|
24
|
+
# instance representing that template. The returned instance must
|
25
|
+
# supply a +result+ method wich accepts a binding as its single
|
26
|
+
# argument. The +result+ method is expected to return the rendered
|
27
|
+
# template as a string. A single template instance may have its
|
28
|
+
# +result+ method invoked multiple times with different bindings.
|
29
|
+
class TemplateManager
|
30
|
+
# The collection of template engines by extension
|
31
|
+
@@template_engines = {}
|
32
|
+
# The list of template directories
|
33
|
+
@@template_directories = [File.join(File.expand_path(File.dirname(__FILE__)), 'template')]
|
34
|
+
# Cache for loaded templates
|
35
|
+
@@templates = {}
|
36
|
+
|
37
|
+
# Register a template engine for an extension
|
38
|
+
def self.register_engine(extension, klass)
|
39
|
+
@@template_engines[extension.to_sym] = klass
|
40
|
+
end
|
41
|
+
|
42
|
+
# Add a template directory to search
|
43
|
+
def self.add_template_directory(dir)
|
44
|
+
@@template_directories.push dir
|
45
|
+
end
|
46
|
+
|
47
|
+
# Return the list of template directories
|
48
|
+
def self.template_directories
|
49
|
+
@@template_directories
|
50
|
+
end
|
51
|
+
|
52
|
+
# Return the list of registered extensions
|
53
|
+
def self.registered_extensions
|
54
|
+
@@template_engines.keys
|
55
|
+
end
|
56
|
+
|
57
|
+
# Load a template and return its instance
|
58
|
+
def self.load_template(name)
|
59
|
+
return @@templates[name.to_sym] if @@templates.has_key?(name.to_sym)
|
60
|
+
|
61
|
+
# find the file
|
62
|
+
filename = self.find_template_file(name) or raise TemplateMissingError.new(name)
|
63
|
+
fileext = self.file_extension(filename)
|
64
|
+
@@templates[name.to_sym] = @@template_engines[fileext.to_sym].load(filename)
|
65
|
+
end
|
66
|
+
|
67
|
+
# Determine the extension for a filename (not including the leading dot)
|
68
|
+
def self.file_extension(name)
|
69
|
+
m = /\.([^.]+)$/.match(name)
|
70
|
+
m.nil? ? nil : m[1]
|
71
|
+
end
|
72
|
+
|
73
|
+
# Determine if a given extension is a registered extension
|
74
|
+
def self.is_registered_extension?(ext)
|
75
|
+
@@template_engines.has_key?(ext.nil? ? nil : ext.to_sym)
|
76
|
+
end
|
77
|
+
|
78
|
+
protected
|
79
|
+
|
80
|
+
# Determine the filename for a template
|
81
|
+
def self.find_template_file(name)
|
82
|
+
@@template_directories.each do |d|
|
83
|
+
@@template_engines.each_key do |ext|
|
84
|
+
['html', 'js'].each do |type|
|
85
|
+
test = File.join(File.expand_path(d), "#{name.to_s}.#{type}.#{ext.to_s}")
|
86
|
+
return test if File.exists?(test)
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|
90
|
+
nil
|
91
|
+
end
|
92
|
+
|
93
|
+
end
|
94
|
+
|
95
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
<h2><a name="aliases"></a>Aliases</h2>
|
2
|
+
|
3
|
+
<% if ctx.has_aliases? %>
|
4
|
+
<table class="members aliases">
|
5
|
+
<thead>
|
6
|
+
<tr>
|
7
|
+
<th class="namehead">Method</th>
|
8
|
+
<th>Alias</th>
|
9
|
+
<th>Description</th>
|
10
|
+
</tr>
|
11
|
+
</thead>
|
12
|
+
<tbody>
|
13
|
+
<% ctx.aliases.each_with_index{|al,i| %>
|
14
|
+
<tr class="<%= stripe_class i %>">
|
15
|
+
<td class="name"><%=h al[:old_name] %></td>
|
16
|
+
<td class="new_name">→ <%=h al[:new_name] %></td>
|
17
|
+
<td class="description"><%= al[:description] %></td>
|
18
|
+
</tr>
|
19
|
+
<% } %>
|
20
|
+
</tbody>
|
21
|
+
</table>
|
22
|
+
<% end %>
|
@@ -0,0 +1,24 @@
|
|
1
|
+
<h2><a name="attributes"></a>Attributes</h2>
|
2
|
+
|
3
|
+
<% if ctx.has_attributes? %>
|
4
|
+
<table class="members attributes">
|
5
|
+
<thead>
|
6
|
+
<tr>
|
7
|
+
<th class="namehead">Name</th>
|
8
|
+
<th>Visibility</th>
|
9
|
+
<th>R/W</th>
|
10
|
+
<th>Description</th>
|
11
|
+
</tr>
|
12
|
+
</thead>
|
13
|
+
<tbody>
|
14
|
+
<% ctx.attributes.each_with_index{|attribute,i| %>
|
15
|
+
<tr class="<%= stripe_class i %> <%=h attribute[:visibility].to_s %>">
|
16
|
+
<td class="name"><%=h attribute[:name] %></td>
|
17
|
+
<td class="visiblity"><%=h attribute[:visibility].to_s %></td>
|
18
|
+
<td class="rw"><%=h attribute[:rw] %></td>
|
19
|
+
<td class="description"><%= attribute[:description] %></td>
|
20
|
+
</tr>
|
21
|
+
<% } %>
|
22
|
+
</tbody>
|
23
|
+
</table>
|
24
|
+
<% end %>
|
@@ -0,0 +1,13 @@
|
|
1
|
+
<h2><a name="classes_and_modules"></a>Classes & Modules</h2>
|
2
|
+
|
3
|
+
<% if ctx.has_classes_or_modules? %>
|
4
|
+
<ul class="classlist">
|
5
|
+
<% ctx.modules.each {|m| %>
|
6
|
+
<li class="module"><%= link_to h(m.name), m %></li>
|
7
|
+
<% } %>
|
8
|
+
<% ctx.classes.each {|c| %>
|
9
|
+
<li class="class"><%= link_to h(c.name), c %></li>
|
10
|
+
<% } %>
|
11
|
+
</ul>
|
12
|
+
<% end %>
|
13
|
+
|
@@ -0,0 +1,22 @@
|
|
1
|
+
<h2><a name="constants"></a>Constants</h2>
|
2
|
+
|
3
|
+
<% if ctx.has_constants? %>
|
4
|
+
<table class="members constants">
|
5
|
+
<thead>
|
6
|
+
<tr>
|
7
|
+
<th class="namehead">Name</th>
|
8
|
+
<th> </th>
|
9
|
+
<th>Description</th>
|
10
|
+
</tr>
|
11
|
+
</thead>
|
12
|
+
<tbody>
|
13
|
+
<% ctx.constants.each_with_index{|constant,i| %>
|
14
|
+
<tr class="<%= stripe_class i %>">
|
15
|
+
<td class="name"><%=h constant[:name] %></td>
|
16
|
+
<td class="value">= <%=h constant[:value] %></td>
|
17
|
+
<td class="description"><%= constant[:description] %></td>
|
18
|
+
</tr>
|
19
|
+
<% } %>
|
20
|
+
</tbody>
|
21
|
+
</table>
|
22
|
+
<% end %>
|
@@ -0,0 +1,10 @@
|
|
1
|
+
<h4 class="method_detail"><a name="<%=h method[:anchor] %>"></a>
|
2
|
+
<% if method[:callseq] %>
|
3
|
+
<span class="name"><%= method[:callseq] %></span>
|
4
|
+
<% else %>
|
5
|
+
<span class="name"><%= h(method[:name]) %></span><span class="args"><%= method[:params] %></span>
|
6
|
+
<% end %>
|
7
|
+
</h4>
|
8
|
+
<div class="method_description">
|
9
|
+
<%= method[:description] %>
|
10
|
+
</div>
|
@@ -0,0 +1,17 @@
|
|
1
|
+
<a name="method_detail"></a>
|
2
|
+
|
3
|
+
<% if ctx.has_class_methods? %>
|
4
|
+
<h2 class="detail"><a name="class_method_detail"></a>Class Method Detail</h2>
|
5
|
+
|
6
|
+
<% ctx.class_methods.each{|method| %>
|
7
|
+
<%= render_partial :method_detail, {:method=>method} %>
|
8
|
+
<% } %>
|
9
|
+
<% end %>
|
10
|
+
|
11
|
+
<% if ctx.has_instance_methods? %>
|
12
|
+
<h2 class="detail"><a name="instance_method_detail"></a>Instance Method Detail</h2>
|
13
|
+
|
14
|
+
<% ctx.instance_methods.each{|method| %>
|
15
|
+
<%= render_partial :method_detail, {:method=>method} %>
|
16
|
+
<% } %>
|
17
|
+
<% end %>
|
@@ -0,0 +1,37 @@
|
|
1
|
+
<h2><a name="methods"></a>Methods</h2>
|
2
|
+
|
3
|
+
<% if ctx.has_class_methods? %>
|
4
|
+
<h3><a name="class_methods"></a>Class</h3>
|
5
|
+
|
6
|
+
<table class="members methods">
|
7
|
+
<thead>
|
8
|
+
<tr>
|
9
|
+
<th class="namehead">Visibility</th>
|
10
|
+
<th>Signature</th>
|
11
|
+
</tr>
|
12
|
+
</thead>
|
13
|
+
<tbody>
|
14
|
+
<% ctx.class_methods.each_with_index{|method,i| %>
|
15
|
+
<%= render_partial :method_listing_row, {:method=>method, :i=>i} %>
|
16
|
+
<% } %>
|
17
|
+
</tbody>
|
18
|
+
</table>
|
19
|
+
<% end %>
|
20
|
+
|
21
|
+
<% if ctx.has_instance_methods? %>
|
22
|
+
<h3><a name="instance_methods"></a>Instance</h3>
|
23
|
+
|
24
|
+
<table class="members methods">
|
25
|
+
<thead>
|
26
|
+
<tr>
|
27
|
+
<th class="namehead">Visibility</th>
|
28
|
+
<th>Signature</th>
|
29
|
+
</tr>
|
30
|
+
</thead>
|
31
|
+
<tbody>
|
32
|
+
<% ctx.instance_methods.each_with_index{|method,i| %>
|
33
|
+
<%= render_partial :method_listing_row, {:method=>method, :i=>i} %>
|
34
|
+
<% } %>
|
35
|
+
</tbody>
|
36
|
+
</table>
|
37
|
+
<% end %>
|
@@ -0,0 +1,40 @@
|
|
1
|
+
<div id="nav">
|
2
|
+
<div class="search"><div class="searchback">
|
3
|
+
<form id="searchform">
|
4
|
+
<input type="text" id="search_criteria" name="q" accesskey="s" />
|
5
|
+
<input type="submit" class="invisible" name="go" value="search" />
|
6
|
+
<div class="autocompleteChoices" id="search_choices"></div>
|
7
|
+
</form>
|
8
|
+
</div></div>
|
9
|
+
<div id="searchresults"></div>
|
10
|
+
<div id="navcontents">
|
11
|
+
<% if ctx.name_path_to_parent.length > 0 %>
|
12
|
+
<ul>
|
13
|
+
<li><%= link_to h(@options.title), 'index.html', :title=>@options.title %></li>
|
14
|
+
<% ctx.name_path_to_parent.each{|mod| %>
|
15
|
+
<li>
|
16
|
+
<%= link_to h(mod.short_name), mod, :title=>mod.name %>
|
17
|
+
<% if ((mod == ctx.parent) && mod.has_classes_or_modules?) %>
|
18
|
+
<ul>
|
19
|
+
<% mod.modules.each {|child| %><%= render_partial(:nav_item, {:type=>'module', :ctx=>ctx, :child=>child}) %><% } %>
|
20
|
+
<% mod.classes.each {|child| %><%= render_partial(:nav_item, {:type=>'class', :ctx=>ctx, :child=>child}) %><% } %>
|
21
|
+
</ul>
|
22
|
+
<% end %>
|
23
|
+
</li>
|
24
|
+
<% } %>
|
25
|
+
</ul>
|
26
|
+
<% else %>
|
27
|
+
<ul>
|
28
|
+
<li><%= link_to h(@options.title), 'index.html', :title=>@options.title %>
|
29
|
+
<% if (@topclasses.length > 0 || @topmodules.length > 0) %>
|
30
|
+
<ul>
|
31
|
+
<% @topmodules.find_all{|m| m.document_self || m.has_classes_or_modules?}.each {|child| %><%= render_partial(:nav_item, {:type=>'module', :ctx=>ctx, :child=>child}) %><% } %>
|
32
|
+
<% @topclasses.find_all{|c| c.document_self}.each {|child| %><%= render_partial(:nav_item, {:type=>'class', :ctx=>ctx, :child=>child}) %><% } %>
|
33
|
+
</ul>
|
34
|
+
<% end %>
|
35
|
+
</li>
|
36
|
+
</ul>
|
37
|
+
<% end %>
|
38
|
+
</div>
|
39
|
+
<div class="endcap"></div>
|
40
|
+
</div>
|
@@ -0,0 +1 @@
|
|
1
|
+
<li class="<%= type %><%= (child == ctx) ? ' thispage' : '' %>"><%= (child == ctx) ? h(child.short_name) : link_to(h(child.short_name), child, :title=>child.name) %></li>
|
@@ -0,0 +1,71 @@
|
|
1
|
+
<?xml version="1.0" encoding="<%=h @options.charset %>"?>
|
2
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
3
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
4
|
+
<head>
|
5
|
+
<title><%=h "#{klass.name} - #{@options.title}"%></title>
|
6
|
+
<meta http-equiv="Content-Type" content="text/html; charset=<%=h @options.charset %>" />
|
7
|
+
<link rel="stylesheet" href="<%=h path_to(@options.css.nil? ? 'r2doc.css' : @options.css)%>" type="text/css" />
|
8
|
+
<script type="text/javascript" src="<%= path_to 'jquery.js' %>"></script>
|
9
|
+
<script type="text/javascript" src="<%= path_to 'prototype.js' %>"></script>
|
10
|
+
<script type="text/javascript" src="<%= path_to 'rdoc-utils.js' %>"></script>
|
11
|
+
<script type="text/javascript" src="<%= path_to 'rdoc.js' %>"></script>
|
12
|
+
<script type="text/javascript">
|
13
|
+
// <![CDATA[
|
14
|
+
rdoc.currentPath = "<%= @current_path %>";
|
15
|
+
// ]]>
|
16
|
+
</script>
|
17
|
+
</head>
|
18
|
+
<body>
|
19
|
+
<%= render_partial :nav, {:ctx=>klass} %>
|
20
|
+
|
21
|
+
<div id="rightside">
|
22
|
+
<div id="topbar">
|
23
|
+
<div class="topcap"><div class="endcap">
|
24
|
+
<div class="quicklinks">
|
25
|
+
<a href="#constants">constants</a> |
|
26
|
+
<a href="#attributes">attributes</a> |
|
27
|
+
<a href="#methods">methods</a>
|
28
|
+
</div>
|
29
|
+
<div class="type"><%= klass.context.is_module? ? 'Module' : 'Class' %></div>
|
30
|
+
<h1><%=h klass.name %></h1>
|
31
|
+
</div></div>
|
32
|
+
</div>
|
33
|
+
|
34
|
+
<div id="content">
|
35
|
+
<dl class="class_properties">
|
36
|
+
<dt>Inheritance</dt>
|
37
|
+
<dd><% p = klass.superclass; while p do %>
|
38
|
+
<% if p.respond_to?(:path) %>
|
39
|
+
< <%= link_to h(p.name), p %> <% p = p.superclass %>
|
40
|
+
<% else %>
|
41
|
+
< <%= h(p) %> <% p = nil %>
|
42
|
+
<% end %>
|
43
|
+
<% end %></dd>
|
44
|
+
<% if klass.has_includes? %>
|
45
|
+
<dt>Included Modules</dt>
|
46
|
+
<dd><%= klass.includes.collect{|m| m.has_key?(:url) ? link_to(h(m[:name]), m[:url]) : m[:name]}.join(', ') %></dd>
|
47
|
+
<% end %>
|
48
|
+
</dl>
|
49
|
+
|
50
|
+
<div class="description">
|
51
|
+
<%= klass.description %>
|
52
|
+
</div>
|
53
|
+
|
54
|
+
<%= render_partial(:classes_and_modules, {:ctx=>klass}) if klass.has_classes_or_modules? %>
|
55
|
+
|
56
|
+
<%= render_partial(:constants, {:ctx=>klass}) if klass.has_constants? %>
|
57
|
+
|
58
|
+
<%= render_partial(:attributes, {:ctx=>klass}) if klass.has_attributes? %>
|
59
|
+
|
60
|
+
<%= render_partial(:aliases, {:ctx=>klass})if klass.has_aliases? %>
|
61
|
+
|
62
|
+
<%= render_partial(:method_listing, {:ctx=>klass}) if (klass.has_class_methods? || klass.has_instance_methods?) %>
|
63
|
+
|
64
|
+
<%= render_partial(:method_details, {:ctx=>klass}) if (klass.has_class_methods? || klass.has_instance_methods?) %>
|
65
|
+
|
66
|
+
</div>
|
67
|
+
</div>
|
68
|
+
|
69
|
+
<!-- R2Doc template by Mission Critical Labs, Inc. - http://www.missioncriticallabs.com/ -->
|
70
|
+
</body>
|
71
|
+
</html>
|
@@ -0,0 +1,52 @@
|
|
1
|
+
<?xml version="1.0" encoding="<%=h @options.charset %>"?>
|
2
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
3
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
4
|
+
<head>
|
5
|
+
<title><%=h "#{file.name} - #{@options.title}"%></title>
|
6
|
+
<meta http-equiv="Content-Type" content="text/html; charset=<%=h @options.charset %>" />
|
7
|
+
<link rel="stylesheet" href="<%=h path_to(@options.css.nil? ? 'r2doc.css' : @options.css)%>" type="text/css" />
|
8
|
+
<script type="text/javascript" src="<%= path_to 'jquery.js' %>"></script>
|
9
|
+
<script type="text/javascript" src="<%= path_to 'prototype.js' %>"></script>
|
10
|
+
<script type="text/javascript" src="<%= path_to 'rdoc-utils.js' %>"></script>
|
11
|
+
<script type="text/javascript" src="<%= path_to 'rdoc.js' %>"></script>
|
12
|
+
<script type="text/javascript">
|
13
|
+
// <![CDATA[
|
14
|
+
rdoc.currentPath = "<%= @current_path %>";
|
15
|
+
// ]]>
|
16
|
+
</script>
|
17
|
+
</head>
|
18
|
+
<body>
|
19
|
+
<%= render_partial :nav, {:ctx=>file} %>
|
20
|
+
|
21
|
+
<div id="rightside">
|
22
|
+
<div id="topbar">
|
23
|
+
<div class="topcap"><div class="endcap">
|
24
|
+
<div class="type">File</div>
|
25
|
+
<h1><%=h file.name %></h1>
|
26
|
+
</div></div>
|
27
|
+
</div>
|
28
|
+
|
29
|
+
<div id="content">
|
30
|
+
|
31
|
+
<div class="description">
|
32
|
+
<%= file.description %>
|
33
|
+
</div>
|
34
|
+
|
35
|
+
<%= render_partial(:classes_and_modules, {:ctx=>file}) if file.has_classes_or_modules? %>
|
36
|
+
|
37
|
+
<%= render_partial(:constants, {:ctx=>file}) if file.has_constants? %>
|
38
|
+
|
39
|
+
<%= render_partial(:attributes, {:ctx=>file}) if file.has_attributes? %>
|
40
|
+
|
41
|
+
<%= render_partial(:aliases, {:ctx=>file}) if file.has_aliases? %>
|
42
|
+
|
43
|
+
<%= render_partial(:method_listing, {:ctx=>file}) if (file.has_class_methods? || file.has_instance_methods?) %>
|
44
|
+
|
45
|
+
<%= render_partial(:method_details, {:ctx=>file}) if (file.has_class_methods? || file.has_instance_methods?) %>
|
46
|
+
|
47
|
+
</div>
|
48
|
+
</div>
|
49
|
+
|
50
|
+
<!-- R2Doc template by Mission Critical Labs, Inc. - http://www.missioncriticallabs.com/ -->
|
51
|
+
</body>
|
52
|
+
</html>
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|