rdoc 6.3.4.1 → 8.0.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.
Files changed (205) hide show
  1. checksums.yaml +4 -4
  2. data/CONTRIBUTING.md +195 -0
  3. data/History.rdoc +65 -63
  4. data/LEGAL.rdoc +7 -1
  5. data/LICENSE.rdoc +6 -0
  6. data/README.md +236 -0
  7. data/RI.md +842 -0
  8. data/TODO.rdoc +8 -7
  9. data/doc/markup_reference/markdown.md +659 -0
  10. data/doc/markup_reference/rdoc.rdoc +1169 -0
  11. data/exe/rdoc +0 -1
  12. data/lib/rdoc/{alias.rb → code_object/alias.rb} +4 -18
  13. data/lib/rdoc/{any_method.rb → code_object/any_method.rb} +50 -24
  14. data/lib/rdoc/{attr.rb → code_object/attr.rb} +16 -14
  15. data/lib/rdoc/{class_module.rb → code_object/class_module.rb} +225 -58
  16. data/lib/rdoc/{constant.rb → code_object/constant.rb} +44 -10
  17. data/lib/rdoc/code_object/context/section.rb +182 -0
  18. data/lib/rdoc/{context.rb → code_object/context.rb} +78 -106
  19. data/lib/rdoc/{extend.rb → code_object/extend.rb} +0 -1
  20. data/lib/rdoc/{include.rb → code_object/include.rb} +0 -1
  21. data/lib/rdoc/{method_attr.rb → code_object/method_attr.rb} +46 -48
  22. data/lib/rdoc/{mixin.rb → code_object/mixin.rb} +6 -4
  23. data/lib/rdoc/{normal_class.rb → code_object/normal_class.rb} +2 -3
  24. data/lib/rdoc/{normal_module.rb → code_object/normal_module.rb} +2 -3
  25. data/lib/rdoc/{require.rb → code_object/require.rb} +1 -2
  26. data/lib/rdoc/{single_class.rb → code_object/single_class.rb} +5 -1
  27. data/lib/rdoc/{top_level.rb → code_object/top_level.rb} +60 -63
  28. data/lib/rdoc/code_object.rb +11 -39
  29. data/lib/rdoc/code_objects.rb +1 -2
  30. data/lib/rdoc/comment.rb +202 -99
  31. data/lib/rdoc/cross_reference.rb +75 -62
  32. data/lib/rdoc/encoding.rb +8 -24
  33. data/lib/rdoc/erb_partial.rb +1 -2
  34. data/lib/rdoc/erbio.rb +3 -8
  35. data/lib/rdoc/generator/aliki.rb +200 -0
  36. data/lib/rdoc/generator/darkfish.rb +156 -122
  37. data/lib/rdoc/generator/json_index.rb +8 -24
  38. data/lib/rdoc/generator/markup.rb +70 -34
  39. data/lib/rdoc/generator/pot/message_extractor.rb +7 -7
  40. data/lib/rdoc/generator/pot/po.rb +1 -1
  41. data/lib/rdoc/generator/pot/po_entry.rb +8 -8
  42. data/lib/rdoc/generator/pot.rb +1 -5
  43. data/lib/rdoc/generator/ri.rb +1 -2
  44. data/lib/rdoc/generator/template/aliki/DESIGN.md +536 -0
  45. data/lib/rdoc/generator/template/aliki/_aside_toc.rhtml +8 -0
  46. data/lib/rdoc/generator/template/aliki/_footer.rhtml +23 -0
  47. data/lib/rdoc/generator/template/aliki/_head.rhtml +163 -0
  48. data/lib/rdoc/generator/template/aliki/_header.rhtml +56 -0
  49. data/lib/rdoc/generator/template/aliki/_icons.rhtml +208 -0
  50. data/lib/rdoc/generator/template/aliki/_sidebar_ancestors.rhtml +16 -0
  51. data/lib/rdoc/generator/template/aliki/_sidebar_classes.rhtml +15 -0
  52. data/lib/rdoc/generator/template/aliki/_sidebar_extends.rhtml +27 -0
  53. data/lib/rdoc/generator/template/aliki/_sidebar_includes.rhtml +27 -0
  54. data/lib/rdoc/generator/template/aliki/_sidebar_installed.rhtml +16 -0
  55. data/lib/rdoc/generator/template/aliki/_sidebar_methods.rhtml +41 -0
  56. data/lib/rdoc/generator/template/aliki/_sidebar_pages.rhtml +67 -0
  57. data/lib/rdoc/generator/template/aliki/_sidebar_search.rhtml +15 -0
  58. data/lib/rdoc/generator/template/aliki/_sidebar_sections.rhtml +21 -0
  59. data/lib/rdoc/generator/template/aliki/_sidebar_toggle.rhtml +3 -0
  60. data/lib/rdoc/generator/template/aliki/class.rhtml +230 -0
  61. data/lib/rdoc/generator/template/aliki/css/rdoc.css +2181 -0
  62. data/lib/rdoc/generator/template/aliki/index.rhtml +22 -0
  63. data/lib/rdoc/generator/template/aliki/js/aliki.js +513 -0
  64. data/lib/rdoc/generator/template/aliki/js/bash_highlighter.js +167 -0
  65. data/lib/rdoc/generator/template/aliki/js/c_highlighter.js +299 -0
  66. data/lib/rdoc/generator/template/aliki/js/search_controller.js +129 -0
  67. data/lib/rdoc/generator/template/aliki/js/search_navigation.js +105 -0
  68. data/lib/rdoc/generator/template/aliki/js/search_ranker.js +239 -0
  69. data/lib/rdoc/generator/template/aliki/js/theme-toggle.js +112 -0
  70. data/lib/rdoc/generator/template/aliki/page.rhtml +18 -0
  71. data/lib/rdoc/generator/template/aliki/servlet_not_found.rhtml +14 -0
  72. data/lib/rdoc/generator/template/aliki/servlet_root.rhtml +65 -0
  73. data/lib/rdoc/generator/template/darkfish/_footer.rhtml +3 -3
  74. data/lib/rdoc/generator/template/darkfish/_head.rhtml +35 -14
  75. data/lib/rdoc/generator/template/darkfish/_sidebar_classes.rhtml +1 -5
  76. data/lib/rdoc/generator/template/darkfish/_sidebar_extends.rhtml +11 -9
  77. data/lib/rdoc/generator/template/darkfish/_sidebar_includes.rhtml +11 -9
  78. data/lib/rdoc/generator/template/darkfish/_sidebar_installed.rhtml +7 -6
  79. data/lib/rdoc/generator/template/darkfish/_sidebar_methods.rhtml +20 -11
  80. data/lib/rdoc/generator/template/darkfish/_sidebar_pages.rhtml +25 -5
  81. data/lib/rdoc/generator/template/darkfish/_sidebar_parent.rhtml +4 -9
  82. data/lib/rdoc/generator/template/darkfish/_sidebar_search.rhtml +2 -1
  83. data/lib/rdoc/generator/template/darkfish/_sidebar_sections.rhtml +4 -4
  84. data/lib/rdoc/generator/template/darkfish/_sidebar_table_of_contents.rhtml +28 -7
  85. data/lib/rdoc/generator/template/darkfish/_sidebar_toggle.rhtml +3 -0
  86. data/lib/rdoc/generator/template/darkfish/class.rhtml +138 -90
  87. data/lib/rdoc/generator/template/darkfish/css/rdoc.css +420 -358
  88. data/lib/rdoc/generator/template/darkfish/fonts/SourceCodePro-Bold.ttf +0 -0
  89. data/lib/rdoc/generator/template/darkfish/fonts/SourceCodePro-Regular.ttf +0 -0
  90. data/lib/rdoc/generator/template/darkfish/index.rhtml +14 -12
  91. data/lib/rdoc/generator/template/darkfish/js/darkfish.js +59 -3
  92. data/lib/rdoc/generator/template/darkfish/js/search.js +15 -5
  93. data/lib/rdoc/generator/template/darkfish/page.rhtml +7 -6
  94. data/lib/rdoc/generator/template/darkfish/servlet_not_found.rhtml +12 -9
  95. data/lib/rdoc/generator/template/darkfish/servlet_root.rhtml +24 -21
  96. data/lib/rdoc/generator/template/darkfish/table_of_contents.rhtml +35 -21
  97. data/lib/rdoc/generator/template/json_index/js/navigation.js +8 -8
  98. data/lib/rdoc/generator/template/json_index/js/searcher.js +48 -6
  99. data/lib/rdoc/generator.rb +6 -5
  100. data/lib/rdoc/i18n/text.rb +3 -3
  101. data/lib/rdoc/i18n.rb +1 -1
  102. data/lib/rdoc/known_classes.rb +5 -4
  103. data/lib/rdoc/markdown/entities.rb +0 -1
  104. data/lib/rdoc/markdown/literals.kpeg +0 -2
  105. data/lib/rdoc/markdown/literals.rb +0 -1
  106. data/lib/rdoc/markdown.kpeg +140 -62
  107. data/lib/rdoc/markdown.rb +1015 -873
  108. data/lib/rdoc/markup/blank_line.rb +25 -24
  109. data/lib/rdoc/markup/block_quote.rb +1 -2
  110. data/lib/rdoc/markup/document.rb +10 -11
  111. data/lib/rdoc/markup/element.rb +21 -0
  112. data/lib/rdoc/markup/formatter.rb +134 -115
  113. data/lib/rdoc/markup/hard_break.rb +30 -28
  114. data/lib/rdoc/markup/heading.rb +163 -72
  115. data/lib/rdoc/markup/include.rb +3 -4
  116. data/lib/rdoc/markup/indented_paragraph.rb +4 -5
  117. data/lib/rdoc/markup/inline_parser.rb +312 -0
  118. data/lib/rdoc/markup/list.rb +6 -7
  119. data/lib/rdoc/markup/list_item.rb +6 -7
  120. data/lib/rdoc/markup/paragraph.rb +2 -3
  121. data/lib/rdoc/markup/parser.rb +29 -19
  122. data/lib/rdoc/markup/pre_process.rb +39 -18
  123. data/lib/rdoc/markup/raw.rb +52 -56
  124. data/lib/rdoc/markup/rule.rb +2 -3
  125. data/lib/rdoc/markup/table.rb +49 -32
  126. data/lib/rdoc/markup/to_ansi.rb +58 -8
  127. data/lib/rdoc/markup/to_bs.rb +47 -38
  128. data/lib/rdoc/markup/to_html.rb +343 -105
  129. data/lib/rdoc/markup/to_html_crossref.rb +143 -58
  130. data/lib/rdoc/markup/to_html_snippet.rb +78 -76
  131. data/lib/rdoc/markup/to_joined_paragraph.rb +3 -9
  132. data/lib/rdoc/markup/to_label.rb +34 -25
  133. data/lib/rdoc/markup/to_markdown.rb +74 -51
  134. data/lib/rdoc/markup/to_rdoc.rb +141 -82
  135. data/lib/rdoc/markup/to_table_of_contents.rb +4 -5
  136. data/lib/rdoc/markup/to_test.rb +10 -3
  137. data/lib/rdoc/markup/to_tt_only.rb +17 -31
  138. data/lib/rdoc/markup/verbatim.rb +5 -6
  139. data/lib/rdoc/markup.rb +59 -707
  140. data/lib/rdoc/options.rb +228 -101
  141. data/lib/rdoc/parser/c.rb +186 -184
  142. data/lib/rdoc/parser/changelog.rb +57 -13
  143. data/lib/rdoc/parser/markdown.rb +0 -2
  144. data/lib/rdoc/parser/rbs.rb +275 -0
  145. data/lib/rdoc/parser/rd.rb +0 -1
  146. data/lib/rdoc/parser/ruby.rb +963 -2024
  147. data/lib/rdoc/parser/ruby_colorizer.rb +253 -0
  148. data/lib/rdoc/parser/simple.rb +6 -23
  149. data/lib/rdoc/parser/text.rb +0 -1
  150. data/lib/rdoc/parser.rb +35 -14
  151. data/lib/rdoc/rbs_helper.rb +186 -0
  152. data/lib/rdoc/rd/block_parser.rb +659 -11
  153. data/lib/rdoc/rd/block_parser.ry +13 -9
  154. data/lib/rdoc/rd/inline.rb +4 -5
  155. data/lib/rdoc/rd/inline_parser.rb +646 -2
  156. data/lib/rdoc/rd.rb +4 -5
  157. data/lib/rdoc/rdoc.rb +234 -90
  158. data/lib/rdoc/ri/driver.rb +172 -172
  159. data/lib/rdoc/ri/paths.rb +3 -3
  160. data/lib/rdoc/{servlet.rb → ri/servlet.rb} +28 -27
  161. data/lib/rdoc/ri/store.rb +0 -1
  162. data/lib/rdoc/ri/task.rb +3 -3
  163. data/lib/rdoc/ri.rb +5 -5
  164. data/lib/rdoc/rubygems_hook.rb +106 -25
  165. data/lib/rdoc/server.rb +460 -0
  166. data/lib/rdoc/stats/normal.rb +1 -1
  167. data/lib/rdoc/stats/quiet.rb +1 -2
  168. data/lib/rdoc/stats/verbose.rb +3 -5
  169. data/lib/rdoc/stats.rb +158 -136
  170. data/lib/rdoc/store.rb +267 -48
  171. data/lib/rdoc/task.rb +54 -28
  172. data/lib/rdoc/text.rb +60 -120
  173. data/lib/rdoc/token_stream.rb +30 -45
  174. data/lib/rdoc/tom_doc.rb +9 -15
  175. data/lib/rdoc/version.rb +3 -1
  176. data/lib/rdoc.rb +90 -52
  177. data/lib/rubygems_plugin.rb +14 -0
  178. data/man/ri.1 +2 -0
  179. data/rdoc-logo.svg +43 -0
  180. data/rdoc.gemspec +25 -200
  181. metadata +120 -53
  182. data/CONTRIBUTING.rdoc +0 -220
  183. data/ExampleMarkdown.md +0 -37
  184. data/ExampleRDoc.rdoc +0 -208
  185. data/Gemfile +0 -12
  186. data/README.rdoc +0 -129
  187. data/RI.rdoc +0 -57
  188. data/Rakefile +0 -101
  189. data/bin/console +0 -7
  190. data/bin/setup +0 -6
  191. data/lib/rdoc/anon_class.rb +0 -11
  192. data/lib/rdoc/context/section.rb +0 -232
  193. data/lib/rdoc/generator/template/darkfish/.document +0 -0
  194. data/lib/rdoc/generator/template/darkfish/_sidebar_VCS_info.rhtml +0 -19
  195. data/lib/rdoc/generator/template/darkfish/_sidebar_in_files.rhtml +0 -9
  196. data/lib/rdoc/generator/template/json_index/.document +0 -1
  197. data/lib/rdoc/ghost_method.rb +0 -7
  198. data/lib/rdoc/markup/attr_changer.rb +0 -23
  199. data/lib/rdoc/markup/attr_span.rb +0 -36
  200. data/lib/rdoc/markup/attribute_manager.rb +0 -409
  201. data/lib/rdoc/markup/attributes.rb +0 -71
  202. data/lib/rdoc/markup/regexp_handling.rb +0 -41
  203. data/lib/rdoc/meta_method.rb +0 -7
  204. data/lib/rdoc/parser/ripper_state_lex.rb +0 -590
  205. data/lib/rdoc/parser/ruby_tools.rb +0 -167
