distil 0.14.4 → 0.14.5.a
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION +1 -1
- data/bin/distil +10 -0
- data/lib/distil/project.rb +10 -7
- data/lib/distil/source-file.rb +1 -1
- metadata +28 -164
- data/Buildfile +0 -33
- data/distil.gemspec +0 -783
- data/lib/distil/javascript-documentation-generator.rb +0 -49
- data/vendor/pdoc/LICENSE +0 -16
- data/vendor/pdoc/PDoc.tmbundle/Commands/Continue PDoc Comment.tmCommand +0 -39
- data/vendor/pdoc/PDoc.tmbundle/Macros/Collapse PDoc Blocks.tmMacro +0 -4084
- data/vendor/pdoc/PDoc.tmbundle/Macros/Expand PDoc Blocks.tmMacro +0 -1388
- data/vendor/pdoc/PDoc.tmbundle/Preferences/PDoc.tmPreferences +0 -50
- data/vendor/pdoc/PDoc.tmbundle/Snippets/class.tmSnippet +0 -24
- data/vendor/pdoc/PDoc.tmbundle/Snippets/constant.tmSnippet +0 -22
- data/vendor/pdoc/PDoc.tmbundle/Snippets/event.tmSnippet +0 -16
- data/vendor/pdoc/PDoc.tmbundle/Snippets/method.tmSnippet +0 -22
- data/vendor/pdoc/PDoc.tmbundle/Snippets/mixin.tmSnippet +0 -23
- data/vendor/pdoc/PDoc.tmbundle/Snippets/namespace.tmSnippet +0 -24
- data/vendor/pdoc/PDoc.tmbundle/Snippets/param.tmSnippet +0 -16
- data/vendor/pdoc/PDoc.tmbundle/Snippets/property.tmSnippet +0 -22
- data/vendor/pdoc/PDoc.tmbundle/Snippets/section.tmSnippet +0 -23
- data/vendor/pdoc/PDoc.tmbundle/Syntaxes/PDoc.tmLanguage +0 -33
- data/vendor/pdoc/PDoc.tmbundle/info.plist +0 -22
- data/vendor/pdoc/README.markdown +0 -34
- data/vendor/pdoc/Rakefile +0 -46
- data/vendor/pdoc/bin/pdoc +0 -58
- data/vendor/pdoc/lib/pdoc.rb +0 -32
- data/vendor/pdoc/lib/pdoc/error.rb +0 -4
- data/vendor/pdoc/lib/pdoc/generators.rb +0 -6
- data/vendor/pdoc/lib/pdoc/generators/abstract_generator.rb +0 -16
- data/vendor/pdoc/lib/pdoc/generators/html.rb +0 -8
- data/vendor/pdoc/lib/pdoc/generators/html/helpers.rb +0 -256
- data/vendor/pdoc/lib/pdoc/generators/html/page.rb +0 -71
- data/vendor/pdoc/lib/pdoc/generators/html/syntax_highlighter.rb +0 -41
- data/vendor/pdoc/lib/pdoc/generators/html/template.rb +0 -37
- data/vendor/pdoc/lib/pdoc/generators/html/website.rb +0 -194
- data/vendor/pdoc/lib/pdoc/generators/json.rb +0 -15
- data/vendor/pdoc/lib/pdoc/generators/pythonesque.rb +0 -105
- data/vendor/pdoc/lib/pdoc/models.rb +0 -47
- data/vendor/pdoc/lib/pdoc/models/argument.rb +0 -37
- data/vendor/pdoc/lib/pdoc/models/base.rb +0 -107
- data/vendor/pdoc/lib/pdoc/models/callable.rb +0 -19
- data/vendor/pdoc/lib/pdoc/models/class.rb +0 -28
- data/vendor/pdoc/lib/pdoc/models/class_method.rb +0 -18
- data/vendor/pdoc/lib/pdoc/models/class_property.rb +0 -9
- data/vendor/pdoc/lib/pdoc/models/constant.rb +0 -9
- data/vendor/pdoc/lib/pdoc/models/constructor.rb +0 -14
- data/vendor/pdoc/lib/pdoc/models/container.rb +0 -114
- data/vendor/pdoc/lib/pdoc/models/entity.rb +0 -54
- data/vendor/pdoc/lib/pdoc/models/instance_method.rb +0 -18
- data/vendor/pdoc/lib/pdoc/models/instance_property.rb +0 -9
- data/vendor/pdoc/lib/pdoc/models/mixin.rb +0 -10
- data/vendor/pdoc/lib/pdoc/models/namespace.rb +0 -10
- data/vendor/pdoc/lib/pdoc/models/root.rb +0 -27
- data/vendor/pdoc/lib/pdoc/models/section.rb +0 -19
- data/vendor/pdoc/lib/pdoc/models/signature.rb +0 -27
- data/vendor/pdoc/lib/pdoc/models/utility.rb +0 -11
- data/vendor/pdoc/lib/pdoc/parser.rb +0 -109
- data/vendor/pdoc/lib/pdoc/parser/argument_description_nodes.rb +0 -21
- data/vendor/pdoc/lib/pdoc/parser/basic_nodes.rb +0 -31
- data/vendor/pdoc/lib/pdoc/parser/description_nodes.rb +0 -42
- data/vendor/pdoc/lib/pdoc/parser/documentation_nodes.rb +0 -483
- data/vendor/pdoc/lib/pdoc/parser/ebnf_arguments_nodes.rb +0 -58
- data/vendor/pdoc/lib/pdoc/parser/ebnf_expression_nodes.rb +0 -227
- data/vendor/pdoc/lib/pdoc/parser/fragment.rb +0 -55
- data/vendor/pdoc/lib/pdoc/parser/section_content_nodes.rb +0 -19
- data/vendor/pdoc/lib/pdoc/parser/tags_nodes.rb +0 -14
- data/vendor/pdoc/lib/pdoc/parser/treetop_files/argument_description.treetop +0 -31
- data/vendor/pdoc/lib/pdoc/parser/treetop_files/basic.treetop +0 -41
- data/vendor/pdoc/lib/pdoc/parser/treetop_files/description.treetop +0 -7
- data/vendor/pdoc/lib/pdoc/parser/treetop_files/documentation.treetop +0 -75
- data/vendor/pdoc/lib/pdoc/parser/treetop_files/ebnf_arguments.treetop +0 -33
- data/vendor/pdoc/lib/pdoc/parser/treetop_files/ebnf_expression.treetop +0 -70
- data/vendor/pdoc/lib/pdoc/parser/treetop_files/ebnf_javascript.treetop +0 -54
- data/vendor/pdoc/lib/pdoc/parser/treetop_files/events.treetop +0 -17
- data/vendor/pdoc/lib/pdoc/parser/treetop_files/section_content.treetop +0 -8
- data/vendor/pdoc/lib/pdoc/parser/treetop_files/tags.treetop +0 -31
- data/vendor/pdoc/lib/pdoc/runner.rb +0 -110
- data/vendor/pdoc/lib/pdoc/treemaker.rb +0 -94
- data/vendor/pdoc/pdoc.gemspec +0 -31
- data/vendor/pdoc/templates/html/assets/images/pdoc/alias.png +0 -0
- data/vendor/pdoc/templates/html/assets/images/pdoc/class.png +0 -0
- data/vendor/pdoc/templates/html/assets/images/pdoc/class_deprecated.png +0 -0
- data/vendor/pdoc/templates/html/assets/images/pdoc/class_method.png +0 -0
- data/vendor/pdoc/templates/html/assets/images/pdoc/class_property.png +0 -0
- data/vendor/pdoc/templates/html/assets/images/pdoc/constant.png +0 -0
- data/vendor/pdoc/templates/html/assets/images/pdoc/constructor.png +0 -0
- data/vendor/pdoc/templates/html/assets/images/pdoc/deprecated.png +0 -0
- data/vendor/pdoc/templates/html/assets/images/pdoc/description.png +0 -0
- data/vendor/pdoc/templates/html/assets/images/pdoc/information.png +0 -0
- data/vendor/pdoc/templates/html/assets/images/pdoc/instance_method.png +0 -0
- data/vendor/pdoc/templates/html/assets/images/pdoc/instance_property.png +0 -0
- data/vendor/pdoc/templates/html/assets/images/pdoc/method.png +0 -0
- data/vendor/pdoc/templates/html/assets/images/pdoc/method_deprecated.png +0 -0
- data/vendor/pdoc/templates/html/assets/images/pdoc/mixin.png +0 -0
- data/vendor/pdoc/templates/html/assets/images/pdoc/namespace.png +0 -0
- data/vendor/pdoc/templates/html/assets/images/pdoc/property.png +0 -0
- data/vendor/pdoc/templates/html/assets/images/pdoc/related_to.png +0 -0
- data/vendor/pdoc/templates/html/assets/images/pdoc/search-background.png +0 -0
- data/vendor/pdoc/templates/html/assets/images/pdoc/section-background.png +0 -0
- data/vendor/pdoc/templates/html/assets/images/pdoc/section.png +0 -0
- data/vendor/pdoc/templates/html/assets/images/pdoc/selected-section-background.png +0 -0
- data/vendor/pdoc/templates/html/assets/images/pdoc/subclass.png +0 -0
- data/vendor/pdoc/templates/html/assets/images/pdoc/superclass.png +0 -0
- data/vendor/pdoc/templates/html/assets/images/pdoc/utility.png +0 -0
- data/vendor/pdoc/templates/html/assets/javascripts/pdoc/application.js +0 -478
- data/vendor/pdoc/templates/html/assets/javascripts/pdoc/prototype.js +0 -4874
- data/vendor/pdoc/templates/html/assets/javascripts/pdoc/tabs.js +0 -506
- data/vendor/pdoc/templates/html/assets/stylesheets/pdoc/api.css +0 -677
- data/vendor/pdoc/templates/html/assets/stylesheets/pdoc/pygments.css +0 -62
- data/vendor/pdoc/templates/html/helpers.rb +0 -35
- data/vendor/pdoc/templates/html/index.erb +0 -18
- data/vendor/pdoc/templates/html/item_index.js.erb +0 -6
- data/vendor/pdoc/templates/html/layout.erb +0 -67
- data/vendor/pdoc/templates/html/leaf.erb +0 -22
- data/vendor/pdoc/templates/html/node.erb +0 -30
- data/vendor/pdoc/templates/html/partials/class_relationships.erb +0 -19
- data/vendor/pdoc/templates/html/partials/classes.erb +0 -7
- data/vendor/pdoc/templates/html/partials/constructor.erb +0 -5
- data/vendor/pdoc/templates/html/partials/description.erb +0 -5
- data/vendor/pdoc/templates/html/partials/link_list.erb +0 -1
- data/vendor/pdoc/templates/html/partials/method_signatures.erb +0 -14
- data/vendor/pdoc/templates/html/partials/methodized_note.erb +0 -9
- data/vendor/pdoc/templates/html/partials/mixins.erb +0 -7
- data/vendor/pdoc/templates/html/partials/namespaces.erb +0 -7
- data/vendor/pdoc/templates/html/partials/related_utilities.erb +0 -5
- data/vendor/pdoc/templates/html/partials/relationships.erb +0 -11
- data/vendor/pdoc/templates/html/partials/short_description_list.erb +0 -7
- data/vendor/pdoc/templates/html/partials/title.erb +0 -22
- data/vendor/pdoc/templates/html/section.erb +0 -18
- data/vendor/pdoc/test/fixtures/ajax.js +0 -809
- data/vendor/pdoc/test/fixtures/prototype.js +0 -5789
- data/vendor/pdoc/test/fixtures/test.txt +0 -1
- data/vendor/pdoc/test/fixtures/text.txt +0 -13
- data/vendor/pdoc/test/unit/parser/argument_description_test.rb +0 -40
- data/vendor/pdoc/test/unit/parser/basic_test.rb +0 -55
- data/vendor/pdoc/test/unit/parser/description_test.rb +0 -34
- data/vendor/pdoc/test/unit/parser/documentation_test.rb +0 -520
- data/vendor/pdoc/test/unit/parser/ebnf_arguments_test.rb +0 -81
- data/vendor/pdoc/test/unit/parser/ebnf_expression_test.rb +0 -382
- data/vendor/pdoc/test/unit/parser/ebnf_javascript_test.rb +0 -37
- data/vendor/pdoc/test/unit/parser/events_test.rb +0 -27
- data/vendor/pdoc/test/unit/parser/section_content_test.rb +0 -44
- data/vendor/pdoc/test/unit/parser/tags_test.rb +0 -39
- data/vendor/pdoc/test/unit/parser/test_fragment.rb +0 -80
- data/vendor/pdoc/test/unit/parser_test_helper.rb +0 -62
- data/vendor/pdoc/test/unit/runner/basic_test.rb +0 -14
- data/vendor/pdoc/test/unit/templates/html_helpers_test.rb +0 -25
- data/vendor/pdoc/vendor/albino.rb +0 -122
- data/vendor/pdoc/website/html/documentation.html +0 -280
- data/vendor/pdoc/website/html/images/pdoc.jpg +0 -0
- data/vendor/pdoc/website/html/index.html +0 -84
- data/vendor/pdoc/website/html/stylesheets/main.css +0 -73
- data/vendor/pdoc/website/html/stylesheets/reset.css +0 -18
- data/vendor/pdoc/website/markdown/syntax.markdown +0 -226
- data/yuicompressor-2.4.6.zip +0 -0
data/vendor/pdoc/lib/pdoc.rb
DELETED
@@ -1,32 +0,0 @@
|
|
1
|
-
DIR = File.expand_path(File.dirname(__FILE__))
|
2
|
-
OUTPUT_DIR = File.join(DIR, '..', 'output')
|
3
|
-
TEMPLATES_DIR = File.join(DIR, '..', 'templates')
|
4
|
-
VENDOR_DIR = File.join(DIR, '..', 'vendor')
|
5
|
-
PARSER_DIR = File.join(DIR, 'pdoc', 'parser')
|
6
|
-
|
7
|
-
[DIR, VENDOR_DIR, PARSER_DIR, OUTPUT_DIR, TEMPLATES_DIR].each do |c|
|
8
|
-
$:.unshift(c)
|
9
|
-
end
|
10
|
-
|
11
|
-
require 'rubygems'
|
12
|
-
require 'erb'
|
13
|
-
require 'fileutils'
|
14
|
-
|
15
|
-
require 'pdoc/error'
|
16
|
-
require 'pdoc/runner'
|
17
|
-
require 'pdoc/generators'
|
18
|
-
require 'pdoc/parser'
|
19
|
-
require 'pdoc/models'
|
20
|
-
require 'pdoc/treemaker'
|
21
|
-
|
22
|
-
module PDoc
|
23
|
-
def self.run(options = {})
|
24
|
-
Runner.new(options.dup).run
|
25
|
-
end
|
26
|
-
|
27
|
-
def self.copy_templates(template_type, destination)
|
28
|
-
dir = File.expand_path(destination)
|
29
|
-
raise "File already exists: #{destination}" if File.exist?(dir)
|
30
|
-
FileUtils.cp_r("#{TEMPLATES_DIR}/#{template_type}", dir)
|
31
|
-
end
|
32
|
-
end
|
@@ -1,6 +0,0 @@
|
|
1
|
-
require File.expand_path(File.join(File.dirname(__FILE__), 'generators', 'abstract_generator'))
|
2
|
-
require File.expand_path(File.join(File.dirname(__FILE__), 'generators', 'html'))
|
3
|
-
require File.expand_path(File.join(File.dirname(__FILE__), 'generators', 'pythonesque'))
|
4
|
-
require File.expand_path(File.join(File.dirname(__FILE__), 'generators', 'json'))
|
5
|
-
|
6
|
-
|
@@ -1,16 +0,0 @@
|
|
1
|
-
module PDoc
|
2
|
-
module Generators
|
3
|
-
class AbstractGenerator
|
4
|
-
attr_reader :options, :root
|
5
|
-
def initialize(root, options = {})
|
6
|
-
@root = root
|
7
|
-
@options = options
|
8
|
-
end
|
9
|
-
|
10
|
-
# Creates a new directory with read, write and execute permission.
|
11
|
-
def mkdir(name)
|
12
|
-
Dir.mkdir(name, 0755)
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
@@ -1,8 +0,0 @@
|
|
1
|
-
HTML_DIR = File.expand_path(File.join(File.dirname(__FILE__), "html"))
|
2
|
-
|
3
|
-
require File.join(HTML_DIR, "helpers")
|
4
|
-
require File.join(HTML_DIR, "template")
|
5
|
-
require File.join(HTML_DIR, "page")
|
6
|
-
require File.join(HTML_DIR, "website")
|
7
|
-
require File.join(HTML_DIR, "syntax_highlighter")
|
8
|
-
|
@@ -1,256 +0,0 @@
|
|
1
|
-
module PDoc
|
2
|
-
module Generators
|
3
|
-
module Html
|
4
|
-
module Helpers
|
5
|
-
module BaseHelper
|
6
|
-
def content_tag(tag_name, content, attributes = {})
|
7
|
-
"<#{tag_name}#{attributes_to_html(attributes)}>#{content}</#{tag_name}>"
|
8
|
-
end
|
9
|
-
|
10
|
-
def img_tag(filename, attributes = {})
|
11
|
-
attributes.merge! :src => "#{path_prefix}images/#{filename}"
|
12
|
-
tag(:img, attributes)
|
13
|
-
end
|
14
|
-
|
15
|
-
def tag(tag_name, attributes = {})
|
16
|
-
"<#{tag_name}#{attributes_to_html(attributes)} />"
|
17
|
-
end
|
18
|
-
|
19
|
-
def link_to(name, path, attributes={})
|
20
|
-
content_tag(:a, name, attributes.merge(:href => path))
|
21
|
-
end
|
22
|
-
|
23
|
-
def htmlize(markdown)
|
24
|
-
markdown = Website.syntax_highlighter.parse(markdown)
|
25
|
-
Website.markdown_parser.new(markdown).to_html
|
26
|
-
end
|
27
|
-
|
28
|
-
# Gah, what an ugly hack.
|
29
|
-
def inline_htmlize(markdown)
|
30
|
-
htmlize(markdown).gsub(/^<p>/, '').gsub(/<\/p>$/, '')
|
31
|
-
end
|
32
|
-
|
33
|
-
def javascript_include_tag(*names)
|
34
|
-
names.map do |name|
|
35
|
-
attributes = {
|
36
|
-
:src => "#{path_prefix}javascripts/#{name}.js",
|
37
|
-
:type => "text/javascript",
|
38
|
-
:charset => "utf-8"
|
39
|
-
}
|
40
|
-
content_tag(:script, "", attributes)
|
41
|
-
end.join("\n")
|
42
|
-
end
|
43
|
-
|
44
|
-
def stylesheet_link_tag(*names)
|
45
|
-
names.map do |name|
|
46
|
-
attributes = {
|
47
|
-
:href => "#{path_prefix}stylesheets/#{name}.css",
|
48
|
-
:type => "text/css",
|
49
|
-
:media => "screen, projection",
|
50
|
-
:charset => "utf-8",
|
51
|
-
:rel => "stylesheet"
|
52
|
-
}
|
53
|
-
tag(:link, attributes)
|
54
|
-
end.join("\n")
|
55
|
-
end
|
56
|
-
|
57
|
-
private
|
58
|
-
def attributes_to_html(attributes)
|
59
|
-
attributes = attributes.sort { |a, b| a.to_s <=> b.to_s }
|
60
|
-
attributes.map do |a|
|
61
|
-
k, v = a
|
62
|
-
k ? " #{k}=\"#{v}\"" : ""
|
63
|
-
end.join
|
64
|
-
end
|
65
|
-
end
|
66
|
-
|
67
|
-
module LinkHelper
|
68
|
-
def path_prefix
|
69
|
-
"../" * depth
|
70
|
-
end
|
71
|
-
|
72
|
-
def path_to(obj)
|
73
|
-
path = path_prefix << obj.url << '/'
|
74
|
-
Website.pretty_urls? ? path : "#{path}index.html"
|
75
|
-
end
|
76
|
-
|
77
|
-
def auto_link(obj, options = {})
|
78
|
-
if obj.is_a?(String)
|
79
|
-
original = obj
|
80
|
-
obj = root.find(obj)
|
81
|
-
return original unless obj
|
82
|
-
end
|
83
|
-
name = options.delete(:name) == :short ? obj.name : obj.full_name
|
84
|
-
if obj.type == 'section'
|
85
|
-
title = obj.full_name
|
86
|
-
else
|
87
|
-
title = "#{obj.full_name} (#{obj.type})"
|
88
|
-
end
|
89
|
-
link_to(name, path_to(obj), { :title => title }.merge(options))
|
90
|
-
end
|
91
|
-
|
92
|
-
def auto_link_code(obj, options = {})
|
93
|
-
"<code>#{auto_link(obj, options)}</code>"
|
94
|
-
end
|
95
|
-
|
96
|
-
def auto_link_content(content)
|
97
|
-
return '' if content.nil?
|
98
|
-
content.gsub!(/\[\[([a-zA-Z]+)\s+section\]\]/) do |m|
|
99
|
-
result = auto_link(root.find($1), :name => :long)
|
100
|
-
result
|
101
|
-
end
|
102
|
-
content.gsub(/\[\[([a-zA-Z$\.#]+)(?:\s+([^\]]+))?\]\]/) do |m|
|
103
|
-
if doc_instance = root.find($1)
|
104
|
-
$2 ? link_to($2, path_to(doc_instance)) : auto_link_code(doc_instance, :name => :long)
|
105
|
-
else
|
106
|
-
$1
|
107
|
-
end
|
108
|
-
end
|
109
|
-
end
|
110
|
-
|
111
|
-
def auto_link_types(types, options = {})
|
112
|
-
types = types.split(/\s+\|\s+/) if types.is_a?(String)
|
113
|
-
types.map do |t|
|
114
|
-
if match = /^\[([\w\d\$\.\(\)#]*[\w\d\$\(\)#])...\s*\]$/.match(t) # e.g.: [Element...]
|
115
|
-
"[#{auto_link(match[1], options)}…]"
|
116
|
-
else
|
117
|
-
auto_link(t, options)
|
118
|
-
end
|
119
|
-
end
|
120
|
-
end
|
121
|
-
|
122
|
-
def dom_id(obj)
|
123
|
-
"#{obj.id}-#{obj.type.gsub(/\s+/, '_')}"
|
124
|
-
end
|
125
|
-
end
|
126
|
-
|
127
|
-
module CodeHelper
|
128
|
-
def methodize_signature(sig)
|
129
|
-
sig.sub(/\.([\w\d\$]+)\((.*?)(,\s*|\))/) do
|
130
|
-
first_arg = $2.to_s.strip
|
131
|
-
prefix = first_arg[-1, 1] == '[' ? '([' : '('
|
132
|
-
rest = $3 == ')' ? $3 : ''
|
133
|
-
"##{$1}#{prefix}#{rest}"
|
134
|
-
end
|
135
|
-
end
|
136
|
-
|
137
|
-
def methodize_full_name(obj)
|
138
|
-
obj.full_name.sub(/\.([^.]+)$/, '#\1')
|
139
|
-
end
|
140
|
-
|
141
|
-
def method_synopsis(object)
|
142
|
-
result = []
|
143
|
-
object.signatures.each do |signature|
|
144
|
-
if return_value = signature.return_value
|
145
|
-
types = auto_link_types(return_value, :name => :long).join(' | ')
|
146
|
-
result << "#{signature.name} → #{types}"
|
147
|
-
else # Constructors
|
148
|
-
result << signature.name
|
149
|
-
end
|
150
|
-
end
|
151
|
-
result
|
152
|
-
end
|
153
|
-
|
154
|
-
def breadcrumb(obj, options = {})
|
155
|
-
options = {:name => :short}.merge(options)
|
156
|
-
result = []
|
157
|
-
begin
|
158
|
-
result << auto_link(obj, options.dup)
|
159
|
-
obj = obj.parent
|
160
|
-
end until obj.is_a?(Models::Root)
|
161
|
-
result.reverse!
|
162
|
-
end
|
163
|
-
end
|
164
|
-
|
165
|
-
module MenuHelper
|
166
|
-
NODES = [
|
167
|
-
:namespaces,
|
168
|
-
:classes,
|
169
|
-
:mixins,
|
170
|
-
:utilities
|
171
|
-
]
|
172
|
-
LEAVES = [
|
173
|
-
:constants,
|
174
|
-
:class_methods,
|
175
|
-
:class_properties,
|
176
|
-
:instance_methods,
|
177
|
-
:instance_properties
|
178
|
-
]
|
179
|
-
|
180
|
-
def menu(obj)
|
181
|
-
if obj.parent
|
182
|
-
html = menu_item(obj, :name => :long)
|
183
|
-
|
184
|
-
html << node_submenu(obj)
|
185
|
-
|
186
|
-
if obj == doc_instance && obj.respond_to?(:constants)
|
187
|
-
html << leaf_submenu(obj)
|
188
|
-
elsif doc_instance && doc_instance.respond_to?(:parent)
|
189
|
-
parent = doc_instance.parent
|
190
|
-
html << leaf_submenu(parent) if parent == obj && obj.respond_to?(:constants)
|
191
|
-
end
|
192
|
-
|
193
|
-
content_tag(:li, html)
|
194
|
-
else #root
|
195
|
-
node_submenu(obj)
|
196
|
-
end
|
197
|
-
end
|
198
|
-
|
199
|
-
def node_submenu(obj)
|
200
|
-
children = []
|
201
|
-
options = {}
|
202
|
-
|
203
|
-
NODES.each do |prop|
|
204
|
-
children.concat(obj.send(prop)) if obj.respond_to?(prop)
|
205
|
-
end
|
206
|
-
|
207
|
-
list_items = children.sort.map { |item| menu(item) }
|
208
|
-
if obj.respond_to?(:sections)
|
209
|
-
obj.sections.each { |section| list_items << menu(section) }
|
210
|
-
options[:class] = "menu-items"
|
211
|
-
options[:id] = "api_menu"
|
212
|
-
elsif obj.type == "section"
|
213
|
-
options[:class] = "menu-section"
|
214
|
-
end
|
215
|
-
list_items.empty? ? '' : content_tag(:ul, list_items.join("\n"), options)
|
216
|
-
end
|
217
|
-
|
218
|
-
def menu_item(obj, options = {})
|
219
|
-
options = options.dup
|
220
|
-
options[:class] = class_names_for(obj, options)
|
221
|
-
content_tag(:div, auto_link(obj, options), :class => 'menu-item')
|
222
|
-
end
|
223
|
-
|
224
|
-
def leaf_submenu(obj)
|
225
|
-
items = []
|
226
|
-
if obj.respond_to?(:constructor) && obj.constructor
|
227
|
-
items << content_tag(:li, menu_item(obj.constructor, :name => :short))
|
228
|
-
end
|
229
|
-
LEAVES.each do |prop|
|
230
|
-
if obj.respond_to?(prop)
|
231
|
-
obj.send(prop).sort!.map do |item|
|
232
|
-
items << content_tag(:li, menu_item(item, :name => :short))
|
233
|
-
end
|
234
|
-
end
|
235
|
-
end
|
236
|
-
content_tag(:ul, items.join("\n"))
|
237
|
-
end
|
238
|
-
|
239
|
-
def class_names_for(obj, options = {})
|
240
|
-
classes = []
|
241
|
-
classes << obj.type.gsub(/\s+/, '-')
|
242
|
-
classes << "deprecated" if obj.deprecated?
|
243
|
-
if doc_instance
|
244
|
-
if obj == doc_instance
|
245
|
-
classes << "current"
|
246
|
-
elsif obj.ancestor_of?(doc_instance)
|
247
|
-
classes << "current-parent"
|
248
|
-
end
|
249
|
-
end
|
250
|
-
classes.join(' ')
|
251
|
-
end
|
252
|
-
end
|
253
|
-
end
|
254
|
-
end
|
255
|
-
end
|
256
|
-
end
|
@@ -1,71 +0,0 @@
|
|
1
|
-
module PDoc
|
2
|
-
module Generators
|
3
|
-
module Html
|
4
|
-
class Page
|
5
|
-
|
6
|
-
include Helpers::BaseHelper
|
7
|
-
include Helpers::LinkHelper
|
8
|
-
|
9
|
-
def initialize(template, layout, variables = {})
|
10
|
-
@template = template
|
11
|
-
@layout = layout
|
12
|
-
assign_variables(variables)
|
13
|
-
end
|
14
|
-
|
15
|
-
# Renders the page as a string using the assigned layout.
|
16
|
-
def render
|
17
|
-
if @layout
|
18
|
-
@content_for_layout = Template.new(@template, @templates_directory).result(binding)
|
19
|
-
Template.new(@layout, @templates_directory).result(binding)
|
20
|
-
else
|
21
|
-
Template.new(@template, @templates_directory).result(binding)
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
# Creates a new file and renders the page to it
|
26
|
-
# using the assigned layout.
|
27
|
-
def render_to_file(filename)
|
28
|
-
filename ||= ""
|
29
|
-
FileUtils.mkdir_p(File.dirname(filename))
|
30
|
-
File.open(filename, "w+") { |f| f << render }
|
31
|
-
end
|
32
|
-
|
33
|
-
def include(path, options = {})
|
34
|
-
r = ''
|
35
|
-
options.each { |k, v| r << "#{k.to_s} = options[:#{k}];" }
|
36
|
-
eval(r)
|
37
|
-
|
38
|
-
if options[:collection]
|
39
|
-
options[:collection].map { |object| Template.new(path, @templates_directory).result(binding) }.join("\n")
|
40
|
-
else
|
41
|
-
Template.new(path, @templates_directory).result(binding)
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
private
|
46
|
-
def assign_variables(variables)
|
47
|
-
variables.each { |key, value| instance_variable_set("@#{key}", value) }
|
48
|
-
end
|
49
|
-
end
|
50
|
-
|
51
|
-
class DocPage < Page
|
52
|
-
include Helpers::LinkHelper, Helpers::CodeHelper, Helpers::MenuHelper
|
53
|
-
|
54
|
-
attr_reader :doc_instance, :depth, :root
|
55
|
-
|
56
|
-
def initialize(template, layout = "layout", variables = {})
|
57
|
-
if layout.is_a?(Hash)
|
58
|
-
variables = layout
|
59
|
-
layout = "layout"
|
60
|
-
end
|
61
|
-
super(template, layout, variables)
|
62
|
-
end
|
63
|
-
|
64
|
-
def htmlize(markdown)
|
65
|
-
super(auto_link_content(markdown))
|
66
|
-
end
|
67
|
-
end
|
68
|
-
|
69
|
-
end
|
70
|
-
end
|
71
|
-
end
|
@@ -1,41 +0,0 @@
|
|
1
|
-
module PDoc
|
2
|
-
module Generators
|
3
|
-
module Html
|
4
|
-
class SyntaxHighlighter
|
5
|
-
CODE_BLOCK_REGEXP = /(?:\n\n|\A)(?:\s{4,}lang(?:uage)?:\s*(\w+)\s*\n)?((?:\s{4}.*\n*)+)(^\s{0,3}\S|\z)?/
|
6
|
-
|
7
|
-
attr_reader :highlighter
|
8
|
-
|
9
|
-
def initialize(h = nil)
|
10
|
-
@highlighter = h.nil? ? :none : h.to_sym
|
11
|
-
end
|
12
|
-
|
13
|
-
def parse(input)
|
14
|
-
input.gsub(CODE_BLOCK_REGEXP) do |block|
|
15
|
-
language, codeblock, remainder = $1, $2, $3
|
16
|
-
codeblock = codeblock.gsub(/^\s{4}/, '').rstrip
|
17
|
-
"\n\n#{highlight_block(codeblock, language)}\n#{remainder}"
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
def highlight_block(code, language)
|
22
|
-
language = :javascript if language.nil?
|
23
|
-
case highlighter.to_sym
|
24
|
-
when :none
|
25
|
-
require 'cgi'
|
26
|
-
code = CGI.escapeHTML(code)
|
27
|
-
"<pre><code class=\"#{language}\">#{code}</code></pre>"
|
28
|
-
when :coderay
|
29
|
-
require 'coderay'
|
30
|
-
CodeRay.scan(code, language).div
|
31
|
-
when :pygments
|
32
|
-
require 'albino'
|
33
|
-
Albino.new(code, language).colorize
|
34
|
-
else
|
35
|
-
raise "Requested unsupported syntax highlighter: #{highlighter}"
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
@@ -1,37 +0,0 @@
|
|
1
|
-
begin
|
2
|
-
require 'erubis'
|
3
|
-
rescue LoadError
|
4
|
-
end
|
5
|
-
|
6
|
-
module PDoc
|
7
|
-
module Generators
|
8
|
-
module Html
|
9
|
-
class Template
|
10
|
-
def initialize(file_name = "layout.erb", templates_directory = nil)
|
11
|
-
@file_name = file_name
|
12
|
-
@templates_directory = templates_directory
|
13
|
-
@template = create_template(IO.read(file_path))
|
14
|
-
end
|
15
|
-
|
16
|
-
def result(binding)
|
17
|
-
@template.result(binding)
|
18
|
-
end
|
19
|
-
|
20
|
-
private
|
21
|
-
def file_path
|
22
|
-
@file_name << '.erb' unless @file_name =~ /\.erb$/
|
23
|
-
path = File.join(@templates_directory, @file_name.split("/"))
|
24
|
-
File.expand_path(path, DIR)
|
25
|
-
end
|
26
|
-
|
27
|
-
def create_template(input)
|
28
|
-
if defined?(Erubis)
|
29
|
-
Erubis::Eruby.new(input)
|
30
|
-
else
|
31
|
-
ERB.new(input, nil, '%')
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|