rdoc 6.12.0 → 6.14.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (100) hide show
  1. checksums.yaml +4 -4
  2. data/README.rdoc +3 -1
  3. data/lib/rdoc/code_object/alias.rb +2 -9
  4. data/lib/rdoc/code_object/any_method.rb +9 -14
  5. data/lib/rdoc/code_object/attr.rb +6 -9
  6. data/lib/rdoc/code_object/class_module.rb +40 -23
  7. data/lib/rdoc/code_object/constant.rb +5 -5
  8. data/lib/rdoc/code_object/context/section.rb +8 -7
  9. data/lib/rdoc/code_object/context.rb +23 -65
  10. data/lib/rdoc/code_object/method_attr.rb +9 -28
  11. data/lib/rdoc/code_object/mixin.rb +3 -3
  12. data/lib/rdoc/code_object/normal_class.rb +1 -1
  13. data/lib/rdoc/code_object/normal_module.rb +1 -1
  14. data/lib/rdoc/code_object/require.rb +1 -1
  15. data/lib/rdoc/code_object/single_class.rb +1 -1
  16. data/lib/rdoc/code_object/top_level.rb +12 -30
  17. data/lib/rdoc/code_object.rb +6 -37
  18. data/lib/rdoc/comment.rb +7 -10
  19. data/lib/rdoc/cross_reference.rb +3 -3
  20. data/lib/rdoc/encoding.rb +4 -4
  21. data/lib/rdoc/erb_partial.rb +1 -1
  22. data/lib/rdoc/erbio.rb +2 -2
  23. data/lib/rdoc/generator/darkfish.rb +97 -109
  24. data/lib/rdoc/generator/json_index.rb +4 -20
  25. data/lib/rdoc/generator/markup.rb +14 -2
  26. data/lib/rdoc/generator/pot/message_extractor.rb +6 -6
  27. data/lib/rdoc/generator/pot/po.rb +1 -1
  28. data/lib/rdoc/generator/pot/po_entry.rb +7 -7
  29. data/lib/rdoc/generator/pot.rb +1 -6
  30. data/lib/rdoc/generator/ri.rb +1 -1
  31. data/lib/rdoc/generator/template/darkfish/_head.rhtml +5 -0
  32. data/lib/rdoc/generator/template/darkfish/_sidebar_classes.rhtml +1 -30
  33. data/lib/rdoc/generator/template/darkfish/_sidebar_extends.rhtml +1 -1
  34. data/lib/rdoc/generator/template/darkfish/_sidebar_includes.rhtml +1 -1
  35. data/lib/rdoc/generator/template/darkfish/class.rhtml +15 -0
  36. data/lib/rdoc/generator/template/darkfish/css/rdoc.css +15 -0
  37. data/lib/rdoc/markdown.kpeg +7 -5
  38. data/lib/rdoc/markdown.rb +34 -21
  39. data/lib/rdoc/markup/attribute_manager.rb +5 -5
  40. data/lib/rdoc/markup/attributes.rb +3 -3
  41. data/lib/rdoc/markup/blank_line.rb +2 -2
  42. data/lib/rdoc/markup/block_quote.rb +1 -1
  43. data/lib/rdoc/markup/document.rb +8 -8
  44. data/lib/rdoc/markup/formatter.rb +12 -12
  45. data/lib/rdoc/markup/hard_break.rb +3 -3
  46. data/lib/rdoc/markup/heading.rb +11 -5
  47. data/lib/rdoc/markup/include.rb +3 -3
  48. data/lib/rdoc/markup/indented_paragraph.rb +3 -3
  49. data/lib/rdoc/markup/list.rb +4 -4
  50. data/lib/rdoc/markup/list_item.rb +4 -4
  51. data/lib/rdoc/markup/paragraph.rb +2 -2
  52. data/lib/rdoc/markup/parser.rb +11 -11
  53. data/lib/rdoc/markup/pre_process.rb +6 -6
  54. data/lib/rdoc/markup/raw.rb +5 -5
  55. data/lib/rdoc/markup/rule.rb +2 -2
  56. data/lib/rdoc/markup/table.rb +4 -4
  57. data/lib/rdoc/markup/to_ansi.rb +3 -3
  58. data/lib/rdoc/markup/to_bs.rb +6 -6
  59. data/lib/rdoc/markup/to_html.rb +25 -16
  60. data/lib/rdoc/markup/to_html_crossref.rb +5 -5
  61. data/lib/rdoc/markup/to_html_snippet.rb +17 -17
  62. data/lib/rdoc/markup/to_joined_paragraph.rb +1 -1
  63. data/lib/rdoc/markup/to_label.rb +6 -5
  64. data/lib/rdoc/markup/to_markdown.rb +12 -12
  65. data/lib/rdoc/markup/to_rdoc.rb +29 -28
  66. data/lib/rdoc/markup/to_table_of_contents.rb +3 -3
  67. data/lib/rdoc/markup/to_test.rb +1 -1
  68. data/lib/rdoc/markup/to_tt_only.rb +8 -8
  69. data/lib/rdoc/markup/verbatim.rb +3 -3
  70. data/lib/rdoc/markup.rb +3 -3
  71. data/lib/rdoc/options.rb +31 -12
  72. data/lib/rdoc/parser/c.rb +20 -23
  73. data/lib/rdoc/parser/changelog.rb +9 -9
  74. data/lib/rdoc/parser/prism_ruby.rb +9 -16
  75. data/lib/rdoc/parser/ruby.rb +50 -53
  76. data/lib/rdoc/parser/simple.rb +2 -2
  77. data/lib/rdoc/parser.rb +8 -8
  78. data/lib/rdoc/rd/inline.rb +4 -4
  79. data/lib/rdoc/rd.rb +1 -1
  80. data/lib/rdoc/rdoc.rb +11 -26
  81. data/lib/rdoc/ri/driver.rb +60 -52
  82. data/lib/rdoc/ri/paths.rb +2 -2
  83. data/lib/rdoc/ri/task.rb +1 -1
  84. data/lib/rdoc/rubygems_hook.rb +14 -17
  85. data/lib/rdoc/servlet.rb +23 -22
  86. data/lib/rdoc/stats/normal.rb +1 -1
  87. data/lib/rdoc/stats/quiet.rb +1 -1
  88. data/lib/rdoc/stats/verbose.rb +3 -3
  89. data/lib/rdoc/stats.rb +14 -14
  90. data/lib/rdoc/store.rb +39 -43
  91. data/lib/rdoc/task.rb +2 -2
  92. data/lib/rdoc/text.rb +13 -13
  93. data/lib/rdoc/token_stream.rb +1 -1
  94. data/lib/rdoc/tom_doc.rb +7 -7
  95. data/lib/rdoc/version.rb +1 -1
  96. data/man/ri.1 +2 -0
  97. data/rdoc.gemspec +69 -0
  98. metadata +18 -5
  99. data/lib/rdoc/generator/template/darkfish/_sidebar_VCS_info.rhtml +0 -19
  100. data/lib/rdoc/generator/template/darkfish/_sidebar_in_files.rhtml +0 -9