@@ -24,7 +24,7 @@ class RDoc::Markup::ListItem
24
24
  ##
25
25
  # Creates a new ListItem with an optional +label+ containing +parts+
26
26
 
27
- def initialize label = nil, *parts
27
+ def initialize(label = nil, *parts)
28
28
  @label = label
29
29
  @parts = []
30
30
  @parts.concat parts
@@ -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
@@ -92,9 +92,8 @@ class RDoc::Markup::ListItem
92
92
  ##
93
93
  # Adds +parts+ to the ListItem
94
94
 
95
- def push *parts
95
+ def push(*parts)
96
96
  @parts.concat parts
97
97
  end
98
98
 
99
99
  end
100
-
@@ -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
@@ -26,4 +26,3 @@ class RDoc::Markup::Paragraph < RDoc::Markup::Raw
26
26
  end
27
27
 
28
28
  end
29
-
@@ -11,7 +11,7 @@ require 'strscan'
11
11
  # The parser only handles the block-level constructs Paragraph, List,
12
12
  # ListItem, Heading, Verbatim, BlankLine, Rule and BlockQuote.
13
13
  # Inline markup such as <tt>\+blah\+</tt> is handled separately by
14
- # RDoc::Markup::AttributeManager.
14
+ # RDoc::Markup::InlineParser.
15
15
  #
