rdoc 6.12.0 → 6.14.0
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 +4 -4
- data/README.rdoc +3 -1
- data/lib/rdoc/code_object/alias.rb +2 -9
- data/lib/rdoc/code_object/any_method.rb +9 -14
- data/lib/rdoc/code_object/attr.rb +6 -9
- data/lib/rdoc/code_object/class_module.rb +40 -23
- data/lib/rdoc/code_object/constant.rb +5 -5
- data/lib/rdoc/code_object/context/section.rb +7 -7
- data/lib/rdoc/code_object/context.rb +23 -65
- data/lib/rdoc/code_object/method_attr.rb +8 -28
- data/lib/rdoc/code_object/mixin.rb +3 -3
- data/lib/rdoc/code_object/normal_class.rb +1 -1
- data/lib/rdoc/code_object/normal_module.rb +1 -1
- data/lib/rdoc/code_object/require.rb +1 -1
- data/lib/rdoc/code_object/single_class.rb +1 -1
- data/lib/rdoc/code_object/top_level.rb +12 -30
- data/lib/rdoc/code_object.rb +6 -37
- data/lib/rdoc/comment.rb +7 -10
- data/lib/rdoc/cross_reference.rb +3 -3
- data/lib/rdoc/encoding.rb +4 -4
- data/lib/rdoc/erb_partial.rb +1 -1
- data/lib/rdoc/erbio.rb +2 -2
- data/lib/rdoc/generator/darkfish.rb +97 -109
- data/lib/rdoc/generator/json_index.rb +4 -20
- data/lib/rdoc/generator/markup.rb +14 -2
- data/lib/rdoc/generator/pot/message_extractor.rb +6 -6
- data/lib/rdoc/generator/pot/po.rb +1 -1
- data/lib/rdoc/generator/pot/po_entry.rb +7 -7
- data/lib/rdoc/generator/pot.rb +1 -6
- data/lib/rdoc/generator/ri.rb +1 -1
- data/lib/rdoc/generator/template/darkfish/_head.rhtml +5 -0
- data/lib/rdoc/generator/template/darkfish/_sidebar_classes.rhtml +1 -30
- data/lib/rdoc/generator/template/darkfish/_sidebar_extends.rhtml +1 -1
- data/lib/rdoc/generator/template/darkfish/_sidebar_includes.rhtml +1 -1
- data/lib/rdoc/generator/template/darkfish/class.rhtml +15 -0
- data/lib/rdoc/generator/template/darkfish/css/rdoc.css +15 -0
- data/lib/rdoc/markdown.kpeg +7 -5
- data/lib/rdoc/markdown.rb +34 -21
- data/lib/rdoc/markup/attribute_manager.rb +5 -5
- data/lib/rdoc/markup/attributes.rb +3 -3
- data/lib/rdoc/markup/blank_line.rb +2 -2
- data/lib/rdoc/markup/block_quote.rb +1 -1
- data/lib/rdoc/markup/document.rb +8 -8
- data/lib/rdoc/markup/formatter.rb +12 -12
- data/lib/rdoc/markup/hard_break.rb +3 -3
- data/lib/rdoc/markup/heading.rb +11 -5
- data/lib/rdoc/markup/include.rb +3 -3
- data/lib/rdoc/markup/indented_paragraph.rb +3 -3
- data/lib/rdoc/markup/list.rb +4 -4
- data/lib/rdoc/markup/list_item.rb +4 -4
- data/lib/rdoc/markup/paragraph.rb +2 -2
- data/lib/rdoc/markup/parser.rb +11 -11
- data/lib/rdoc/markup/pre_process.rb +6 -6
- data/lib/rdoc/markup/raw.rb +5 -5
- data/lib/rdoc/markup/rule.rb +2 -2
- data/lib/rdoc/markup/table.rb +4 -4
- data/lib/rdoc/markup/to_ansi.rb +3 -3
- data/lib/rdoc/markup/to_bs.rb +6 -6
- data/lib/rdoc/markup/to_html.rb +26 -16
- data/lib/rdoc/markup/to_html_crossref.rb +5 -5
- data/lib/rdoc/markup/to_html_snippet.rb +17 -17
- data/lib/rdoc/markup/to_joined_paragraph.rb +1 -1
- data/lib/rdoc/markup/to_label.rb +5 -5
- data/lib/rdoc/markup/to_markdown.rb +12 -12
- data/lib/rdoc/markup/to_rdoc.rb +29 -28
- data/lib/rdoc/markup/to_table_of_contents.rb +3 -3
- data/lib/rdoc/markup/to_test.rb +1 -1
- data/lib/rdoc/markup/to_tt_only.rb +8 -8
- data/lib/rdoc/markup/verbatim.rb +3 -3
- data/lib/rdoc/markup.rb +3 -3
- data/lib/rdoc/options.rb +31 -12
- data/lib/rdoc/parser/c.rb +20 -23
- data/lib/rdoc/parser/changelog.rb +9 -9
- data/lib/rdoc/parser/prism_ruby.rb +9 -16
- data/lib/rdoc/parser/ruby.rb +50 -53
- data/lib/rdoc/parser/simple.rb +2 -2
- data/lib/rdoc/parser.rb +8 -8
- data/lib/rdoc/rd/inline.rb +4 -4
- data/lib/rdoc/rd.rb +1 -1
- data/lib/rdoc/rdoc.rb +11 -26
- data/lib/rdoc/ri/driver.rb +60 -52
- data/lib/rdoc/ri/paths.rb +2 -2
- data/lib/rdoc/ri/task.rb +1 -1
- data/lib/rdoc/rubygems_hook.rb +14 -17
- data/lib/rdoc/servlet.rb +23 -22
- data/lib/rdoc/stats/normal.rb +1 -1
- data/lib/rdoc/stats/quiet.rb +1 -1
- data/lib/rdoc/stats/verbose.rb +3 -3
- data/lib/rdoc/stats.rb +14 -14
- data/lib/rdoc/store.rb +39 -43
- data/lib/rdoc/task.rb +2 -2
- data/lib/rdoc/text.rb +13 -13
- data/lib/rdoc/token_stream.rb +1 -1
- data/lib/rdoc/tom_doc.rb +7 -7
- data/lib/rdoc/version.rb +1 -1
- data/man/ri.1 +2 -0
- metadata +17 -5
- data/lib/rdoc/generator/template/darkfish/_sidebar_VCS_info.rhtml +0 -19
- data/lib/rdoc/generator/template/darkfish/_sidebar_in_files.rhtml +0 -9
data/lib/rdoc/markup/heading.rb
CHANGED
@@ -27,7 +27,7 @@ RDoc::Markup::Heading =
|
|
27
27
|
|
28
28
|
@to_html = RDoc::Markup::ToHtml.new nil
|
29
29
|
|
30
|
-
def @to_html.handle_regexp_CROSSREF
|
30
|
+
def @to_html.handle_regexp_CROSSREF(target)
|
31
31
|
target.text.sub(/^\\/, '')
|
32
32
|
end
|
33
33
|
|
@@ -37,7 +37,7 @@ RDoc::Markup::Heading =
|
|
37
37
|
##
|
38
38
|
# Calls #accept_heading on +visitor+
|
39
39
|
|
40
|
-
def accept
|
40
|
+
def accept(visitor)
|
41
41
|
visitor.accept_heading self
|
42
42
|
end
|
43
43
|
|
@@ -52,7 +52,7 @@ RDoc::Markup::Heading =
|
|
52
52
|
# Creates a fully-qualified label which will include the label from
|
53
53
|
# +context+. This helps keep ids unique in HTML.
|
54
54
|
|
55
|
-
def label
|
55
|
+
def label(context = nil)
|
56
56
|
label = aref
|
57
57
|
|
58
58
|
label = [context.aref, label].compact.join '-' if
|
@@ -66,10 +66,16 @@ RDoc::Markup::Heading =
|
|
66
66
|
# element.
|
67
67
|
|
68
68
|
def plain_html
|
69
|
-
self.
|
69
|
+
text = self.text.dup
|
70
|
+
|
71
|
+
if matched = text.match(/rdoc-image:[^:]+:(.*)/)
|
72
|
+
text = matched[1]
|
73
|
+
end
|
74
|
+
|
75
|
+
self.class.to_html.to_html(text)
|
70
76
|
end
|
71
77
|
|
72
|
-
def pretty_print
|
78
|
+
def pretty_print(q) # :nodoc:
|
73
79
|
q.group 2, "[head: #{level} ", ']' do
|
74
80
|
q.pp text
|
75
81
|
end
|
data/lib/rdoc/markup/include.rb
CHANGED
@@ -20,17 +20,17 @@ class RDoc::Markup::Include
|
|
20
20
|
##
|
21
21
|
# Creates a new include that will import +file+ from +include_path+
|
22
22
|
|
23
|
-
def initialize
|
23
|
+
def initialize(file, include_path)
|
24
24
|
@file = file
|
25
25
|
@include_path = include_path
|
26
26
|
end
|
27
27
|
|
28
|
-
def ==
|
28
|
+
def ==(other) # :nodoc:
|
29
29
|
self.class === other and
|
30
30
|
@file == other.file and @include_path == other.include_path
|
31
31
|
end
|
32
32
|
|
33
|
-
def pretty_print
|
33
|
+
def pretty_print(q) # :nodoc:
|
34
34
|
q.group 2, '[incl ', ']' do
|
35
35
|
q.text file
|
36
36
|
q.breakable
|
@@ -19,14 +19,14 @@ class RDoc::Markup::IndentedParagraph < RDoc::Markup::Raw
|
|
19
19
|
super(*parts)
|
20
20
|
end
|
21
21
|
|
22
|
-
def ==
|
22
|
+
def ==(other) # :nodoc:
|
23
23
|
super and indent == other.indent
|
24
24
|
end
|
25
25
|
|
26
26
|
##
|
27
27
|
# Calls #accept_indented_paragraph on +visitor+
|
28
28
|
|
29
|
-
def accept
|
29
|
+
def accept(visitor)
|
30
30
|
visitor.accept_indented_paragraph self
|
31
31
|
end
|
32
32
|
|
@@ -34,7 +34,7 @@ class RDoc::Markup::IndentedParagraph < RDoc::Markup::Raw
|
|
34
34
|
# Joins the raw paragraph text and converts inline HardBreaks to the
|
35
35
|
# +hard_break+ text followed by the indent.
|
36
36
|
|
37
|
-
def text
|
37
|
+
def text(hard_break = nil)
|
38
38
|
@parts.map do |part|
|
39
39
|
if RDoc::Markup::HardBreak === part then
|
40
40
|
'%1$s%3$*2$s' % [hard_break, @indent, ' '] if hard_break
|
data/lib/rdoc/markup/list.rb
CHANGED
@@ -46,11 +46,11 @@ class RDoc::Markup::List
|
|
46
46
|
##
|
47
47
|
# Appends +item+ to the list
|
48
48
|
|
49
|
-
def <<
|
49
|
+
def <<(item)
|
50
50
|
@items << item
|
51
51
|
end
|
52
52
|
|
53
|
-
def ==
|
53
|
+
def ==(other) # :nodoc:
|
54
54
|
self.class == other.class and
|
55
55
|
@type == other.type and
|
56
56
|
@items == other.items
|
@@ -59,7 +59,7 @@ class RDoc::Markup::List
|
|
59
59
|
##
|
60
60
|
# Runs this list and all its #items through +visitor+
|
61
61
|
|
62
|
-
def accept
|
62
|
+
def accept(visitor)
|
63
63
|
visitor.accept_list_start self
|
64
64
|
|
65
65
|
@items.each do |item|
|
@@ -83,7 +83,7 @@ class RDoc::Markup::List
|
|
83
83
|
@items.last
|
84
84
|
end
|
85
85
|
|
86
|
-
def pretty_print
|
86
|
+
def pretty_print(q) # :nodoc:
|
87
87
|
q.group 2, "[list: #{@type} ", ']' do
|
88
88
|
q.seplist @items do |item|
|
89
89
|
q.pp item
|
@@ -33,11 +33,11 @@ class RDoc::Markup::ListItem
|
|
33
33
|
##
|
34
34
|
# Appends +part+ to the ListItem
|
35
35
|
|
36
|
-
def <<
|
36
|
+
def <<(part)
|
37
37
|
@parts << part
|
38
38
|
end
|
39
39
|
|
40
|
-
def ==
|
40
|
+
def ==(other) # :nodoc:
|
41
41
|
self.class == other.class and
|
42
42
|
@label == other.label and
|
43
43
|
@parts == other.parts
|
@@ -46,7 +46,7 @@ class RDoc::Markup::ListItem
|
|
46
46
|
##
|
47
47
|
# Runs this list item and all its #parts through +visitor+
|
48
48
|
|
49
|
-
def accept
|
49
|
+
def accept(visitor)
|
50
50
|
visitor.accept_list_item_start self
|
51
51
|
|
52
52
|
@parts.each do |part|
|
@@ -70,7 +70,7 @@ class RDoc::Markup::ListItem
|
|
70
70
|
@parts.length
|
71
71
|
end
|
72
72
|
|
73
|
-
def pretty_print
|
73
|
+
def pretty_print(q) # :nodoc:
|
74
74
|
q.group 2, '[item: ', ']' do
|
75
75
|
case @label
|
76
76
|
when Array then
|
@@ -7,7 +7,7 @@ class RDoc::Markup::Paragraph < RDoc::Markup::Raw
|
|
7
7
|
##
|
8
8
|
# Calls #accept_paragraph on +visitor+
|
9
9
|
|
10
|
-
def accept
|
10
|
+
def accept(visitor)
|
11
11
|
visitor.accept_paragraph self
|
12
12
|
end
|
13
13
|
|
@@ -15,7 +15,7 @@ class RDoc::Markup::Paragraph < RDoc::Markup::Raw
|
|
15
15
|
# Joins the raw paragraph text and converts inline HardBreaks to the
|
16
16
|
# +hard_break+ text.
|
17
17
|
|
18
|
-
def text
|
18
|
+
def text(hard_break = '')
|
19
19
|
@parts.map do |part|
|
20
20
|
if RDoc::Markup::HardBreak === part then
|
21
21
|
hard_break
|
data/lib/rdoc/markup/parser.rb
CHANGED
@@ -57,7 +57,7 @@ class RDoc::Markup::Parser
|
|
57
57
|
#
|
58
58
|
# Use RDoc::Markup#parse instead of this method.
|
59
59
|
|
60
|
-
def self.parse
|
60
|
+
def self.parse(str)
|
61
61
|
parser = new
|
62
62
|
parser.tokenize str
|
63
63
|
doc = RDoc::Markup::Document.new
|
@@ -67,7 +67,7 @@ class RDoc::Markup::Parser
|
|
67
67
|
##
|
68
68
|
# Returns a token stream for +str+, for testing
|
69
69
|
|
70
|
-
def self.tokenize
|
70
|
+
def self.tokenize(str)
|
71
71
|
parser = new
|
72
72
|
parser.tokenize str
|
73
73
|
parser.tokens
|
@@ -87,7 +87,7 @@ class RDoc::Markup::Parser
|
|
87
87
|
##
|
88
88
|
# Builds a Heading of +level+
|
89
89
|
|
90
|
-
def build_heading
|
90
|
+
def build_heading(level)
|
91
91
|
type, text, = get
|
92
92
|
|
93
93
|
text = case type
|
@@ -105,7 +105,7 @@ class RDoc::Markup::Parser
|
|
105
105
|
##
|
106
106
|
# Builds a List flush to +margin+
|
107
107
|
|
108
|
-
def build_list
|
108
|
+
def build_list(margin)
|
109
109
|
p :list_start => margin if @debug
|
110
110
|
|
111
111
|
list = RDoc::Markup::List.new
|
@@ -205,7 +205,7 @@ class RDoc::Markup::Parser
|
|
205
205
|
##
|
206
206
|
# Builds a Paragraph that is flush to +margin+
|
207
207
|
|
208
|
-
def build_paragraph
|
208
|
+
def build_paragraph(margin)
|
209
209
|
p :paragraph_start => margin if @debug
|
210
210
|
|
211
211
|
paragraph = RDoc::Markup::Paragraph.new
|
@@ -240,7 +240,7 @@ class RDoc::Markup::Parser
|
|
240
240
|
# terminated by a newline. Blank lines always consist of a single newline
|
241
241
|
# character, and there is never a single newline at the end of the verbatim.
|
242
242
|
|
243
|
-
def build_verbatim
|
243
|
+
def build_verbatim(margin)
|
244
244
|
p :verbatim_begin => margin if @debug
|
245
245
|
verbatim = RDoc::Markup::Verbatim.new
|
246
246
|
|
@@ -339,7 +339,7 @@ class RDoc::Markup::Parser
|
|
339
339
|
#
|
340
340
|
# Returns +parent+.
|
341
341
|
|
342
|
-
def parse
|
342
|
+
def parse(parent, indent = 0)
|
343
343
|
p :parse_start => indent if @debug
|
344
344
|
|
345
345
|
until @tokens.empty? do
|
@@ -403,7 +403,7 @@ class RDoc::Markup::Parser
|
|
403
403
|
##
|
404
404
|
# Small hook that is overridden by RDoc::TomDoc
|
405
405
|
|
406
|
-
def parse_text
|
406
|
+
def parse_text(parent, indent) # :nodoc:
|
407
407
|
parent << build_paragraph(indent)
|
408
408
|
end
|
409
409
|
|
@@ -465,7 +465,7 @@ class RDoc::Markup::Parser
|
|
465
465
|
##
|
466
466
|
# Creates the StringScanner
|
467
467
|
|
468
|
-
def setup_scanner
|
468
|
+
def setup_scanner(input)
|
469
469
|
@s = MyStringScanner.new input
|
470
470
|
end
|
471
471
|
|
@@ -474,7 +474,7 @@ class RDoc::Markup::Parser
|
|
474
474
|
#
|
475
475
|
# Optionally raises an error if the next token is not of the expected type.
|
476
476
|
|
477
|
-
def skip
|
477
|
+
def skip(token_type, error = true)
|
478
478
|
type, = get
|
479
479
|
return unless type # end of stream
|
480
480
|
return @current_token if token_type == type
|
@@ -485,7 +485,7 @@ class RDoc::Markup::Parser
|
|
485
485
|
##
|
486
486
|
# Turns text +input+ into a stream of tokens
|
487
487
|
|
488
|
-
def tokenize
|
488
|
+
def tokenize(input)
|
489
489
|
setup_scanner input
|
490
490
|
|
491
491
|
until @s.eos? do
|
@@ -27,7 +27,7 @@ class RDoc::Markup::PreProcess
|
|
27
27
|
# with the result RDoc::Comment (or text String) and the code object for the
|
28
28
|
# comment (if any).
|
29
29
|
|
30
|
-
def self.post_process
|
30
|
+
def self.post_process(&block)
|
31
31
|
@post_processors << block
|
32
32
|
end
|
33
33
|
|
@@ -50,7 +50,7 @@ class RDoc::Markup::PreProcess
|
|
50
50
|
# # replace text, etc.
|
51
51
|
# end
|
52
52
|
|
53
|
-
def self.register
|
53
|
+
def self.register(directive, &block)
|
54
54
|
@registered[directive] = block
|
55
55
|
end
|
56
56
|
|
@@ -96,7 +96,7 @@ class RDoc::Markup::PreProcess
|
|
96
96
|
# directive's parameter is set as metadata on the +code_object+. See
|
97
97
|
# RDoc::CodeObject#metadata for details.
|
98
98
|
|
99
|
-
def handle
|
99
|
+
def handle(text, code_object = nil, &block)
|
100
100
|
first_line = 1
|
101
101
|
if RDoc::Comment === text then
|
102
102
|
comment = text
|
@@ -150,8 +150,8 @@ class RDoc::Markup::PreProcess
|
|
150
150
|
#--
|
151
151
|
# When 1.8.7 support is ditched prefix can be defaulted to ''
|
152
152
|
|
153
|
-
def handle_directive
|
154
|
-
encoding = nil, line = nil
|
153
|
+
def handle_directive(prefix, directive, param, code_object = nil,
|
154
|
+
encoding = nil, line = nil)
|
155
155
|
blankline = "#{prefix.strip}\n"
|
156
156
|
directive = directive.downcase
|
157
157
|
|
@@ -279,7 +279,7 @@ class RDoc::Markup::PreProcess
|
|
279
279
|
# TODO shift left the whole file content in that case
|
280
280
|
# TODO comment stop/start #-- and #++ in included file must be processed here
|
281
281
|
|
282
|
-
def include_file
|
282
|
+
def include_file(name, indent, encoding)
|
283
283
|
full_name = find_include_file name
|
284
284
|
|
285
285
|
unless full_name then
|
data/lib/rdoc/markup/raw.rb
CHANGED
@@ -20,29 +20,29 @@ class RDoc::Markup::Raw
|
|
20
20
|
##
|
21
21
|
# Appends +text+
|
22
22
|
|
23
|
-
def <<
|
23
|
+
def <<(text)
|
24
24
|
@parts << text
|
25
25
|
end
|
26
26
|
|
27
|
-
def ==
|
27
|
+
def ==(other) # :nodoc:
|
28
28
|
self.class == other.class and @parts == other.parts
|
29
29
|
end
|
30
30
|
|
31
31
|
##
|
32
32
|
# Calls #accept_raw+ on +visitor+
|
33
33
|
|
34
|
-
def accept
|
34
|
+
def accept(visitor)
|
35
35
|
visitor.accept_raw self
|
36
36
|
end
|
37
37
|
|
38
38
|
##
|
39
39
|
# Appends +other+'s parts
|
40
40
|
|
41
|
-
def merge
|
41
|
+
def merge(other)
|
42
42
|
@parts.concat other.parts
|
43
43
|
end
|
44
44
|
|
45
|
-
def pretty_print
|
45
|
+
def pretty_print(q) # :nodoc:
|
46
46
|
self.class.name =~ /.*::(\w{1,4})/i
|
47
47
|
|
48
48
|
q.group 2, "[#{$1.downcase}: ", ']' do
|
data/lib/rdoc/markup/rule.rb
CHANGED
@@ -7,11 +7,11 @@ class RDoc::Markup::Rule < Struct.new :weight
|
|
7
7
|
##
|
8
8
|
# Calls #accept_rule on +visitor+
|
9
9
|
|
10
|
-
def accept
|
10
|
+
def accept(visitor)
|
11
11
|
visitor.accept_rule self
|
12
12
|
end
|
13
13
|
|
14
|
-
def pretty_print
|
14
|
+
def pretty_print(q) # :nodoc:
|
15
15
|
q.group 2, '[rule:', ']' do
|
16
16
|
q.pp weight
|
17
17
|
end
|
data/lib/rdoc/markup/table.rb
CHANGED
@@ -13,23 +13,23 @@ class RDoc::Markup::Table
|
|
13
13
|
attr_accessor :body
|
14
14
|
|
15
15
|
# Creates new instance
|
16
|
-
def initialize
|
16
|
+
def initialize(header, align, body)
|
17
17
|
@header, @align, @body = header, align, body
|
18
18
|
end
|
19
19
|
|
20
20
|
# :stopdoc:
|
21
|
-
def ==
|
21
|
+
def ==(other)
|
22
22
|
self.class == other.class and
|
23
23
|
@header == other.header and
|
24
24
|
@align == other.align and
|
25
25
|
@body == other.body
|
26
26
|
end
|
27
27
|
|
28
|
-
def accept
|
28
|
+
def accept(visitor)
|
29
29
|
visitor.accept_table @header, @body, @align
|
30
30
|
end
|
31
31
|
|
32
|
-
def pretty_print
|
32
|
+
def pretty_print(q)
|
33
33
|
q.group 2, '[Table: ', ']' do
|
34
34
|
q.group 2, '[Head: ', ']' do
|
35
35
|
q.seplist @header.zip(@align) do |text, align|
|
data/lib/rdoc/markup/to_ansi.rb
CHANGED
@@ -7,7 +7,7 @@ class RDoc::Markup::ToAnsi < RDoc::Markup::ToRdoc
|
|
7
7
|
##
|
8
8
|
# Creates a new ToAnsi visitor that is ready to output vibrant ANSI color!
|
9
9
|
|
10
|
-
def initialize
|
10
|
+
def initialize(markup = nil)
|
11
11
|
super
|
12
12
|
|
13
13
|
@headings.clear
|
@@ -28,7 +28,7 @@ class RDoc::Markup::ToAnsi < RDoc::Markup::ToRdoc
|
|
28
28
|
##
|
29
29
|
# Overrides indent width to ensure output lines up correctly.
|
30
30
|
|
31
|
-
def accept_list_item_end
|
31
|
+
def accept_list_item_end(list_item)
|
32
32
|
width = case @list_type.last
|
33
33
|
when :BULLET then
|
34
34
|
2
|
@@ -52,7 +52,7 @@ class RDoc::Markup::ToAnsi < RDoc::Markup::ToRdoc
|
|
52
52
|
##
|
53
53
|
# Adds coloring to note and label list items
|
54
54
|
|
55
|
-
def accept_list_item_start
|
55
|
+
def accept_list_item_start(list_item)
|
56
56
|
bullet = case @list_type.last
|
57
57
|
when :BULLET then
|
58
58
|
'*'
|
data/lib/rdoc/markup/to_bs.rb
CHANGED
@@ -10,7 +10,7 @@ class RDoc::Markup::ToBs < RDoc::Markup::ToRdoc
|
|
10
10
|
##
|
11
11
|
# Returns a new ToBs that is ready for hot backspace action!
|
12
12
|
|
13
|
-
def initialize
|
13
|
+
def initialize(markup = nil)
|
14
14
|
super
|
15
15
|
|
16
16
|
@in_b = false
|
@@ -30,7 +30,7 @@ class RDoc::Markup::ToBs < RDoc::Markup::ToRdoc
|
|
30
30
|
##
|
31
31
|
# Makes heading text bold.
|
32
32
|
|
33
|
-
def accept_heading
|
33
|
+
def accept_heading(heading)
|
34
34
|
use_prefix or @res << ' ' * @indent
|
35
35
|
@res << @headings[heading.level][0]
|
36
36
|
@in_b = true
|
@@ -43,7 +43,7 @@ class RDoc::Markup::ToBs < RDoc::Markup::ToRdoc
|
|
43
43
|
##
|
44
44
|
# Prepares the visitor for consuming +list_item+
|
45
45
|
|
46
|
-
def accept_list_item_start
|
46
|
+
def accept_list_item_start(list_item)
|
47
47
|
type = @list_type.last
|
48
48
|
|
49
49
|
case type
|
@@ -68,7 +68,7 @@ class RDoc::Markup::ToBs < RDoc::Markup::ToRdoc
|
|
68
68
|
##
|
69
69
|
# Turns on or off regexp handling for +convert_string+
|
70
70
|
|
71
|
-
def annotate
|
71
|
+
def annotate(tag)
|
72
72
|
case tag
|
73
73
|
when '+b' then @in_b = true
|
74
74
|
when '-b' then @in_b = false
|
@@ -81,14 +81,14 @@ class RDoc::Markup::ToBs < RDoc::Markup::ToRdoc
|
|
81
81
|
##
|
82
82
|
# Calls convert_string on the result of convert_regexp_handling
|
83
83
|
|
84
|
-
def convert_regexp_handling
|
84
|
+
def convert_regexp_handling(target)
|
85
85
|
convert_string super
|
86
86
|
end
|
87
87
|
|
88
88
|
##
|
89
89
|
# Adds bold or underline mixed with backspaces
|
90
90
|
|
91
|
-
def convert_string
|
91
|
+
def convert_string(string)
|
92
92
|
return string unless @in_b or @in_em
|
93
93
|
chars = if @in_b then
|
94
94
|
string.chars.map do |char| "#{char}\b#{char}" end
|
data/lib/rdoc/markup/to_html.rb
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
-
require 'cgi/
|
2
|
+
require 'cgi/escape'
|
3
|
+
# For CGI.unescape on earlier rubies
|
4
|
+
require 'cgi/util' if RUBY_VERSION < '3.5'
|
3
5
|
|
4
6
|
##
|
5
7
|
# Outputs RDoc markup as HTML.
|
@@ -42,7 +44,7 @@ class RDoc::Markup::ToHtml < RDoc::Markup::Formatter
|
|
42
44
|
##
|
43
45
|
# Creates a new formatter that will output HTML
|
44
46
|
|
45
|
-
def initialize
|
47
|
+
def initialize(options, markup = nil)
|
46
48
|
super
|
47
49
|
|
48
50
|
@code_object = nil
|
@@ -82,7 +84,7 @@ class RDoc::Markup::ToHtml < RDoc::Markup::Formatter
|
|
82
84
|
add_regexp_handling_TIDYLINK
|
83
85
|
end
|
84
86
|
|
85
|
-
def handle_RDOCLINK
|
87
|
+
def handle_RDOCLINK(url) # :nodoc:
|
86
88
|
case url
|
87
89
|
when /^rdoc-ref:/
|
88
90
|
CGI.escapeHTML($')
|
@@ -98,7 +100,15 @@ class RDoc::Markup::ToHtml < RDoc::Markup::Formatter
|
|
98
100
|
|
99
101
|
gen_url CGI.escapeHTML(url), CGI.escapeHTML(text)
|
100
102
|
when /^rdoc-image:/
|
101
|
-
|
103
|
+
# Split the string after "rdoc-image:" into url and alt.
|
104
|
+
# "path/to/image.jpg:alt text" => ["path/to/image.jpg", "alt text"]
|
105
|
+
# "http://example.com/path/to/image.jpg:alt text" => ["http://example.com/path/to/image.jpg", "alt text"]
|
106
|
+
url, alt = $'.split(/:(?!\/)/, 2)
|
107
|
+
if alt && !alt.empty?
|
108
|
+
%[<img src="#{CGI.escapeHTML(url)}" alt="#{CGI.escapeHTML(alt)}">]
|
109
|
+
else
|
110
|
+
%[<img src="#{CGI.escapeHTML(url)}">]
|
111
|
+
end
|
102
112
|
when /\Ardoc-[a-z]+:/
|
103
113
|
CGI.escapeHTML($')
|
104
114
|
end
|
@@ -107,7 +117,7 @@ class RDoc::Markup::ToHtml < RDoc::Markup::Formatter
|
|
107
117
|
##
|
108
118
|
# +target+ is a <code><br></code>
|
109
119
|
|
110
|
-
def handle_regexp_HARD_BREAK
|
120
|
+
def handle_regexp_HARD_BREAK(target)
|
111
121
|
'<br>'
|
112
122
|
end
|
113
123
|
|
@@ -138,7 +148,7 @@ class RDoc::Markup::ToHtml < RDoc::Markup::Formatter
|
|
138
148
|
# For the +rdoc-label+ scheme the footnote and label prefixes are stripped
|
139
149
|
# when creating a link. All other contents will be linked verbatim.
|
140
150
|
|
141
|
-
def handle_regexp_RDOCLINK
|
151
|
+
def handle_regexp_RDOCLINK(target)
|
142
152
|
handle_RDOCLINK target.text
|
143
153
|
end
|
144
154
|
|
@@ -187,7 +197,7 @@ class RDoc::Markup::ToHtml < RDoc::Markup::Formatter
|
|
187
197
|
##
|
188
198
|
# Adds +block_quote+ to the output
|
189
199
|
|
190
|
-
def accept_block_quote
|
200
|
+
def accept_block_quote(block_quote)
|
191
201
|
@res << "\n<blockquote>"
|
192
202
|
|
193
203
|
block_quote.parts.each do |part|
|
@@ -200,7 +210,7 @@ class RDoc::Markup::ToHtml < RDoc::Markup::Formatter
|
|
200
210
|
##
|
201
211
|
# Adds +paragraph+ to the output
|
202
212
|
|
203
|
-
def accept_paragraph
|
213
|
+
def accept_paragraph(paragraph)
|
204
214
|
@res << "\n<p>"
|
205
215
|
text = paragraph.text @hard_break
|
206
216
|
text = text.gsub(/(#{SPACE_SEPARATED_LETTER_CLASS})?\K\r?\n(?=(?(1)(#{SPACE_SEPARATED_LETTER_CLASS})?))/o) {
|
@@ -213,7 +223,7 @@ class RDoc::Markup::ToHtml < RDoc::Markup::Formatter
|
|
213
223
|
##
|
214
224
|
# Adds +verbatim+ to the output
|
215
225
|
|
216
|
-
def accept_verbatim
|
226
|
+
def accept_verbatim(verbatim)
|
217
227
|
text = verbatim.text.rstrip
|
218
228
|
|
219
229
|
klass = nil
|
@@ -243,7 +253,7 @@ class RDoc::Markup::ToHtml < RDoc::Markup::Formatter
|
|
243
253
|
##
|
244
254
|
# Adds +rule+ to the output
|
245
255
|
|
246
|
-
def accept_rule
|
256
|
+
def accept_rule(rule)
|
247
257
|
@res << "<hr>\n"
|
248
258
|
end
|
249
259
|
|
@@ -296,7 +306,7 @@ class RDoc::Markup::ToHtml < RDoc::Markup::Formatter
|
|
296
306
|
# Adds +heading+ to the output. The headings greater than 6 are trimmed to
|
297
307
|
# level 6.
|
298
308
|
|
299
|
-
def accept_heading
|
309
|
+
def accept_heading(heading)
|
300
310
|
level = [6, heading.level].min
|
301
311
|
|
302
312
|
label = heading.label @code_object
|
@@ -317,14 +327,14 @@ class RDoc::Markup::ToHtml < RDoc::Markup::Formatter
|
|
317
327
|
##
|
318
328
|
# Adds +raw+ to the output
|
319
329
|
|
320
|
-
def accept_raw
|
330
|
+
def accept_raw(raw)
|
321
331
|
@res << raw.parts.join("\n")
|
322
332
|
end
|
323
333
|
|
324
334
|
##
|
325
335
|
# Adds +table+ to the output
|
326
336
|
|
327
|
-
def accept_table
|
337
|
+
def accept_table(header, body, aligns)
|
328
338
|
@res << "\n<table role=\"table\">\n<thead>\n<tr>\n"
|
329
339
|
header.zip(aligns) do |text, align|
|
330
340
|
@res << '<th'
|
@@ -357,7 +367,7 @@ class RDoc::Markup::ToHtml < RDoc::Markup::Formatter
|
|
357
367
|
# Generate a link to +url+ with content +text+. Handles the special cases
|
358
368
|
# for img: and link: described under handle_regexp_HYPERLINK
|
359
369
|
|
360
|
-
def gen_url
|
370
|
+
def gen_url(url, text)
|
361
371
|
scheme, url, id = parse_url url
|
362
372
|
|
363
373
|
if %w[http https link].include?(scheme) and
|
@@ -431,7 +441,7 @@ class RDoc::Markup::ToHtml < RDoc::Markup::Formatter
|
|
431
441
|
##
|
432
442
|
# Returns true if text is valid ruby syntax
|
433
443
|
|
434
|
-
def parseable?
|
444
|
+
def parseable?(text)
|
435
445
|
verbose, $VERBOSE = $VERBOSE, nil
|
436
446
|
catch(:valid) do
|
437
447
|
eval("BEGIN { throw :valid, true }\n#{text}")
|
@@ -445,7 +455,7 @@ class RDoc::Markup::ToHtml < RDoc::Markup::Formatter
|
|
445
455
|
##
|
446
456
|
# Converts +item+ to HTML using RDoc::Text#to_html
|
447
457
|
|
448
|
-
def to_html
|
458
|
+
def to_html(item)
|
449
459
|
super convert_flow @am.flow item
|
450
460
|
end
|
451
461
|
|
@@ -58,7 +58,7 @@ class RDoc::Markup::ToHtmlCrossref < RDoc::Markup::ToHtml
|
|
58
58
|
# Creates a link to the reference +name+ if the name exists. If +text+ is
|
59
59
|
# given it is used as the link text, otherwise +name+ is used.
|
60
60
|
|
61
|
-
def cross_reference
|
61
|
+
def cross_reference(name, text = nil, code = true, rdoc_ref: false)
|
62
62
|
lookup = name
|
63
63
|
|
64
64
|
name = name[1..-1] unless @show_hash if name[0, 1] == '#'
|
@@ -101,7 +101,7 @@ class RDoc::Markup::ToHtmlCrossref < RDoc::Markup::ToHtml
|
|
101
101
|
# Handles <tt>rdoc-ref:</tt> scheme links and allows RDoc::Markup::ToHtml to
|
102
102
|
# handle other schemes.
|
103
103
|
|
104
|
-
def handle_regexp_HYPERLINK
|
104
|
+
def handle_regexp_HYPERLINK(target)
|
105
105
|
url = target.text
|
106
106
|
|
107
107
|
case url
|
@@ -120,7 +120,7 @@ class RDoc::Markup::ToHtmlCrossref < RDoc::Markup::ToHtml
|
|
120
120
|
# All other contents are handled by
|
121
121
|
# {the superclass}[rdoc-ref:RDoc::Markup::ToHtml#handle_regexp_RDOCLINK]
|
122
122
|
|
123
|
-
def handle_regexp_RDOCLINK
|
123
|
+
def handle_regexp_RDOCLINK(target)
|
124
124
|
url = target.text
|
125
125
|
|
126
126
|
case url
|
@@ -135,7 +135,7 @@ class RDoc::Markup::ToHtmlCrossref < RDoc::Markup::ToHtml
|
|
135
135
|
# Generates links for <tt>rdoc-ref:</tt> scheme URLs and allows
|
136
136
|
# RDoc::Markup::ToHtml to handle other schemes.
|
137
137
|
|
138
|
-
def gen_url
|
138
|
+
def gen_url(url, text)
|
139
139
|
if url =~ /\Ardoc-ref:/
|
140
140
|
name = $'
|
141
141
|
cross_reference name, text, name == text, rdoc_ref: true
|
@@ -147,7 +147,7 @@ class RDoc::Markup::ToHtmlCrossref < RDoc::Markup::ToHtml
|
|
147
147
|
##
|
148
148
|
# Creates an HTML link to +name+ with the given +text+.
|
149
149
|
|
150
|
-
def link
|
150
|
+
def link(name, text, code = true, rdoc_ref: false)
|
151
151
|
if !(name.end_with?('+@', '-@')) and name =~ /(.*[^#:])?@/
|
152
152
|
name = $1
|
153
153
|
label = $'
|