@@ -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 target
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 visitor
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 context = nil
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.class.to_html.to_html(text.dup)
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 q # :nodoc:
78
+ def pretty_print(q) # :nodoc:
73
79
  q.group 2, "[head: #{level} ", ']' do
74
80
  q.pp text
75
81
  end
@@ -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 file, include_path
23
+ def initialize(file, include_path)
24
24
  @file = file
25
25
  @include_path = include_path
26
26
  end
27
27
 
28
- def == other # :nodoc:
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 q # :nodoc:
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 == other # :nodoc:
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 visitor
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 hard_break = nil
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
@@ -46,11 +46,11 @@ class RDoc::Markup::List
46
46
  ##
47
47
  # Appends +item+ to the list
48
48
 
49
- def << item
49
+ def <<(item)
50
50
  @items << item
51
51
  end
52
52
 
53
- def == other # :nodoc:
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 visitor
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 q # :nodoc:
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 << part
36
+ def <<(part)
37
37
  @parts << part
38
38
  end
39
39
 
40
- def == other # :nodoc:
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 visitor
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 q # :nodoc:
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 visitor
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 hard_break = ''
18
+ def text(hard_break = '')
19
19
  @parts.map do |part|
20
20
  if RDoc::Markup::HardBreak === part then
21
21
  hard_break
@@ -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 str
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 str
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 level
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 margin
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 margin
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 margin
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 parent, indent = 0
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 parent, indent # :nodoc:
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 input
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 token_type, error = true
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 input
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 &block
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 directive, &block
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 text, code_object = nil, &block
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 prefix, directive, param, code_object = nil,
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 name, indent, encoding
282
+ def include_file(name, indent, encoding)
283
283
  full_name = find_include_file name