16
16
  # To see what markup the Parser implements read RDoc. To see how to use
17
17
  # RDoc markup to format text in your program read RDoc::Markup.
@@ -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
@@ -218,7 +218,7 @@ class RDoc::Markup::Parser
218
218
 
219
219
  break if peek_token.first == :BREAK
220
220
 
221
- data << ' ' if skip :NEWLINE
221
+ data << ' ' if skip :NEWLINE and /#{SPACE_SEPARATED_LETTER_CLASS}\z/o.match?(data)
222
222
  else
223
223
  unget
224
224
  break
@@ -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
 
@@ -287,6 +287,12 @@ class RDoc::Markup::Parser
287
287
  line << ' ' * indent
288
288
  when :BREAK, :TEXT then
289
289
  line << data
290
+ when :BLOCKQUOTE then
291
+ line << '>>>'
292
+ peek_type, _, peek_column = peek_token
293
+ if peek_type != :NEWLINE and peek_column
294
+ line << ' ' * (peek_column - column - 3)
295
+ end
290
296
  else # *LIST_TOKENS
291
297
  list_marker = case type
292
298
  when :BULLET then data
@@ -333,7 +339,7 @@ class RDoc::Markup::Parser
333
339
  #
334
340
  # Returns +parent+.
335
341
 
