rdoc 3.1 → 6.3.3
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of rdoc might be problematic. Click here for more details.
- checksums.yaml +7 -0
- data/CONTRIBUTING.rdoc +220 -0
- data/CVE-2013-0256.rdoc +49 -0
- data/ExampleMarkdown.md +37 -0
- data/ExampleRDoc.rdoc +208 -0
- data/Gemfile +12 -0
- data/History.rdoc +1666 -0
- data/LEGAL.rdoc +50 -0
- data/LICENSE.rdoc +57 -0
- data/README.rdoc +129 -0
- data/RI.rdoc +57 -0
- data/Rakefile +84 -81
- data/TODO.rdoc +59 -0
- data/bin/console +7 -0
- data/bin/setup +6 -0
- data/{bin → exe}/rdoc +11 -2
- data/exe/ri +12 -0
- data/lib/rdoc/alias.rb +1 -2
- data/lib/rdoc/anon_class.rb +3 -2
- data/lib/rdoc/any_method.rb +234 -40
- data/lib/rdoc/attr.rb +79 -11
- data/lib/rdoc/class_module.rb +443 -71
- data/lib/rdoc/code_object.rb +216 -20
- data/lib/rdoc/code_objects.rb +4 -21
- data/lib/rdoc/comment.rb +250 -0
- data/lib/rdoc/constant.rb +110 -9
- data/lib/rdoc/context/section.rb +232 -0
- data/lib/rdoc/context.rb +392 -172
- data/lib/rdoc/cross_reference.rb +202 -0
- data/lib/rdoc/encoding.rb +83 -28
- data/lib/rdoc/erb_partial.rb +19 -0
- data/lib/rdoc/erbio.rb +8 -3
- data/lib/rdoc/extend.rb +10 -0
- data/lib/rdoc/generator/darkfish.rb +507 -84
- data/lib/rdoc/generator/json_index.rb +300 -0
- data/lib/rdoc/generator/markup.rb +27 -74
- data/lib/rdoc/generator/pot/message_extractor.rb +68 -0
- data/lib/rdoc/generator/pot/po.rb +84 -0
- data/lib/rdoc/generator/pot/po_entry.rb +141 -0
- data/lib/rdoc/generator/pot.rb +98 -0
- data/lib/rdoc/generator/ri.rb +8 -62
- data/lib/rdoc/generator/template/darkfish/_footer.rhtml +5 -0
- data/lib/rdoc/generator/template/darkfish/_head.rhtml +22 -0
- data/lib/rdoc/generator/template/darkfish/_sidebar_VCS_info.rhtml +19 -0
- data/lib/rdoc/generator/template/darkfish/_sidebar_classes.rhtml +9 -0
- data/lib/rdoc/generator/template/darkfish/_sidebar_extends.rhtml +15 -0
- data/lib/rdoc/generator/template/darkfish/_sidebar_in_files.rhtml +9 -0
- data/lib/rdoc/generator/template/darkfish/_sidebar_includes.rhtml +15 -0
- data/lib/rdoc/generator/template/darkfish/_sidebar_installed.rhtml +15 -0
- data/lib/rdoc/generator/template/darkfish/_sidebar_methods.rhtml +12 -0
- data/lib/rdoc/generator/template/darkfish/_sidebar_navigation.rhtml +11 -0
- data/lib/rdoc/generator/template/darkfish/_sidebar_pages.rhtml +12 -0
- data/lib/rdoc/generator/template/darkfish/_sidebar_parent.rhtml +11 -0
- data/lib/rdoc/generator/template/darkfish/_sidebar_search.rhtml +14 -0
- data/lib/rdoc/generator/template/darkfish/_sidebar_sections.rhtml +11 -0
- data/lib/rdoc/generator/template/darkfish/_sidebar_table_of_contents.rhtml +18 -0
- data/lib/rdoc/generator/template/darkfish/class.rhtml +172 -0
- data/lib/rdoc/generator/template/darkfish/css/fonts.css +167 -0
- data/lib/rdoc/generator/template/darkfish/css/rdoc.css +639 -0
- data/lib/rdoc/generator/template/darkfish/fonts/Lato-Light.ttf +0 -0
- data/lib/rdoc/generator/template/darkfish/fonts/Lato-LightItalic.ttf +0 -0
- data/lib/rdoc/generator/template/darkfish/fonts/Lato-Regular.ttf +0 -0
- data/lib/rdoc/generator/template/darkfish/fonts/Lato-RegularItalic.ttf +0 -0
- data/lib/rdoc/generator/template/darkfish/fonts/SourceCodePro-Bold.ttf +0 -0
- data/lib/rdoc/generator/template/darkfish/fonts/SourceCodePro-Regular.ttf +0 -0
- data/lib/rdoc/generator/template/darkfish/images/add.png +0 -0
- data/lib/rdoc/generator/template/darkfish/images/arrow_up.png +0 -0
- data/lib/rdoc/generator/template/darkfish/images/delete.png +0 -0
- data/lib/rdoc/generator/template/darkfish/images/tag_blue.png +0 -0
- data/lib/rdoc/generator/template/darkfish/images/transparent.png +0 -0
- data/lib/rdoc/generator/template/darkfish/index.rhtml +18 -60
- data/lib/rdoc/generator/template/darkfish/js/darkfish.js +51 -83
- data/lib/rdoc/generator/template/darkfish/js/search.js +110 -0
- data/lib/rdoc/generator/template/darkfish/page.rhtml +18 -0
- data/lib/rdoc/generator/template/darkfish/servlet_not_found.rhtml +18 -0
- data/lib/rdoc/generator/template/darkfish/servlet_root.rhtml +62 -0
- data/lib/rdoc/generator/template/darkfish/table_of_contents.rhtml +58 -0
- data/lib/rdoc/generator/template/json_index/.document +1 -0
- data/lib/rdoc/generator/template/json_index/js/navigation.js +105 -0
- data/lib/rdoc/generator/template/json_index/js/searcher.js +229 -0
- data/lib/rdoc/generator.rb +24 -13
- data/lib/rdoc/ghost_method.rb +1 -2
- data/lib/rdoc/i18n/locale.rb +102 -0
- data/lib/rdoc/i18n/text.rb +126 -0
- data/lib/rdoc/i18n.rb +10 -0
- data/lib/rdoc/include.rb +5 -95
- data/lib/rdoc/known_classes.rb +5 -2
- data/lib/rdoc/markdown/entities.rb +2132 -0
- data/lib/rdoc/markdown/literals.kpeg +23 -0
- data/lib/rdoc/markdown/literals.rb +416 -0
- data/lib/rdoc/markdown.kpeg +1237 -0
- data/lib/rdoc/markdown.rb +16684 -0
- data/lib/rdoc/markup/attr_changer.rb +23 -0
- data/lib/rdoc/markup/attr_span.rb +36 -0
- data/lib/rdoc/markup/attribute_manager.rb +135 -62
- data/lib/rdoc/markup/attributes.rb +71 -0
- data/lib/rdoc/markup/blank_line.rb +1 -0
- data/lib/rdoc/markup/block_quote.rb +15 -0
- data/lib/rdoc/markup/document.rb +96 -9
- data/lib/rdoc/markup/formatter.rb +138 -25
- data/lib/rdoc/markup/hard_break.rb +32 -0
- data/lib/rdoc/markup/heading.rb +61 -2
- data/lib/rdoc/markup/include.rb +43 -0
- data/lib/rdoc/markup/indented_paragraph.rb +48 -0
- data/lib/rdoc/markup/list.rb +25 -4
- data/lib/rdoc/markup/list_item.rb +18 -4
- data/lib/rdoc/markup/paragraph.rb +15 -0
- data/lib/rdoc/markup/parser.rb +180 -88
- data/lib/rdoc/markup/pre_process.rb +183 -38
- data/lib/rdoc/markup/raw.rb +6 -5
- data/lib/rdoc/markup/regexp_handling.rb +41 -0
- data/lib/rdoc/markup/rule.rb +1 -0
- data/lib/rdoc/markup/table.rb +47 -0
- data/lib/rdoc/markup/to_ansi.rb +17 -7
- data/lib/rdoc/markup/to_bs.rb +5 -8
- data/lib/rdoc/markup/to_html.rb +238 -137
- data/lib/rdoc/markup/to_html_crossref.rb +125 -152
- data/lib/rdoc/markup/to_html_snippet.rb +285 -0
- data/lib/rdoc/markup/to_joined_paragraph.rb +47 -0
- data/lib/rdoc/markup/to_label.rb +75 -0
- data/lib/rdoc/markup/to_markdown.rb +192 -0
- data/lib/rdoc/markup/to_rdoc.rb +85 -15
- data/lib/rdoc/markup/to_table_of_contents.rb +89 -0
- data/lib/rdoc/markup/to_test.rb +2 -4
- data/lib/rdoc/markup/to_tt_only.rb +121 -0
- data/lib/rdoc/markup/verbatim.rb +39 -0
- data/lib/rdoc/markup.rb +388 -110
- data/lib/rdoc/meta_method.rb +1 -2
- data/lib/rdoc/method_attr.rb +87 -21
- data/lib/rdoc/mixin.rb +121 -0
- data/lib/rdoc/normal_class.rb +39 -10
- data/lib/rdoc/normal_module.rb +22 -7
- data/lib/rdoc/options.rb +613 -73
- data/lib/rdoc/parser/c.rb +621 -287
- data/lib/rdoc/parser/changelog.rb +335 -0
- data/lib/rdoc/parser/markdown.rb +24 -0
- data/lib/rdoc/parser/rd.rb +23 -0
- data/lib/rdoc/parser/ripper_state_lex.rb +590 -0
- data/lib/rdoc/parser/ruby.rb +1368 -762
- data/lib/rdoc/parser/ruby_tools.rb +42 -35
- data/lib/rdoc/parser/simple.rb +23 -11
- data/lib/rdoc/parser/text.rb +12 -0
- data/lib/rdoc/parser.rb +162 -89
- data/lib/rdoc/rd/block_parser.rb +1056 -0
- data/lib/rdoc/rd/block_parser.ry +639 -0
- data/lib/rdoc/rd/inline.rb +72 -0
- data/lib/rdoc/rd/inline_parser.rb +1208 -0
- data/lib/rdoc/rd/inline_parser.ry +593 -0
- data/lib/rdoc/rd.rb +100 -0
- data/lib/rdoc/rdoc.rb +208 -115
- data/lib/rdoc/require.rb +1 -2
- data/lib/rdoc/ri/driver.rb +734 -239
- data/lib/rdoc/ri/formatter.rb +1 -0
- data/lib/rdoc/ri/paths.rb +91 -48
- data/lib/rdoc/ri/store.rb +3 -261
- data/lib/rdoc/ri/task.rb +71 -0
- data/lib/rdoc/ri.rb +5 -2
- data/lib/rdoc/rubygems_hook.rb +246 -0
- data/lib/rdoc/servlet.rb +451 -0
- data/lib/rdoc/single_class.rb +14 -2
- data/lib/rdoc/stats/normal.rb +19 -12
- data/lib/rdoc/stats/quiet.rb +1 -0
- data/lib/rdoc/stats/verbose.rb +1 -0
- data/lib/rdoc/stats.rb +262 -104
- data/lib/rdoc/store.rb +979 -0
- data/lib/rdoc/task.rb +84 -44
- data/lib/rdoc/text.rb +117 -72
- data/lib/rdoc/token_stream.rb +73 -4
- data/lib/rdoc/tom_doc.rb +263 -0
- data/lib/rdoc/top_level.rb +111 -261
- data/lib/rdoc/version.rb +8 -0
- data/lib/rdoc.rb +127 -64
- data/man/ri.1 +247 -0
- data/rdoc.gemspec +249 -0
- metadata +171 -291
- data/.autotest +0 -16
- data/.document +0 -5
- data/History.txt +0 -594
- data/LICENSE.txt +0 -57
- data/Manifest.txt +0 -158
- data/README.txt +0 -45
- data/RI.txt +0 -58
- data/bin/ri +0 -5
- data/lib/rdoc/gauntlet.rb +0 -52
- data/lib/rdoc/generator/template/darkfish/classpage.rhtml +0 -296
- data/lib/rdoc/generator/template/darkfish/filepage.rhtml +0 -124
- data/lib/rdoc/generator/template/darkfish/js/jquery.js +0 -32
- data/lib/rdoc/generator/template/darkfish/js/quicksearch.js +0 -114
- data/lib/rdoc/generator/template/darkfish/js/thickbox-compressed.js +0 -10
- data/lib/rdoc/generator/template/darkfish/rdoc.css +0 -706
- data/lib/rdoc/markup/formatter_test_case.rb +0 -689
- data/lib/rdoc/markup/inline.rb +0 -137
- data/lib/rdoc/markup/text_formatter_test_case.rb +0 -116
- data/lib/rdoc/ruby_lex.rb +0 -1291
- data/lib/rdoc/ruby_token.rb +0 -416
- data/test/README +0 -1
- data/test/binary.dat +0 -0
- data/test/hidden.zip.txt +0 -1
- data/test/test.ja.rdoc +0 -10
- data/test/test.ja.txt +0 -8
- data/test/test.txt +0 -1
- data/test/test_attribute_manager.rb +0 -120
- data/test/test_rdoc_alias.rb +0 -13
- data/test/test_rdoc_any_method.rb +0 -126
- data/test/test_rdoc_attr.rb +0 -61
- data/test/test_rdoc_class_module.rb +0 -233
- data/test/test_rdoc_code_object.rb +0 -165
- data/test/test_rdoc_constant.rb +0 -15
- data/test/test_rdoc_context.rb +0 -370
- data/test/test_rdoc_encoding.rb +0 -166
- data/test/test_rdoc_generator_darkfish.rb +0 -119
- data/test/test_rdoc_generator_ri.rb +0 -76
- data/test/test_rdoc_include.rb +0 -96
- data/test/test_rdoc_markup.rb +0 -37
- data/test/test_rdoc_markup_attribute_manager.rb +0 -240
- data/test/test_rdoc_markup_document.rb +0 -51
- data/test/test_rdoc_markup_paragraph.rb +0 -9
- data/test/test_rdoc_markup_parser.rb +0 -1395
- data/test/test_rdoc_markup_pre_process.rb +0 -185
- data/test/test_rdoc_markup_raw.rb +0 -27
- data/test/test_rdoc_markup_to_ansi.rb +0 -328
- data/test/test_rdoc_markup_to_bs.rb +0 -341
- data/test/test_rdoc_markup_to_html.rb +0 -335
- data/test/test_rdoc_markup_to_html_crossref.rb +0 -169
- data/test/test_rdoc_markup_to_rdoc.rb +0 -327
- data/test/test_rdoc_method_attr.rb +0 -122
- data/test/test_rdoc_normal_class.rb +0 -17
- data/test/test_rdoc_normal_module.rb +0 -31
- data/test/test_rdoc_options.rb +0 -342
- data/test/test_rdoc_parser.rb +0 -83
- data/test/test_rdoc_parser_c.rb +0 -912
- data/test/test_rdoc_parser_ruby.rb +0 -1754
- data/test/test_rdoc_parser_simple.rb +0 -99
- data/test/test_rdoc_rdoc.rb +0 -164
- data/test/test_rdoc_require.rb +0 -25
- data/test/test_rdoc_ri_driver.rb +0 -846
- data/test/test_rdoc_ri_paths.rb +0 -43
- data/test/test_rdoc_ri_store.rb +0 -352
- data/test/test_rdoc_ruby_lex.rb +0 -23
- data/test/test_rdoc_stats.rb +0 -38
- data/test/test_rdoc_task.rb +0 -92
- data/test/test_rdoc_text.rb +0 -251
- data/test/test_rdoc_top_level.rb +0 -120
- data/test/xref_data.rb +0 -62
- data/test/xref_test_case.rb +0 -61
- data.tar.gz.sig +0 -3
- metadata.gz.sig +0 -0
data/lib/rdoc/markup/to_html.rb
CHANGED
@@ -1,25 +1,25 @@
|
|
1
|
-
|
2
|
-
require 'rdoc/markup/inline'
|
3
|
-
|
1
|
+
# frozen_string_literal: true
|
4
2
|
require 'cgi'
|
5
3
|
|
6
4
|
##
|
7
|
-
# Outputs RDoc markup as HTML
|
5
|
+
# Outputs RDoc markup as HTML.
|
8
6
|
|
9
7
|
class RDoc::Markup::ToHtml < RDoc::Markup::Formatter
|
10
8
|
|
11
9
|
include RDoc::Text
|
12
10
|
|
11
|
+
# :section: Utilities
|
12
|
+
|
13
13
|
##
|
14
14
|
# Maps RDoc::Markup::Parser::LIST_TOKENS types to HTML tags
|
15
15
|
|
16
16
|
LIST_TYPE_TO_HTML = {
|
17
|
-
:BULLET => ['<ul>',
|
18
|
-
:LABEL => ['<dl>',
|
19
|
-
:LALPHA => ['<ol style="
|
20
|
-
:NOTE => ['<
|
21
|
-
:NUMBER => ['<ol>',
|
22
|
-
:UALPHA => ['<ol style="
|
17
|
+
:BULLET => ['<ul>', '</ul>'],
|
18
|
+
:LABEL => ['<dl class="rdoc-list label-list">', '</dl>'],
|
19
|
+
:LALPHA => ['<ol style="list-style-type: lower-alpha">', '</ol>'],
|
20
|
+
:NOTE => ['<dl class="rdoc-list note-list">', '</dl>'],
|
21
|
+
:NUMBER => ['<ol>', '</ol>'],
|
22
|
+
:UALPHA => ['<ol style="list-style-type: upper-alpha">', '</ol>'],
|
23
23
|
}
|
24
24
|
|
25
25
|
attr_reader :res # :nodoc:
|
@@ -27,157 +27,141 @@ class RDoc::Markup::ToHtml < RDoc::Markup::Formatter
|
|
27
27
|
attr_reader :list # :nodoc:
|
28
28
|
|
29
29
|
##
|
30
|
-
#
|
30
|
+
# The RDoc::CodeObject HTML is being generated for. This is used to
|
31
|
+
# generate namespaced URI fragments
|
31
32
|
|
32
|
-
attr_accessor :
|
33
|
+
attr_accessor :code_object
|
33
34
|
|
34
35
|
##
|
35
|
-
#
|
36
|
-
|
37
|
-
def self.gen_relative_url(path, target)
|
38
|
-
from = File.dirname path
|
39
|
-
to, to_file = File.split target
|
40
|
-
|
41
|
-
from = from.split "/"
|
42
|
-
to = to.split "/"
|
43
|
-
|
44
|
-
from.delete '.'
|
45
|
-
to.delete '.'
|
36
|
+
# Path to this document for relative links
|
46
37
|
|
47
|
-
|
48
|
-
from.shift
|
49
|
-
to.shift
|
50
|
-
end
|
38
|
+
attr_accessor :from_path
|
51
39
|
|
52
|
-
|
53
|
-
from.concat to
|
54
|
-
from << to_file
|
55
|
-
File.join(*from)
|
56
|
-
end
|
40
|
+
# :section:
|
57
41
|
|
58
42
|
##
|
59
43
|
# Creates a new formatter that will output HTML
|
60
44
|
|
61
|
-
def initialize
|
45
|
+
def initialize options, markup = nil
|
62
46
|
super
|
63
47
|
|
64
|
-
@
|
48
|
+
@code_object = nil
|
49
|
+
@from_path = ''
|
65
50
|
@in_list_entry = nil
|
66
51
|
@list = nil
|
67
|
-
@
|
68
|
-
|
69
|
-
# external hyperlinks
|
70
|
-
@markup.add_special(/((link:|https?:|mailto:|ftp:|www\.)\S+\w)/, :HYPERLINK)
|
52
|
+
@th = nil
|
53
|
+
@hard_break = "<br>\n"
|
71
54
|
|
72
|
-
|
73
|
-
@markup.add_special(/(((\{.*?\})|\b\S+?)\[\S+?\.\S+?\])/, :TIDYLINK)
|
55
|
+
init_regexp_handlings
|
74
56
|
|
75
57
|
init_tags
|
76
58
|
end
|
77
59
|
|
60
|
+
# :section: Regexp Handling
|
61
|
+
#
|
62
|
+
# These methods are used by regexp handling markup added by RDoc::Markup#add_regexp_handling.
|
63
|
+
|
78
64
|
##
|
79
|
-
#
|
65
|
+
# Adds regexp handlings.
|
80
66
|
|
81
|
-
def
|
82
|
-
|
83
|
-
|
84
|
-
|
67
|
+
def init_regexp_handlings
|
68
|
+
# external links
|
69
|
+
@markup.add_regexp_handling(/(?:link:|https?:|mailto:|ftp:|irc:|www\.)\S+\w/,
|
70
|
+
:HYPERLINK)
|
71
|
+
init_link_notation_regexp_handlings
|
85
72
|
end
|
86
73
|
|
87
74
|
##
|
88
|
-
#
|
89
|
-
# cases for img: and link: described under handle_special_HYPERLINK
|
90
|
-
|
91
|
-
def gen_url(url, text)
|
92
|
-
if url =~ /([A-Za-z]+):(.*)/ then
|
93
|
-
type = $1
|
94
|
-
path = $2
|
95
|
-
else
|
96
|
-
type = "http"
|
97
|
-
path = url
|
98
|
-
url = "http://#{url}"
|
99
|
-
end
|
75
|
+
# Adds regexp handlings about link notations.
|
100
76
|
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
self.class.gen_relative_url @from_path, path
|
106
|
-
end
|
107
|
-
end
|
77
|
+
def init_link_notation_regexp_handlings
|
78
|
+
add_regexp_handling_RDOCLINK
|
79
|
+
add_regexp_handling_TIDYLINK
|
80
|
+
end
|
108
81
|
|
109
|
-
|
110
|
-
|
111
|
-
|
82
|
+
def handle_RDOCLINK url # :nodoc:
|
83
|
+
case url
|
84
|
+
when /^rdoc-ref:/
|
85
|
+
$'
|
86
|
+
when /^rdoc-label:/
|
87
|
+
text = $'
|
88
|
+
|
89
|
+
text = case text
|
90
|
+
when /\Alabel-/ then $'
|
91
|
+
when /\Afootmark-/ then $'
|
92
|
+
when /\Afoottext-/ then $'
|
93
|
+
else text
|
94
|
+
end
|
95
|
+
|
96
|
+
gen_url url, text
|
97
|
+
when /^rdoc-image:/
|
98
|
+
"<img src=\"#{$'}\">"
|
112
99
|
else
|
113
|
-
|
100
|
+
url =~ /\Ardoc-[a-z]+:/
|
101
|
+
|
102
|
+
$'
|
114
103
|
end
|
115
104
|
end
|
116
105
|
|
117
|
-
|
106
|
+
##
|
107
|
+
# +target+ is a <code><br></code>
|
108
|
+
|
109
|
+
def handle_regexp_HARD_BREAK target
|
110
|
+
'<br>'
|
111
|
+
end
|
118
112
|
|
119
113
|
##
|
120
|
-
#
|
121
|
-
#
|
122
|
-
#
|
123
|
-
#
|
124
|
-
#
|
125
|
-
#
|
114
|
+
# +target+ is a potential link. The following schemes are handled:
|
115
|
+
#
|
116
|
+
# <tt>mailto:</tt>::
|
117
|
+
# Inserted as-is.
|
118
|
+
# <tt>http:</tt>::
|
119
|
+
# Links are checked to see if they reference an image. If so, that image
|
120
|
+
# gets inserted using an <tt><img></tt> tag. Otherwise a conventional
|
121
|
+
# <tt><a href></tt> is used.
|
122
|
+
# <tt>link:</tt>::
|
123
|
+
# Reference to a local file relative to the output directory.
|
124
|
+
|
125
|
+
def handle_regexp_HYPERLINK(target)
|
126
|
+
url = target.text
|
126
127
|
|
127
|
-
def handle_special_HYPERLINK(special)
|
128
|
-
url = special.text
|
129
128
|
gen_url url, url
|
130
129
|
end
|
131
130
|
|
132
131
|
##
|
133
|
-
#
|
134
|
-
#
|
132
|
+
# +target+ is an rdoc-schemed link that will be converted into a hyperlink.
|
133
|
+
#
|
134
|
+
# For the +rdoc-ref+ scheme the named reference will be returned without
|
135
|
+
# creating a link.
|
136
|
+
#
|
137
|
+
# For the +rdoc-label+ scheme the footnote and label prefixes are stripped
|
138
|
+
# when creating a link. All other contents will be linked verbatim.
|
139
|
+
|
140
|
+
def handle_regexp_RDOCLINK target
|
141
|
+
handle_RDOCLINK target.text
|
142
|
+
end
|
143
|
+
|
144
|
+
##
|
145
|
+
# This +target+ is a link where the label is different from the URL
|
146
|
+
# <tt>label[url]</tt> or <tt>{long label}[url]</tt>
|
135
147
|
|
136
|
-
def
|
137
|
-
text =
|
148
|
+
def handle_regexp_TIDYLINK(target)
|
149
|
+
text = target.text
|
138
150
|
|
139
|
-
return text unless
|
151
|
+
return text unless
|
152
|
+
text =~ /^\{(.*)\}\[(.*?)\]$/ or text =~ /^(\S+)\[(.*?)\]$/
|
140
153
|
|
141
154
|
label = $1
|
142
155
|
url = $2
|
143
|
-
gen_url url, label
|
144
|
-
end
|
145
156
|
|
146
|
-
|
157
|
+
label = handle_RDOCLINK label if /^rdoc-image:/ =~ label
|
147
158
|
|
148
|
-
|
149
|
-
# Wraps +txt+ to +line_len+
|
150
|
-
|
151
|
-
def wrap(txt, line_len = 76)
|
152
|
-
res = []
|
153
|
-
sp = 0
|
154
|
-
ep = txt.length
|
155
|
-
|
156
|
-
while sp < ep
|
157
|
-
# scan back for a space
|
158
|
-
p = sp + line_len - 1
|
159
|
-
if p >= ep
|
160
|
-
p = ep
|
161
|
-
else
|
162
|
-
while p > sp and txt[p] != ?\s
|
163
|
-
p -= 1
|
164
|
-
end
|
165
|
-
if p <= sp
|
166
|
-
p = sp + line_len
|
167
|
-
while p < ep and txt[p] != ?\s
|
168
|
-
p += 1
|
169
|
-
end
|
170
|
-
end
|
171
|
-
end
|
172
|
-
res << txt[sp...p] << "\n"
|
173
|
-
sp = p
|
174
|
-
sp += 1 while sp < ep and txt[sp] == ?\s
|
175
|
-
end
|
176
|
-
|
177
|
-
res.join.strip
|
159
|
+
gen_url url, label
|
178
160
|
end
|
179
161
|
|
180
162
|
# :section: Visitor
|
163
|
+
#
|
164
|
+
# These methods implement the HTML visitor.
|
181
165
|
|
182
166
|
##
|
183
167
|
# Prepares the visitor for HTML generation
|
@@ -195,31 +179,65 @@ class RDoc::Markup::ToHtml < RDoc::Markup::Formatter
|
|
195
179
|
@res.join
|
196
180
|
end
|
197
181
|
|
182
|
+
##
|
183
|
+
# Adds +block_quote+ to the output
|
184
|
+
|
185
|
+
def accept_block_quote block_quote
|
186
|
+
@res << "\n<blockquote>"
|
187
|
+
|
188
|
+
block_quote.parts.each do |part|
|
189
|
+
part.accept self
|
190
|
+
end
|
191
|
+
|
192
|
+
@res << "</blockquote>\n"
|
193
|
+
end
|
194
|
+
|
198
195
|
##
|
199
196
|
# Adds +paragraph+ to the output
|
200
197
|
|
201
|
-
def accept_paragraph
|
198
|
+
def accept_paragraph paragraph
|
202
199
|
@res << "\n<p>"
|
203
|
-
|
200
|
+
text = paragraph.text @hard_break
|
201
|
+
text = text.gsub(/\r?\n/, ' ')
|
202
|
+
@res << to_html(text)
|
204
203
|
@res << "</p>\n"
|
205
204
|
end
|
206
205
|
|
207
206
|
##
|
208
207
|
# Adds +verbatim+ to the output
|
209
208
|
|
210
|
-
def accept_verbatim
|
211
|
-
|
212
|
-
|
213
|
-
|
209
|
+
def accept_verbatim verbatim
|
210
|
+
text = verbatim.text.rstrip
|
211
|
+
|
212
|
+
klass = nil
|
213
|
+
|
214
|
+
content = if verbatim.ruby? or parseable? text then
|
215
|
+
begin
|
216
|
+
tokens = RDoc::Parser::RipperStateLex.parse text
|
217
|
+
klass = ' class="ruby"'
|
218
|
+
|
219
|
+
result = RDoc::TokenStream.to_html tokens
|
220
|
+
result = result + "\n" unless "\n" == result[-1]
|
221
|
+
result
|
222
|
+
rescue
|
223
|
+
CGI.escapeHTML text
|
224
|
+
end
|
225
|
+
else
|
226
|
+
CGI.escapeHTML text
|
227
|
+
end
|
228
|
+
|
229
|
+
if @options.pipe then
|
230
|
+
@res << "\n<pre><code>#{CGI.escapeHTML text}\n</code></pre>\n"
|
231
|
+
else
|
232
|
+
@res << "\n<pre#{klass}>#{content}</pre>\n"
|
233
|
+
end
|
214
234
|
end
|
215
235
|
|
216
236
|
##
|
217
237
|
# Adds +rule+ to the output
|
218
238
|
|
219
|
-
def accept_rule
|
220
|
-
|
221
|
-
size = 10 if size > 10
|
222
|
-
@res << "<hr style=\"height: #{size}px\">\n"
|
239
|
+
def accept_rule rule
|
240
|
+
@res << "<hr>\n"
|
223
241
|
end
|
224
242
|
|
225
243
|
##
|
@@ -268,12 +286,25 @@ class RDoc::Markup::ToHtml < RDoc::Markup::Formatter
|
|
268
286
|
end
|
269
287
|
|
270
288
|
##
|
271
|
-
# Adds +heading+ to the output
|
289
|
+
# Adds +heading+ to the output. The headings greater than 6 are trimmed to
|
290
|
+
# level 6.
|
291
|
+
|
292
|
+
def accept_heading heading
|
293
|
+
level = [6, heading.level].min
|
294
|
+
|
295
|
+
label = heading.label @code_object
|
272
296
|
|
273
|
-
|
274
|
-
|
297
|
+
@res << if @options.output_decoration
|
298
|
+
"\n<h#{level} id=\"#{label}\">"
|
299
|
+
else
|
300
|
+
"\n<h#{level}>"
|
301
|
+
end
|
275
302
|
@res << to_html(heading.text)
|
276
|
-
@
|
303
|
+
unless @options.pipe then
|
304
|
+
@res << "<span><a href=\"##{label}\">¶</a>"
|
305
|
+
@res << " <a href=\"#top\">↑</a></span>"
|
306
|
+
end
|
307
|
+
@res << "</h#{level}>\n"
|
277
308
|
end
|
278
309
|
|
279
310
|
##
|
@@ -284,12 +315,63 @@ class RDoc::Markup::ToHtml < RDoc::Markup::Formatter
|
|
284
315
|
end
|
285
316
|
|
286
317
|
##
|
287
|
-
#
|
318
|
+
# Adds +table+ to the output
|
319
|
+
|
320
|
+
def accept_table header, body, aligns
|
321
|
+
@res << "\n<table role=\"table\">\n<thead>\n<tr>\n"
|
322
|
+
header.zip(aligns) do |text, align|
|
323
|
+
@res << '<th'
|
324
|
+
@res << ' align="' << align << '"' if align
|
325
|
+
@res << '>' << CGI.escapeHTML(text) << "</th>\n"
|
326
|
+
end
|
327
|
+
@res << "</tr>\n</thead>\n<tbody>\n"
|
328
|
+
body.each do |row|
|
329
|
+
@res << "<tr>\n"
|
330
|
+
row.zip(aligns) do |text, align|
|
331
|
+
@res << '<td'
|
332
|
+
@res << ' align="' << align << '"' if align
|
333
|
+
@res << '>' << CGI.escapeHTML(text) << "</td>\n"
|
334
|
+
end
|
335
|
+
@res << "</tr>\n"
|
336
|
+
end
|
337
|
+
@res << "</tbody>\n</table>\n"
|
338
|
+
end
|
339
|
+
|
340
|
+
# :section: Utilities
|
341
|
+
|
342
|
+
##
|
343
|
+
# CGI-escapes +text+
|
288
344
|
|
289
345
|
def convert_string(text)
|
290
346
|
CGI.escapeHTML text
|
291
347
|
end
|
292
348
|
|
349
|
+
##
|
350
|
+
# Generate a link to +url+ with content +text+. Handles the special cases
|
351
|
+
# for img: and link: described under handle_regexp_HYPERLINK
|
352
|
+
|
353
|
+
def gen_url url, text
|
354
|
+
scheme, url, id = parse_url url
|
355
|
+
|
356
|
+
if %w[http https link].include?(scheme) and
|
357
|
+
url =~ /\.(gif|png|jpg|jpeg|bmp)$/ then
|
358
|
+
"<img src=\"#{url}\" />"
|
359
|
+
else
|
360
|
+
if scheme != 'link' and /\.(?:rb|rdoc|md)\z/i =~ url
|
361
|
+
url = url.sub(%r%\A([./]*)(.*)\z%) { "#$1#{$2.tr('.', '_')}.html" }
|
362
|
+
end
|
363
|
+
|
364
|
+
text = text.sub %r%^#{scheme}:/*%i, ''
|
365
|
+
text = text.sub %r%^[*\^](\d+)$%, '\1'
|
366
|
+
|
367
|
+
link = "<a#{id} href=\"#{url}\">#{text}</a>"
|
368
|
+
|
369
|
+
link = "<sup>#{link}</sup>" if /"foot/ =~ id
|
370
|
+
|
371
|
+
link
|
372
|
+
end
|
373
|
+
end
|
374
|
+
|
293
375
|
##
|
294
376
|
# Determines the HTML list element for +list_type+ and +open_tag+
|
295
377
|
|
@@ -299,6 +381,15 @@ class RDoc::Markup::ToHtml < RDoc::Markup::Formatter
|
|
299
381
|
tags[open_tag ? 0 : 1]
|
300
382
|
end
|
301
383
|
|
384
|
+
##
|
385
|
+
# Maps attributes to HTML tags
|
386
|
+
|
387
|
+
def init_tags
|
388
|
+
add_tag :BOLD, "<strong>", "</strong>"
|
389
|
+
add_tag :TT, "<code>", "</code>"
|
390
|
+
add_tag :EM, "<em>", "</em>"
|
391
|
+
end
|
392
|
+
|
302
393
|
##
|
303
394
|
# Returns the HTML tag for +list_type+, possible using a label from
|
304
395
|
# +list_item+
|
@@ -307,10 +398,10 @@ class RDoc::Markup::ToHtml < RDoc::Markup::Formatter
|
|
307
398
|
case list_type
|
308
399
|
when :BULLET, :LALPHA, :NUMBER, :UALPHA then
|
309
400
|
"<li>"
|
310
|
-
when :LABEL then
|
311
|
-
|
312
|
-
|
313
|
-
|
401
|
+
when :LABEL, :NOTE then
|
402
|
+
Array(list_item.label).map do |label|
|
403
|
+
"<dt>#{to_html label}\n"
|
404
|
+
end.join << "<dd>"
|
314
405
|
else
|
315
406
|
raise RDoc::Error, "Invalid list type: #{list_type.inspect}"
|
316
407
|
end
|
@@ -323,15 +414,25 @@ class RDoc::Markup::ToHtml < RDoc::Markup::Formatter
|
|
323
414
|
case list_type
|
324
415
|
when :BULLET, :LALPHA, :NUMBER, :UALPHA then
|
325
416
|
"</li>"
|
326
|
-
when :LABEL then
|
417
|
+
when :LABEL, :NOTE then
|
327
418
|
"</dd>"
|
328
|
-
when :NOTE then
|
329
|
-
"</td></tr>"
|
330
419
|
else
|
331
420
|
raise RDoc::Error, "Invalid list type: #{list_type.inspect}"
|
332
421
|
end
|
333
422
|
end
|
334
423
|
|
424
|
+
##
|
425
|
+
# Returns true if text is valid ruby syntax
|
426
|
+
|
427
|
+
def parseable? text
|
428
|
+
verbose, $VERBOSE = $VERBOSE, nil
|
429
|
+
eval("BEGIN {return true}\n#{text}")
|
430
|
+
rescue SyntaxError
|
431
|
+
false
|
432
|
+
ensure
|
433
|
+
$VERBOSE = verbose
|
434
|
+
end
|
435
|
+
|
335
436
|
##
|
336
437
|
# Converts +item+ to HTML using RDoc::Text#to_html
|
337
438
|
|