284
284
 
285
285
  unless full_name then
@@ -20,29 +20,29 @@ class RDoc::Markup::Raw
20
20
  ##
21
21
  # Appends +text+
22
22
 
23
- def << text
23
+ def <<(text)
24
24
  @parts << text
25
25
  end
26
26
 
27
- def == other # :nodoc:
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 visitor
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 other
41
+ def merge(other)
42
42
  @parts.concat other.parts
43
43
  end
44
44
 
45
- def pretty_print q # :nodoc:
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
@@ -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 visitor
10
+ def accept(visitor)
11
11
  visitor.accept_rule self
12
12
  end
13
13
 
14
- def pretty_print q # :nodoc:
14
+ def pretty_print(q) # :nodoc:
15
15
  q.group 2, '[rule:', ']' do
16
16
  q.pp weight
17
17
  end
@@ -13,23 +13,23 @@ class RDoc::Markup::Table
13
13
  attr_accessor :body
14
14
 
15
15
  # Creates new instance
16
- def initialize header, align, body
16
+ def initialize(header, align, body)
17
17
  @header, @align, @body = header, align, body
18
18
  end
19
19
 
20
20
  # :stopdoc:
21
- def == other
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 visitor
28
+ def accept(visitor)
29
29
  visitor.accept_table @header, @body, @align
30
30
  end
31
31
 
32
- def pretty_print q
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|
@@ -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 markup = nil
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 list_item
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 list_item
55
+ def accept_list_item_start(list_item)
56
56
  bullet = case @list_type.last
57
57
  when :BULLET then
58
58
  '*'
@@ -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 markup = nil
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 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 list_item
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 tag
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 target
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 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
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
- require 'cgi/util'
2
+ require 'cgi/escape'
3
+ require 'cgi/util' unless defined?(CGI::EscapeExt)
3
4
 
4
5
  ##
5
6
  # Outputs RDoc markup as HTML.
@@ -42,7 +43,7 @@ class RDoc::Markup::ToHtml < RDoc::Markup::Formatter
42
43
  ##
43
44
  # Creates a new formatter that will output HTML
44
45
 
45
- def initialize options, markup = nil
46
+ def initialize(options, markup = nil)
46
47
  super
47
48
 
48
49
  @code_object = nil
@@ -82,7 +83,7 @@ class RDoc::Markup::ToHtml < RDoc::Markup::Formatter
82
83
  add_regexp_handling_TIDYLINK
83
84
  end
84
85
 
85
- def handle_RDOCLINK url # :nodoc:
86
+ def handle_RDOCLINK(url) # :nodoc:
86
87
  case url
87
88
  when /^rdoc-ref:/