336
- def parse parent, indent = 0
342
+ def parse(parent, indent = 0)
337
343
  p :parse_start => indent if @debug
338
344
 
339
345
  until @tokens.empty? do
@@ -372,11 +378,8 @@ class RDoc::Markup::Parser
372
378
  unget
373
379
  parse_text parent, indent
374
380
  when :BLOCKQUOTE then
375
- type, _, column = get
376
- if type == :NEWLINE
377
- type, _, column = get
378
- end
379
- unget if type
381
+ nil while (type, = get; type) and type != :NEWLINE
382
+ _, _, column, = peek_token
380
383
  bq = RDoc::Markup::BlockQuote.new
381
384
  p :blockquote_start => [data, column] if @debug
382
385
  parse bq, column
@@ -400,7 +403,7 @@ class RDoc::Markup::Parser
400
403
  ##
401
404
  # Small hook that is overridden by RDoc::TomDoc
402
405
 
403
- def parse_text parent, indent # :nodoc:
406
+ def parse_text(parent, indent) # :nodoc:
404
407
  parent << build_paragraph(indent)
405
408
  end
406
409
 
@@ -417,6 +420,8 @@ class RDoc::Markup::Parser
417
420
  # A simple wrapper of StringScanner that is aware of the current column and lineno
418
421
 
419
422
  class MyStringScanner
423
+ # :stopdoc:
424
+
420
425
  def initialize(input)
421
426
  @line = @column = 0
422
427
  @s = StringScanner.new input
@@ -453,12 +458,14 @@ class RDoc::Markup::Parser
453
458
  def [](i)
454
459
  @s[i]
455
460
  end
461
+
462
+ #:startdoc:
456
463
  end
457
464
 
458
465
  ##
459
466
  # Creates the StringScanner
460
467
 
461
- def setup_scanner input
468
+ def setup_scanner(input)
462
469
  @s = MyStringScanner.new input
463
470
  end
464
471
 
@@ -467,7 +474,7 @@ class RDoc::Markup::Parser
467
474
  #
468
475
  # Optionally raises an error if the next token is not of the expected type.
469
476
 
470
- def skip token_type, error = true
477
+ def skip(token_type, error = true)
471
478
  type, = get
472
479
  return unless type # end of stream
473
480
  return @current_token if token_type == type
@@ -478,7 +485,7 @@ class RDoc::Markup::Parser
478
485
  ##
479
486
  # Turns text +input+ into a stream of tokens
480
487
 
481
- def tokenize input
488
+ def tokenize(input)
482
489
  setup_scanner input
483
490
 
484
491
  until @s.eos? do