88
89
  CGI.escapeHTML($')
@@ -98,7 +99,15 @@ class RDoc::Markup::ToHtml < RDoc::Markup::Formatter
98
99
 
99
100
  gen_url CGI.escapeHTML(url), CGI.escapeHTML(text)
100
101
  when /^rdoc-image:/
101
- %[<img src=\"#{CGI.escapeHTML($')}\">]
102
+ # Split the string after "rdoc-image:" into url and alt.
103
+ # "path/to/image.jpg:alt text" => ["path/to/image.jpg", "alt text"]
104
+ # "http://example.com/path/to/image.jpg:alt text" => ["http://example.com/path/to/image.jpg", "alt text"]
105
+ url, alt = $'.split(/:(?!\/)/, 2)
106
+ if alt && !alt.empty?
107
+ %[<img src="#{CGI.escapeHTML(url)}" alt="#{CGI.escapeHTML(alt)}">]
108
+ else
109
+ %[<img src="#{CGI.escapeHTML(url)}">]
110
+ end
102
111
  when /\Ardoc-[a-z]+:/
103
112
  CGI.escapeHTML($')
104
113
  end
@@ -107,7 +116,7 @@ class RDoc::Markup::ToHtml < RDoc::Markup::Formatter
107
116
  ##
108
117
  # +target+ is a <code><br></code>
109
118
 
110
- def handle_regexp_HARD_BREAK target
119
+ def handle_regexp_HARD_BREAK(target)
111
120
  '<br>'
112
121
  end
113
122
 
@@ -138,7 +147,7 @@ class RDoc::Markup::ToHtml < RDoc::Markup::Formatter
138
147
  # For the +rdoc-label+ scheme the footnote and label prefixes are stripped
139
148
  # when creating a link. All other contents will be linked verbatim.
140
149
 
141
- def handle_regexp_RDOCLINK target
150
+ def handle_regexp_RDOCLINK(target)
142
151
  handle_RDOCLINK target.text
143
152
  end
144
153
 
@@ -187,7 +196,7 @@ class RDoc::Markup::ToHtml < RDoc::Markup::Formatter
187
196
  ##
188
197
  # Adds +block_quote+ to the output
189
198
 
190
- def accept_block_quote block_quote
199
+ def accept_block_quote(block_quote)
191
200
  @res << "\n<blockquote>"
192
201
 
193
202
  block_quote.parts.each do |part|
@@ -200,7 +209,7 @@ class RDoc::Markup::ToHtml < RDoc::Markup::Formatter
200
209
  ##
201
210
  # Adds +paragraph+ to the output
202
211
 
203
- def accept_paragraph paragraph
212
+ def accept_paragraph(paragraph)
204
213
  @res << "\n<p>"
205
214
  text = paragraph.text @hard_break
206
215
  text = text.gsub(/(#{SPACE_SEPARATED_LETTER_CLASS})?\K\r?\n(?=(?(1)(#{SPACE_SEPARATED_LETTER_CLASS})?))/o) {
@@ -213,7 +222,7 @@ class RDoc::Markup::ToHtml < RDoc::Markup::Formatter
213
222
  ##
214
223
  # Adds +verbatim+ to the output
215
224
 
216
- def accept_verbatim verbatim
225
+ def accept_verbatim(verbatim)
217
226
  text = verbatim.text.rstrip
218
227
 
219
228
  klass = nil
@@ -243,7 +252,7 @@ class RDoc::Markup::ToHtml < RDoc::Markup::Formatter
243
252
  ##
244
253
  # Adds +rule+ to the output
245
254
 
246
- def accept_rule rule
255
+ def accept_rule(rule)
247
256
  @res << "<hr>\n"
248
257
  end
249
258
 
@@ -296,7 +305,7 @@ class RDoc::Markup::ToHtml < RDoc::Markup::Formatter
296
305
  # Adds +heading+ to the output. The headings greater than 6 are trimmed to
297
306
  # level 6.
298
307
 
299
- def accept_heading heading
308
+ def accept_heading(heading)
300
309
  level = [6, heading.level].min
301
310
 
302
311
  label = heading.label @code_object
@@ -317,14 +326,14 @@ class RDoc::Markup::ToHtml < RDoc::Markup::Formatter
317
326
  ##
318
327
  # Adds +raw+ to the output
319
328
 
320
- def accept_raw raw
329
+ def accept_raw(raw)
321
330
  @res << raw.parts.join("\n")
322
331
  end
323
332
 
324
333
  ##
325
334
  # Adds +table+ to the output
326
335
 
327
- def accept_table header, body, aligns
336
+ def accept_table(header, body, aligns)
328
337
  @res << "\n<table role=\"table\">\n<thead>\n<tr>\n"
329
338
  header.zip(aligns) do |text, align|
330
339
  @res << '<th'
@@ -357,7 +366,7 @@ class RDoc::Markup::ToHtml < RDoc::Markup::Formatter
357
366
  # Generate a link to +url+ with content +text+. Handles the special cases
358
367
  # for img: and link: described under handle_regexp_HYPERLINK
359
368
 
360
- def gen_url url, text
369
+ def gen_url(url, text)
361
370
  scheme, url, id = parse_url url
362
371
 
363
372
  if %w[http https link].include?(scheme) and
@@ -431,7 +440,7 @@ class RDoc::Markup::ToHtml < RDoc::Markup::Formatter
431
440
  ##
432
441
  # Returns true if text is valid ruby syntax
433
442
 
434
- def parseable? text
443
+ def parseable?(text)
435
444
  verbose, $VERBOSE = $VERBOSE, nil
436
445
  catch(:valid) do
437
446
  eval("BEGIN { throw :valid, true }\n#{text}")
@@ -445,7 +454,7 @@ class RDoc::Markup::ToHtml < RDoc::Markup::Formatter
445
454
  ##
446
455
  # Converts +item+ to HTML using RDoc::Text#to_html
447
456
 
448
- def to_html item
457
+ def to_html(item)
449
458
  super convert_flow @am.flow item
450
459
  end
451
460
 
@@ -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 name, text = nil, code = true, rdoc_ref: false
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 target
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 target
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 url, text
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 name, text, code = true, rdoc_ref: false
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 = $'