@@ -544,7 +551,10 @@ class RDoc::Markup::Parser
544
551
  [:NOTE, @s[1], *pos]
545
552
  # >>> followed by end of line => :BLOCKQUOTE
546
553
  when @s.scan(/>>> *(\w+)?$/) then
547
- [:BLOCKQUOTE, @s[1], *pos]
554
+ if word = @s[1]
555
+ @s.unscan(word)
556
+ end
557
+ [:BLOCKQUOTE, word, *pos]
548
558
  # anything else: :TEXT
549
559
  else
550
560
  @s.scan(/(.*?)( )?\r?$/)
@@ -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
  if RDoc::Comment === text then
101
101
  comment = text
102
102
  text = text.text
@@ -105,7 +105,7 @@ class RDoc::Markup::PreProcess
105
105
  # regexp helper (square brackets for optional)
106
106
  # $1 $2 $3 $4 $5
107
107
  # [prefix][\]:directive:[spaces][param]newline
108
- text = text.gsub(/^([ \t]*(?:#|\/?\*)?[ \t]*)(\\?):(\w+):([ \t]*)(.+)?(\r?\n|$)/) do
108
+ text = text.gsub(/^([ \t]*(?:#|\/?\*)?[ \t]*)(\\?):([\w-]+):([ \t]*)(.+)?(\r?\n|$)/) do
109
109
  # skip something like ':toto::'
110
110
  next $& if $4.empty? and $5 and $5[0, 1] == ':'
111
111
 
@@ -119,7 +119,6 @@ class RDoc::Markup::PreProcess
119
119
  comment.format = $5.downcase
120
120
  next "#{$1.strip}\n"
121
121
  end
122
-
123
122
  handle_directive $1, $3, $5, code_object, text.encoding, &block
124
123
  end
125
124
 
@@ -129,11 +128,39 @@ class RDoc::Markup::PreProcess
129
128
  comment = text
130
129
  end
131
130
 
131
+ run_post_processes(comment, code_object)
132
+
133
+ text
134
+ end
135
+
136
+ # Apply directives to a code object
137
+
138
+ def run_pre_processes(comment_text, code_object, start_line_no, type)
139
+ comment_text, directives = parse_comment(comment_text, start_line_no, type)
140
+ directives.each do |directive, (param, line_no)|
141
+ handle_directive('', directive, param, code_object)
142
+ end
143
+ if code_object.is_a?(RDoc::AnyMethod) && (call_seq, = directives['call-seq']) && call_seq
144
+ code_object.call_seq = call_seq.lines.map(&:chomp).reject(&:empty?).join("\n")
145
+ end
146
+ format, = directives['markup']
147
+ [comment_text, format]
148
+ end
149
+
150
+ # Perform post preocesses to a code object
151
+
152
+ def run_post_processes(comment, code_object)
132
153
  self.class.post_processors.each do |handler|
133
154
  handler.call comment, code_object
134
155
  end
156
+ end
135
157
 
136
- text
158
+ # Parse comment and return [normalized_comment_text, directives_hash]
159
+
160
+ def parse_comment(text, line_no, type)
161
+ RDoc::Comment.parse(text, @input_file_name, line_no, type) do |filename, prefix_indent|
162
+ include_file(filename, prefix_indent, text.encoding)
163
+ end
137
164
  end
138
165
 
139
166
  ##
@@ -147,8 +174,8 @@ class RDoc::Markup::PreProcess
147
174
  #--
148
175
  # When 1.8.7 support is ditched prefix can be defaulted to ''
149
176
 
150
- def handle_directive prefix, directive, param, code_object = nil,
151
- encoding = nil
177
+ def handle_directive(prefix, directive, param, code_object = nil,
178
+ encoding = nil)
152
179
  blankline = "#{prefix.strip}\n"
153
180
  directive = directive.downcase
154
181
 
@@ -163,6 +190,8 @@ class RDoc::Markup::PreProcess
163
190
  if RDoc::Context === code_object then
164
191
  section = code_object.add_section param
165
192
  code_object.temporary_section = section
193
+ elsif RDoc::AnyMethod === code_object then
194
+ code_object.section_title = param
166
195
  end
167
196
 
168
197
  blankline # ignore category if we're not on an RDoc::Context
@@ -180,10 +209,6 @@ class RDoc::Markup::PreProcess
180
209
  when 'include' then
181
210
  filename = param.split(' ', 2).first
182
211
  include_file filename, prefix, encoding
183
- when 'main' then
184
- @options.main_page = param if @options.respond_to? :main_page
185
-
186
- blankline
187
212
  when 'nodoc' then
188
213
  return blankline unless code_object
189
214
  code_object.document_self = nil # notify nodoc
@@ -208,17 +233,13 @@ class RDoc::Markup::PreProcess
208
233
 
209
234
  code_object.stop_doc
210
235
 
211
- blankline
212
- when 'title' then
213
- @options.default_title = param if @options.respond_to? :default_title=
214
-
215
236
  blankline
216
237
  when 'yield', 'yields' then
217
238
  return blankline unless code_object
218
239
  # remove parameter &block
219
240
  code_object.params = code_object.params.sub(/,?\s*&\w+/, '') if code_object.params
220
241
 
221
- code_object.block_params = param
242
+ code_object.block_params = param || ''
222
243
 
223
244
  blankline
224
245
  else
@@ -257,7 +278,7 @@ class RDoc::Markup::PreProcess
257
278
  # TODO shift left the whole file content in that case
258
279
  # TODO comment stop/start #-- and #++ in included file must be processed here
259
280
 
260
- def include_file name, indent, encoding
281
+ def include_file(name, indent, encoding)
261
282
  full_name = find_include_file name
262
283
 
263
284
  unless full_name then
@@ -1,70 +1,66 @@
1
1
  # frozen_string_literal: true
2
- ##
3
- # A section of text that is added to the output document as-is
4
2
 
5
- class RDoc::Markup::Raw
6
-
7
- ##
8
- # The component parts of the list
9
-
10
- attr_reader :parts
11
-
12
- ##
13
- # Creates a new Raw containing +parts+
14
-
15
- def initialize *parts
16
- @parts = []
17
- @parts.concat parts
18
- end
19
-
20
- ##
21
- # Appends +text+
3
+ module RDoc
4
+ class Markup
5
+ # A section of text that is added to the output document as-is
6
+ class Raw
7
+ # The component parts of the list
8
+ #: Array[String]
9
+ attr_reader :parts
10
+
11
+ # Creates a new Raw containing +parts+
12
+ #: (*String) -> void
13
+ def initialize(*parts)
14
+ @parts = parts
15
+ end
22
16
 
23
- def << text
24
- @parts << text
25
- end
17
+ # Appends +text+
18
+ #: (String) -> void
19
+ def <<(text)
20
+ @parts << text
21
+ end
26
22
 
27
- def == other # :nodoc:
28
- self.class == other.class and @parts == other.parts
29
- end
23
+ #: (top) -> bool
24
+ def ==(other) # :nodoc:
25
+ self.class == other.class && @parts == other.parts
26
+ end
30
27
 
31
- ##
32
- # Calls #accept_raw+ on +visitor+
28
+ # Calls #accept_raw+ on +visitor+
29
+ # @override
30
+ #: (untyped) -> void
31
+ def accept(visitor)
32
+ visitor.accept_raw(self)
33
+ end
33
34
 
34
- def accept visitor
35
- visitor.accept_raw self
36
- end
35
+ # Appends +other+'s parts
36
+ #: (Raw) -> void
37
+ def merge(other)
38
+ @parts.concat(other.parts)
39
+ end
37
40
 
38
- ##
39
- # Appends +other+'s parts
41
+ # @override
42
+ #: (PP) -> void
43
+ def pretty_print(q) # :nodoc:
44
+ self.class.name =~ /.*::(\w{1,4})/i
40
45
 
41
- def merge other
42
- @parts.concat other.parts
43
- end
46
+ q.group(2, "[#{$1.downcase}: ", ']') do
47
+ q.seplist(@parts) do |part|
48
+ q.pp(part)
49
+ end
50
+ end
51
+ end
44
52
 
45
- def pretty_print q # :nodoc:
46
- self.class.name =~ /.*::(\w{1,4})/i
53
+ # Appends +texts+ onto this Paragraph
54
+ #: (*String) -> void
55
+ def push(*texts)
56
+ self.parts.concat(texts)
57
+ end
47
58
 
48
- q.group 2, "[#{$1.downcase}: ", ']' do
49
- q.seplist @parts do |part|
50
- q.pp part
59
+ # The raw text
60
+ #: () -> String
61
+ def text
62
+ @parts.join(" ")
51
63
  end
52
64
  end
53
65
  end
54
-
55
- ##
56
- # Appends +texts+ onto this Paragraph
57
-
58
- def push *texts
59
- self.parts.concat texts
60
- end
61
-
62
- ##
63
- # The raw text
64
-
65
- def text
66
- @parts.join ' '
67
- end
68
-
69
66
  end
70
-
@@ -7,15 +7,14 @@ 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
18
18
  end
19
19
 
20
20
  end
21
-
@@ -1,43 +1,60 @@
1
1
  # frozen_string_literal: true
2
- ##
3
- # A section of table
4
2
 
5
- class RDoc::Markup::Table
6
- attr_accessor :header, :align, :body
3
+ module RDoc
4
+ class Markup
5
+ # A section of table
6
+ class Table < Element
7
+ # Headers of each column
8
+ #: Array[String]
9
+ attr_accessor :header
7
10
 
8
- def initialize header, align, body
9
- @header, @align, @body = header, align, body
10
- end
11
+ # Alignments of each column
12
+ #: Array[Symbol?]
13
+ attr_accessor :align
11
14
 
12
- def == other
13
- self.class == other.class and
14
- @header == other.header and
15
- @align == other.align and
16
- @body == other.body
17
- end
15
+ # Body texts of each column
16
+ #: Array[String]
17
+ attr_accessor :body
18
18
 
19
- def accept visitor
20
- visitor.accept_table @header, @body, @align
21
- end
19
+ #: (Array[String], Array[Symbol?], Array[String]) -> void
20
+ def initialize(header, align, body)
21
+ @header, @align, @body = header, align, body
22
+ end
22
23
 
23
- def pretty_print q # :nodoc:
24
- q.group 2, '[Table: ', ']' do
25
- q.group 2, '[Head: ', ']' do
26
- q.seplist @header.zip(@align) do |text, align|
27
- q.pp text
28
- if align
29
- q.text ":"
30
- q.breakable
31
- q.text align.to_s
32
- end
33
- end
24
+ #: (Object) -> bool
25
+ def ==(other)
26
+ self.class == other.class && @header == other.header &&
27
+ @align == other.align && @body == other.body
34
28
  end
35
- q.breakable
36
- q.group 2, '[Body: ', ']' do
37
- q.seplist @body do |body|
38
- q.group 2, '[', ']' do
39
- q.seplist body do |text|
29
+
30
+ # @override
31
+ #: (untyped) -> void
32
+ def accept(visitor)
33
+ visitor.accept_table(@header, @body, @align)
34
+ end
35
+
36
+ # @override
37
+ #: (untyped) -> String
38
+ def pretty_print(q)
39
+ q.group 2, '[Table: ', ']' do
40
+ q.group 2, '[Head: ', ']' do
41
+ q.seplist @header.zip(@align) do |text, align|
40
42
  q.pp text
43
+ if align
44
+ q.text ":"
45
+ q.breakable
46
+ q.text align.to_s
47
+ end
48
+ end
49
+ end
50
+ q.breakable
51
+ q.group 2, '[Body: ', ']' do
52
+ q.seplist @body do |body|
53
+ q.group 2, '[', ']' do
54
+ q.seplist body do |text|
55
+ q.pp text
56
+ end
57
+ end
41
58
  end
42
59
  end
43
60
  end