rdoc 5.1.0 → 6.13.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.
- checksums.yaml +5 -5
- data/CONTRIBUTING.rdoc +5 -6
- data/ExampleMarkdown.md +2 -0
- data/ExampleRDoc.rdoc +2 -0
- data/History.rdoc +68 -66
- data/LEGAL.rdoc +1 -1
- data/LICENSE.rdoc +2 -0
- data/README.rdoc +18 -6
- data/RI.md +842 -0
- data/TODO.rdoc +8 -7
- data/exe/rdoc +0 -1
- data/lib/rdoc/{alias.rb → code_object/alias.rb} +4 -12
- data/lib/rdoc/{anon_class.rb → code_object/anon_class.rb} +1 -2
- data/lib/rdoc/{any_method.rb → code_object/any_method.rb} +83 -26
- data/lib/rdoc/{attr.rb → code_object/attr.rb} +5 -9
- data/lib/rdoc/{class_module.rb → code_object/class_module.rb} +112 -24
- data/lib/rdoc/{constant.rb → code_object/constant.rb} +4 -5
- data/lib/rdoc/{context → code_object/context}/section.rb +13 -83
- data/lib/rdoc/{context.rb → code_object/context.rb} +69 -70
- data/lib/rdoc/{extend.rb → code_object/extend.rb} +1 -2
- data/lib/rdoc/{ghost_method.rb → code_object/ghost_method.rb} +1 -2
- data/lib/rdoc/{include.rb → code_object/include.rb} +1 -2
- data/lib/rdoc/{meta_method.rb → code_object/meta_method.rb} +1 -2
- data/lib/rdoc/{method_attr.rb → code_object/method_attr.rb} +22 -31
- data/lib/rdoc/{mixin.rb → code_object/mixin.rb} +1 -2
- data/lib/rdoc/{normal_class.rb → code_object/normal_class.rb} +4 -5
- data/lib/rdoc/{normal_module.rb → code_object/normal_module.rb} +2 -3
- data/lib/rdoc/{require.rb → code_object/require.rb} +2 -3
- data/lib/rdoc/{single_class.rb → code_object/single_class.rb} +6 -2
- data/lib/rdoc/{top_level.rb → code_object/top_level.rb} +22 -32
- data/lib/rdoc/code_object.rb +8 -41
- data/lib/rdoc/code_objects.rb +2 -3
- data/lib/rdoc/comment.rb +48 -41
- data/lib/rdoc/cross_reference.rb +77 -33
- data/lib/rdoc/encoding.rb +50 -38
- data/lib/rdoc/erb_partial.rb +2 -3
- data/lib/rdoc/erbio.rb +4 -5
- data/lib/rdoc/generator/darkfish.rb +178 -125
- data/lib/rdoc/generator/json_index.rb +9 -22
- data/lib/rdoc/generator/markup.rb +6 -17
- data/lib/rdoc/generator/pot/message_extractor.rb +4 -4
- data/lib/rdoc/generator/pot/po.rb +3 -3
- data/lib/rdoc/generator/pot/po_entry.rb +12 -12
- data/lib/rdoc/generator/pot.rb +4 -8
- data/lib/rdoc/generator/ri.rb +1 -2
- data/lib/rdoc/generator/template/darkfish/_footer.rhtml +2 -2
- data/lib/rdoc/generator/template/darkfish/_head.rhtml +35 -12
- data/lib/rdoc/generator/template/darkfish/_sidebar_classes.rhtml +1 -5
- data/lib/rdoc/generator/template/darkfish/_sidebar_extends.rhtml +7 -7
- data/lib/rdoc/generator/template/darkfish/_sidebar_includes.rhtml +7 -7
- data/lib/rdoc/generator/template/darkfish/_sidebar_installed.rhtml +6 -6
- data/lib/rdoc/generator/template/darkfish/_sidebar_methods.rhtml +19 -10
- data/lib/rdoc/generator/template/darkfish/_sidebar_pages.rhtml +26 -6
- data/lib/rdoc/generator/template/darkfish/_sidebar_parent.rhtml +4 -9
- data/lib/rdoc/generator/template/darkfish/_sidebar_search.rhtml +1 -1
- data/lib/rdoc/generator/template/darkfish/_sidebar_sections.rhtml +4 -4
- data/lib/rdoc/generator/template/darkfish/_sidebar_table_of_contents.rhtml +27 -6
- data/lib/rdoc/generator/template/darkfish/_sidebar_toggle.rhtml +3 -0
- data/lib/rdoc/generator/template/darkfish/class.rhtml +125 -78
- data/lib/rdoc/generator/template/darkfish/css/rdoc.css +430 -339
- 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/index.rhtml +13 -13
- data/lib/rdoc/generator/template/darkfish/js/darkfish.js +51 -92
- data/lib/rdoc/generator/template/darkfish/js/search.js +35 -34
- data/lib/rdoc/generator/template/darkfish/page.rhtml +5 -5
- data/lib/rdoc/generator/template/darkfish/servlet_not_found.rhtml +10 -8
- data/lib/rdoc/generator/template/darkfish/servlet_root.rhtml +20 -18
- data/lib/rdoc/generator/template/darkfish/table_of_contents.rhtml +32 -20
- data/lib/rdoc/generator/template/json_index/js/navigation.js +12 -49
- data/lib/rdoc/generator/template/json_index/js/searcher.js +6 -6
- data/lib/rdoc/generator.rb +6 -6
- data/lib/rdoc/i18n/locale.rb +1 -1
- data/lib/rdoc/i18n/text.rb +5 -5
- data/lib/rdoc/i18n.rb +4 -4
- data/lib/rdoc/known_classes.rb +6 -5
- data/lib/rdoc/markdown/entities.rb +1 -2
- data/lib/rdoc/markdown/literals.kpeg +1 -2
- data/lib/rdoc/markdown/literals.rb +99 -50
- data/lib/rdoc/markdown.kpeg +115 -58
- data/lib/rdoc/markdown.rb +1584 -902
- data/lib/rdoc/markup/attr_changer.rb +1 -2
- data/lib/rdoc/markup/attr_span.rb +9 -4
- data/lib/rdoc/markup/attribute_manager.rb +118 -57
- data/lib/rdoc/markup/attributes.rb +7 -8
- data/lib/rdoc/markup/blank_line.rb +1 -2
- data/lib/rdoc/markup/block_quote.rb +1 -2
- data/lib/rdoc/markup/document.rb +1 -2
- data/lib/rdoc/markup/formatter.rb +44 -37
- data/lib/rdoc/markup/hard_break.rb +1 -2
- data/lib/rdoc/markup/heading.rb +11 -6
- data/lib/rdoc/markup/include.rb +1 -2
- data/lib/rdoc/markup/indented_paragraph.rb +1 -2
- data/lib/rdoc/markup/list.rb +1 -2
- data/lib/rdoc/markup/list_item.rb +1 -2
- data/lib/rdoc/markup/paragraph.rb +1 -2
- data/lib/rdoc/markup/parser.rb +90 -48
- data/lib/rdoc/markup/pre_process.rb +38 -11
- data/lib/rdoc/markup/raw.rb +1 -2
- data/lib/rdoc/markup/regexp_handling.rb +40 -0
- data/lib/rdoc/markup/rule.rb +1 -2
- data/lib/rdoc/markup/table.rb +56 -0
- data/lib/rdoc/markup/to_ansi.rb +1 -2
- data/lib/rdoc/markup/to_bs.rb +30 -5
- data/lib/rdoc/markup/to_html.rb +95 -40
- data/lib/rdoc/markup/to_html_crossref.rb +108 -43
- data/lib/rdoc/markup/to_html_snippet.rb +13 -11
- data/lib/rdoc/markup/to_joined_paragraph.rb +6 -32
- data/lib/rdoc/markup/to_label.rb +11 -12
- data/lib/rdoc/markup/to_markdown.rb +13 -14
- data/lib/rdoc/markup/to_rdoc.rb +49 -31
- data/lib/rdoc/markup/to_table_of_contents.rb +2 -2
- data/lib/rdoc/markup/to_test.rb +1 -2
- data/lib/rdoc/markup/to_tt_only.rb +3 -4
- data/lib/rdoc/markup/verbatim.rb +1 -2
- data/lib/rdoc/markup.rb +64 -694
- data/lib/rdoc/options.rb +226 -44
- data/lib/rdoc/parser/c.rb +231 -246
- data/lib/rdoc/parser/changelog.rb +169 -23
- data/lib/rdoc/parser/markdown.rb +1 -3
- data/lib/rdoc/parser/prism_ruby.rb +1092 -0
- data/lib/rdoc/parser/rd.rb +1 -2
- data/lib/rdoc/parser/ripper_state_lex.rb +302 -0
- data/lib/rdoc/parser/ruby.rb +695 -478
- data/lib/rdoc/parser/ruby_tools.rb +33 -36
- data/lib/rdoc/parser/simple.rb +4 -4
- data/lib/rdoc/parser/text.rb +1 -2
- data/lib/rdoc/parser.rb +37 -42
- data/lib/rdoc/rd/block_parser.rb +708 -57
- data/lib/rdoc/rd/block_parser.ry +15 -11
- data/lib/rdoc/rd/inline.rb +5 -6
- data/lib/rdoc/rd/inline_parser.rb +787 -140
- data/lib/rdoc/rd/inline_parser.ry +1 -1
- data/lib/rdoc/rd.rb +4 -5
- data/lib/rdoc/rdoc.rb +72 -87
- data/lib/rdoc/ri/driver.rb +236 -152
- data/lib/rdoc/ri/formatter.rb +1 -1
- data/lib/rdoc/ri/paths.rb +4 -18
- data/lib/rdoc/ri/store.rb +1 -2
- data/lib/rdoc/ri/task.rb +2 -2
- data/lib/rdoc/ri.rb +5 -6
- data/lib/rdoc/rubygems_hook.rb +98 -20
- data/lib/rdoc/servlet.rb +30 -20
- data/lib/rdoc/stats/normal.rb +24 -18
- data/lib/rdoc/stats/quiet.rb +1 -2
- data/lib/rdoc/stats/verbose.rb +1 -3
- data/lib/rdoc/stats.rb +6 -7
- data/lib/rdoc/store.rb +84 -55
- data/lib/rdoc/task.rb +35 -10
- data/lib/rdoc/text.rb +40 -27
- data/lib/rdoc/token_stream.rb +56 -34
- data/lib/rdoc/tom_doc.rb +18 -19
- data/lib/rdoc/version.rb +10 -0
- data/lib/rdoc.rb +80 -56
- data/lib/rubygems_plugin.rb +23 -0
- data/man/ri.1 +247 -0
- metadata +45 -99
- data/.document +0 -5
- data/.gitignore +0 -13
- data/.travis.yml +0 -24
- data/Gemfile +0 -3
- data/RI.rdoc +0 -57
- data/Rakefile +0 -133
- data/bin/console +0 -7
- data/bin/setup +0 -6
- data/lib/gauntlet_rdoc.rb +0 -82
- data/lib/rdoc/generator/template/darkfish/.document +0 -0
- 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/generator/template/darkfish/js/jquery.js +0 -4
- data/lib/rdoc/generator/template/json_index/.document +0 -1
- data/lib/rdoc/markup/formatter_test_case.rb +0 -764
- data/lib/rdoc/markup/inline.rb +0 -2
- data/lib/rdoc/markup/special.rb +0 -41
- data/lib/rdoc/markup/text_formatter_test_case.rb +0 -115
- data/lib/rdoc/ruby_lex.rb +0 -1367
- data/lib/rdoc/ruby_token.rb +0 -461
- data/lib/rdoc/test_case.rb +0 -204
- data/rdoc.gemspec +0 -57
data/lib/rdoc/markup/parser.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# frozen_string_literal:
|
1
|
+
# frozen_string_literal: true
|
2
2
|
require 'strscan'
|
3
3
|
|
4
4
|
##
|
@@ -9,8 +9,9 @@ require 'strscan'
|
|
9
9
|
# RDoc::Markup::ToHTML.
|
10
10
|
#
|
11
11
|
# The parser only handles the block-level constructs Paragraph, List,
|
12
|
-
# ListItem, Heading, Verbatim, BlankLine and
|
13
|
-
# <tt>\+blah\+</tt> is handled separately by
|
12
|
+
# ListItem, Heading, Verbatim, BlankLine, Rule and BlockQuote.
|
13
|
+
# Inline markup such as <tt>\+blah\+</tt> is handled separately by
|
14
|
+
# RDoc::Markup::AttributeManager.
|
14
15
|
#
|
15
16
|
# To see what markup the Parser implements read RDoc. To see how to use
|
16
17
|
# RDoc markup to format text in your program read RDoc::Markup.
|
@@ -79,10 +80,6 @@ class RDoc::Markup::Parser
|
|
79
80
|
@binary_input = nil
|
80
81
|
@current_token = nil
|
81
82
|
@debug = false
|
82
|
-
@input = nil
|
83
|
-
@input_encoding = nil
|
84
|
-
@line = 0
|
85
|
-
@line_pos = 0
|
86
83
|
@s = nil
|
87
84
|
@tokens = []
|
88
85
|
end
|
@@ -221,7 +218,7 @@ class RDoc::Markup::Parser
|
|
221
218
|
|
222
219
|
break if peek_token.first == :BREAK
|
223
220
|
|
224
|
-
data << ' ' if skip :NEWLINE
|
221
|
+
data << ' ' if skip :NEWLINE and /#{SPACE_SEPARATED_LETTER_CLASS}\z/o.match?(data)
|
225
222
|
else
|
226
223
|
unget
|
227
224
|
break
|
@@ -249,7 +246,7 @@ class RDoc::Markup::Parser
|
|
249
246
|
|
250
247
|
min_indent = nil
|
251
248
|
generate_leading_spaces = true
|
252
|
-
line = ''
|
249
|
+
line = ''.dup
|
253
250
|
|
254
251
|
until @tokens.empty? do
|
255
252
|
type, data, column, = get
|
@@ -257,7 +254,7 @@ class RDoc::Markup::Parser
|
|
257
254
|
if type == :NEWLINE then
|
258
255
|
line << data
|
259
256
|
verbatim << line
|
260
|
-
line = ''
|
257
|
+
line = ''.dup
|
261
258
|
generate_leading_spaces = true
|
262
259
|
next
|
263
260
|
end
|
@@ -290,6 +287,12 @@ class RDoc::Markup::Parser
|
|
290
287
|
line << ' ' * indent
|
291
288
|
when :BREAK, :TEXT then
|
292
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
|
293
296
|
else # *LIST_TOKENS
|
294
297
|
list_marker = case type
|
295
298
|
when :BULLET then data
|
@@ -318,13 +321,6 @@ class RDoc::Markup::Parser
|
|
318
321
|
verbatim
|
319
322
|
end
|
320
323
|
|
321
|
-
##
|
322
|
-
# The character offset for the input string at the given +byte_offset+
|
323
|
-
|
324
|
-
def char_pos byte_offset
|
325
|
-
@input.byteslice(0, byte_offset).length
|
326
|
-
end
|
327
|
-
|
328
324
|
##
|
329
325
|
# Pulls the next token from the stream.
|
330
326
|
|
@@ -381,6 +377,14 @@ class RDoc::Markup::Parser
|
|
381
377
|
when :TEXT then
|
382
378
|
unget
|
383
379
|
parse_text parent, indent
|
380
|
+
when :BLOCKQUOTE then
|
381
|
+
nil while (type, = get; type) and type != :NEWLINE
|
382
|
+
_, _, column, = peek_token
|
383
|
+
bq = RDoc::Markup::BlockQuote.new
|
384
|
+
p :blockquote_start => [data, column] if @debug
|
385
|
+
parse bq, column
|
386
|
+
p :blockquote_end => indent if @debug
|
387
|
+
parent << bq
|
384
388
|
when *LIST_TOKENS then
|
385
389
|
unget
|
386
390
|
parent << build_list(indent)
|
@@ -412,15 +416,57 @@ class RDoc::Markup::Parser
|
|
412
416
|
token
|
413
417
|
end
|
414
418
|
|
419
|
+
##
|
420
|
+
# A simple wrapper of StringScanner that is aware of the current column and lineno
|
421
|
+
|
422
|
+
class MyStringScanner
|
423
|
+
# :stopdoc:
|
424
|
+
|
425
|
+
def initialize(input)
|
426
|
+
@line = @column = 0
|
427
|
+
@s = StringScanner.new input
|
428
|
+
end
|
429
|
+
|
430
|
+
def scan(re)
|
431
|
+
ret = @s.scan(re)
|
432
|
+
@column += ret.length if ret
|
433
|
+
ret
|
434
|
+
end
|
435
|
+
|
436
|
+
def unscan(s)
|
437
|
+
@s.pos -= s.bytesize
|
438
|
+
@column -= s.length
|
439
|
+
end
|
440
|
+
|
441
|
+
def pos
|
442
|
+
[@column, @line]
|
443
|
+
end
|
444
|
+
|
445
|
+
def newline!
|
446
|
+
@column = 0
|
447
|
+
@line += 1
|
448
|
+
end
|
449
|
+
|
450
|
+
def eos?
|
451
|
+
@s.eos?
|
452
|
+
end
|
453
|
+
|
454
|
+
def matched
|
455
|
+
@s.matched
|
456
|
+
end
|
457
|
+
|
458
|
+
def [](i)
|
459
|
+
@s[i]
|
460
|
+
end
|
461
|
+
|
462
|
+
#:startdoc:
|
463
|
+
end
|
464
|
+
|
415
465
|
##
|
416
466
|
# Creates the StringScanner
|
417
467
|
|
418
468
|
def setup_scanner input
|
419
|
-
@
|
420
|
-
@line_pos = 0
|
421
|
-
@input = input.dup
|
422
|
-
|
423
|
-
@s = StringScanner.new input
|
469
|
+
@s = MyStringScanner.new input
|
424
470
|
end
|
425
471
|
|
426
472
|
##
|
@@ -455,31 +501,30 @@ class RDoc::Markup::Parser
|
|
455
501
|
@tokens << case
|
456
502
|
# [CR]LF => :NEWLINE
|
457
503
|
when @s.scan(/\r?\n/) then
|
458
|
-
token = [:NEWLINE, @s.matched, *
|
459
|
-
@
|
460
|
-
@line += 1
|
504
|
+
token = [:NEWLINE, @s.matched, *pos]
|
505
|
+
@s.newline!
|
461
506
|
token
|
462
507
|
# === text => :HEADER then :TEXT
|
463
508
|
when @s.scan(/(=+)(\s*)/) then
|
464
509
|
level = @s[1].length
|
465
|
-
header = [:HEADER, level, *
|
510
|
+
header = [:HEADER, level, *pos]
|
466
511
|
|
467
512
|
if @s[2] =~ /^\r?\n/ then
|
468
|
-
@s.
|
513
|
+
@s.unscan(@s[2])
|
469
514
|
header
|
470
515
|
else
|
471
516
|
pos = @s.pos
|
472
517
|
@s.scan(/.*/)
|
473
518
|
@tokens << header
|
474
|
-
[:TEXT, @s.matched.sub(/\r$/, ''), *
|
519
|
+
[:TEXT, @s.matched.sub(/\r$/, ''), *pos]
|
475
520
|
end
|
476
521
|
# --- (at least 3) and nothing else on the line => :RULE
|
477
522
|
when @s.scan(/(-{3,}) *\r?$/) then
|
478
|
-
[:RULE, @s[1].length - 2, *
|
523
|
+
[:RULE, @s[1].length - 2, *pos]
|
479
524
|
# * or - followed by white space and text => :BULLET
|
480
525
|
when @s.scan(/([*-]) +(\S)/) then
|
481
|
-
@s.
|
482
|
-
[:BULLET, @s[1], *
|
526
|
+
@s.unscan(@s[2])
|
527
|
+
[:BULLET, @s[1], *pos]
|
483
528
|
# A. text, a. text, 12. text => :UALPHA, :LALPHA, :NUMBER
|
484
529
|
when @s.scan(/([a-z]|\d+)\. +(\S)/i) then
|
485
530
|
# FIXME if tab(s), the column will be wrong
|
@@ -488,7 +533,7 @@ class RDoc::Markup::Parser
|
|
488
533
|
# before (and provide a check for that at least in debug
|
489
534
|
# mode)
|
490
535
|
list_label = @s[1]
|
491
|
-
@s.
|
536
|
+
@s.unscan(@s[2])
|
492
537
|
list_type =
|
493
538
|
case list_label
|
494
539
|
when /[a-z]/ then :LALPHA
|
@@ -497,20 +542,27 @@ class RDoc::Markup::Parser
|
|
497
542
|
else
|
498
543
|
raise ParseError, "BUG token #{list_label}"
|
499
544
|
end
|
500
|
-
[list_type, list_label, *
|
545
|
+
[list_type, list_label, *pos]
|
501
546
|
# [text] followed by spaces or end of line => :LABEL
|
502
547
|
when @s.scan(/\[(.*?)\]( +|\r?$)/) then
|
503
|
-
[:LABEL, @s[1], *
|
548
|
+
[:LABEL, @s[1], *pos]
|
504
549
|
# text:: followed by spaces or end of line => :NOTE
|
505
550
|
when @s.scan(/(.*?)::( +|\r?$)/) then
|
506
|
-
[:NOTE, @s[1], *
|
551
|
+
[:NOTE, @s[1], *pos]
|
552
|
+
# >>> followed by end of line => :BLOCKQUOTE
|
553
|
+
when @s.scan(/>>> *(\w+)?$/) then
|
554
|
+
if word = @s[1]
|
555
|
+
@s.unscan(word)
|
556
|
+
end
|
557
|
+
[:BLOCKQUOTE, word, *pos]
|
507
558
|
# anything else: :TEXT
|
508
|
-
else
|
509
|
-
|
559
|
+
else
|
560
|
+
@s.scan(/(.*?)( )?\r?$/)
|
561
|
+
token = [:TEXT, @s[1], *pos]
|
510
562
|
|
511
563
|
if @s[2] then
|
512
564
|
@tokens << token
|
513
|
-
[:BREAK, @s[2],
|
565
|
+
[:BREAK, @s[2], pos[0] + @s[1].length, pos[1]]
|
514
566
|
else
|
515
567
|
token
|
516
568
|
end
|
@@ -520,16 +572,6 @@ class RDoc::Markup::Parser
|
|
520
572
|
self
|
521
573
|
end
|
522
574
|
|
523
|
-
##
|
524
|
-
# Calculates the column (by character) and line of the current token based
|
525
|
-
# on +byte_offset+.
|
526
|
-
|
527
|
-
def token_pos byte_offset
|
528
|
-
offset = char_pos byte_offset
|
529
|
-
|
530
|
-
[offset - @line_pos, @line]
|
531
|
-
end
|
532
|
-
|
533
575
|
##
|
534
576
|
# Returns the current token to the token stream
|
535
577
|
|
@@ -1,4 +1,4 @@
|
|
1
|
-
# frozen_string_literal:
|
1
|
+
# frozen_string_literal: true
|
2
2
|
##
|
3
3
|
# Handle common directives that can occur in a block of text:
|
4
4
|
#
|
@@ -97,15 +97,18 @@ class RDoc::Markup::PreProcess
|
|
97
97
|
# RDoc::CodeObject#metadata for details.
|
98
98
|
|
99
99
|
def handle text, code_object = nil, &block
|
100
|
+
first_line = 1
|
100
101
|
if RDoc::Comment === text then
|
101
102
|
comment = text
|
102
103
|
text = text.text
|
104
|
+
first_line = comment.line || 1
|
103
105
|
end
|
104
106
|
|
105
107
|
# regexp helper (square brackets for optional)
|
106
108
|
# $1 $2 $3 $4 $5
|
107
109
|
# [prefix][\]:directive:[spaces][param]newline
|
108
|
-
text
|
110
|
+
text = text.lines.map.with_index(first_line) do |line, num|
|
111
|
+
next line unless line =~ /\A([ \t]*(?:#|\/?\*)?[ \t]*)(\\?):([\w-]+):([ \t]*)(.+)?(\r?\n|$)/
|
109
112
|
# skip something like ':toto::'
|
110
113
|
next $& if $4.empty? and $5 and $5[0, 1] == ':'
|
111
114
|
|
@@ -120,10 +123,14 @@ class RDoc::Markup::PreProcess
|
|
120
123
|
next "#{$1.strip}\n"
|
121
124
|
end
|
122
125
|
|
123
|
-
handle_directive $1, $3, $5, code_object, text.encoding, &block
|
124
|
-
end
|
126
|
+
handle_directive $1, $3, $5, code_object, text.encoding, num, &block
|
127
|
+
end.join
|
125
128
|
|
126
|
-
comment
|
129
|
+
if comment then
|
130
|
+
comment.text = text
|
131
|
+
else
|
132
|
+
comment = text
|
133
|
+
end
|
127
134
|
|
128
135
|
self.class.post_processors.each do |handler|
|
129
136
|
handler.call comment, code_object
|
@@ -144,13 +151,13 @@ class RDoc::Markup::PreProcess
|
|
144
151
|
# When 1.8.7 support is ditched prefix can be defaulted to ''
|
145
152
|
|
146
153
|
def handle_directive prefix, directive, param, code_object = nil,
|
147
|
-
encoding = nil
|
154
|
+
encoding = nil, line = nil
|
148
155
|
blankline = "#{prefix.strip}\n"
|
149
156
|
directive = directive.downcase
|
150
157
|
|
151
158
|
case directive
|
152
159
|
when 'arg', 'args' then
|
153
|
-
return "#{prefix}:#{directive}: #{param}\n" unless code_object
|
160
|
+
return "#{prefix}:#{directive}: #{param}\n" unless code_object && code_object.kind_of?(RDoc::AnyMethod)
|
154
161
|
|
155
162
|
code_object.params = param
|
156
163
|
|
@@ -159,6 +166,8 @@ class RDoc::Markup::PreProcess
|
|
159
166
|
if RDoc::Context === code_object then
|
160
167
|
section = code_object.add_section param
|
161
168
|
code_object.temporary_section = section
|
169
|
+
elsif RDoc::AnyMethod === code_object then
|
170
|
+
code_object.section_title = param
|
162
171
|
end
|
163
172
|
|
164
173
|
blankline # ignore category if we're not on an RDoc::Context
|
@@ -174,10 +183,18 @@ class RDoc::Markup::PreProcess
|
|
174
183
|
|
175
184
|
blankline
|
176
185
|
when 'include' then
|
177
|
-
filename = param.split.first
|
186
|
+
filename = param.split(' ', 2).first
|
178
187
|
include_file filename, prefix, encoding
|
179
188
|
when 'main' then
|
180
189
|
@options.main_page = param if @options.respond_to? :main_page
|
190
|
+
warn <<~MSG
|
191
|
+
The :main: directive is deprecated and will be removed in RDoc 7.
|
192
|
+
|
193
|
+
You can use these options to specify the initial page displayed instead:
|
194
|
+
- `--main=#{param}` via the command line
|
195
|
+
- `rdoc.main = "#{param}"` if you use `RDoc::Task`
|
196
|
+
- `main_page: #{param}` in your `.rdoc_options` file
|
197
|
+
MSG
|
181
198
|
|
182
199
|
blankline
|
183
200
|
when 'nodoc' then
|
@@ -208,17 +225,26 @@ class RDoc::Markup::PreProcess
|
|
208
225
|
when 'title' then
|
209
226
|
@options.default_title = param if @options.respond_to? :default_title=
|
210
227
|
|
228
|
+
warn <<~MSG
|
229
|
+
The :title: directive is deprecated and will be removed in RDoc 7.
|
230
|
+
|
231
|
+
You can use these options to specify the title displayed instead:
|
232
|
+
- `--title=#{param}` via the command line
|
233
|
+
- `rdoc.title = "#{param}"` if you use `RDoc::Task`
|
234
|
+
- `title: #{param}` in your `.rdoc_options` file
|
235
|
+
MSG
|
236
|
+
|
211
237
|
blankline
|
212
238
|
when 'yield', 'yields' then
|
213
239
|
return blankline unless code_object
|
214
240
|
# remove parameter &block
|
215
|
-
code_object.params.sub
|
241
|
+
code_object.params = code_object.params.sub(/,?\s*&\w+/, '') if code_object.params
|
216
242
|
|
217
|
-
code_object.block_params = param
|
243
|
+
code_object.block_params = param || ''
|
218
244
|
|
219
245
|
blankline
|
220
246
|
else
|
221
|
-
result = yield directive, param if block_given?
|
247
|
+
result = yield directive, param, line if block_given?
|
222
248
|
|
223
249
|
case result
|
224
250
|
when nil then
|
@@ -262,6 +288,7 @@ class RDoc::Markup::PreProcess
|
|
262
288
|
end
|
263
289
|
|
264
290
|
content = RDoc::Encoding.read_file full_name, encoding, true
|
291
|
+
content = RDoc::Encoding.remove_magic_comment content
|
265
292
|
|
266
293
|
# strip magic comment
|
267
294
|
content = content.sub(/\A# .*coding[=:].*$/, '').lstrip
|
data/lib/rdoc/markup/raw.rb
CHANGED
@@ -0,0 +1,40 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
##
|
3
|
+
# Hold details of a regexp handling sequence
|
4
|
+
|
5
|
+
class RDoc::Markup::RegexpHandling
|
6
|
+
|
7
|
+
##
|
8
|
+
# Regexp handling type
|
9
|
+
|
10
|
+
attr_reader :type
|
11
|
+
|
12
|
+
##
|
13
|
+
# Regexp handling text
|
14
|
+
|
15
|
+
attr_accessor :text
|
16
|
+
|
17
|
+
##
|
18
|
+
# Creates a new regexp handling sequence of +type+ with +text+
|
19
|
+
|
20
|
+
def initialize(type, text)
|
21
|
+
@type, @text = type, text
|
22
|
+
end
|
23
|
+
|
24
|
+
##
|
25
|
+
# Regexp handlings are equal when the have the same text and type
|
26
|
+
|
27
|
+
def ==(o)
|
28
|
+
self.text == o.text && self.type == o.type
|
29
|
+
end
|
30
|
+
|
31
|
+
def inspect # :nodoc:
|
32
|
+
"#<RDoc::Markup::RegexpHandling:0x%x @type=%p, @text=%p>" % [
|
33
|
+
object_id, @type, text.dump]
|
34
|
+
end
|
35
|
+
|
36
|
+
def to_s # :nodoc:
|
37
|
+
"RegexpHandling: type=#{type} text=#{text.dump}"
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
data/lib/rdoc/markup/rule.rb
CHANGED
@@ -0,0 +1,56 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
##
|
3
|
+
# A section of table
|
4
|
+
|
5
|
+
class RDoc::Markup::Table
|
6
|
+
# headers of each column
|
7
|
+
attr_accessor :header
|
8
|
+
|
9
|
+
# alignments of each column
|
10
|
+
attr_accessor :align
|
11
|
+
|
12
|
+
# body texts of each column
|
13
|
+
attr_accessor :body
|
14
|
+
|
15
|
+
# Creates new instance
|
16
|
+
def initialize header, align, body
|
17
|
+
@header, @align, @body = header, align, body
|
18
|
+
end
|
19
|
+
|
20
|
+
# :stopdoc:
|
21
|
+
def == other
|
22
|
+
self.class == other.class and
|
23
|
+
@header == other.header and
|
24
|
+
@align == other.align and
|
25
|
+
@body == other.body
|
26
|
+
end
|
27
|
+
|
28
|
+
def accept visitor
|
29
|
+
visitor.accept_table @header, @body, @align
|
30
|
+
end
|
31
|
+
|
32
|
+
def pretty_print q
|
33
|
+
q.group 2, '[Table: ', ']' do
|
34
|
+
q.group 2, '[Head: ', ']' do
|
35
|
+
q.seplist @header.zip(@align) do |text, align|
|
36
|
+
q.pp text
|
37
|
+
if align
|
38
|
+
q.text ":"
|
39
|
+
q.breakable
|
40
|
+
q.text align.to_s
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
q.breakable
|
45
|
+
q.group 2, '[Body: ', ']' do
|
46
|
+
q.seplist @body do |body|
|
47
|
+
q.group 2, '[', ']' do
|
48
|
+
q.seplist body do |text|
|
49
|
+
q.pp text
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
data/lib/rdoc/markup/to_ansi.rb
CHANGED
data/lib/rdoc/markup/to_bs.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# frozen_string_literal:
|
1
|
+
# frozen_string_literal: true
|
2
2
|
##
|
3
3
|
# Outputs RDoc markup with hot backspace action! You will probably need a
|
4
4
|
# pager to use this output format.
|
@@ -24,7 +24,7 @@ class RDoc::Markup::ToBs < RDoc::Markup::ToRdoc
|
|
24
24
|
def init_tags
|
25
25
|
add_tag :BOLD, '+b', '-b'
|
26
26
|
add_tag :EM, '+_', '-_'
|
27
|
-
add_tag :TT, ''
|
27
|
+
add_tag :TT, '', '' # we need in_tt information maintained
|
28
28
|
end
|
29
29
|
|
30
30
|
##
|
@@ -41,7 +41,32 @@ class RDoc::Markup::ToBs < RDoc::Markup::ToRdoc
|
|
41
41
|
end
|
42
42
|
|
43
43
|
##
|
44
|
-
#
|
44
|
+
# Prepares the visitor for consuming +list_item+
|
45
|
+
|
46
|
+
def accept_list_item_start list_item
|
47
|
+
type = @list_type.last
|
48
|
+
|
49
|
+
case type
|
50
|
+
when :NOTE, :LABEL then
|
51
|
+
bullets = Array(list_item.label).map do |label|
|
52
|
+
attributes(label).strip
|
53
|
+
end.join "\n"
|
54
|
+
|
55
|
+
bullets << ":\n" unless bullets.empty?
|
56
|
+
|
57
|
+
@prefix = ' ' * @indent
|
58
|
+
@indent += 2
|
59
|
+
@prefix << bullets + (' ' * @indent)
|
60
|
+
else
|
61
|
+
bullet = type == :BULLET ? '*' : @list_index.last.to_s + '.'
|
62
|
+
@prefix = (' ' * @indent) + bullet.ljust(bullet.length + 1)
|
63
|
+
width = bullet.length + 1
|
64
|
+
@indent += width
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
##
|
69
|
+
# Turns on or off regexp handling for +convert_string+
|
45
70
|
|
46
71
|
def annotate tag
|
47
72
|
case tag
|
@@ -54,9 +79,9 @@ class RDoc::Markup::ToBs < RDoc::Markup::ToRdoc
|
|
54
79
|
end
|
55
80
|
|
56
81
|
##
|
57
|
-
# Calls convert_string on the result of
|
82
|
+
# Calls convert_string on the result of convert_regexp_handling
|
58
83
|
|
59
|
-
def
|
84
|
+
def convert_regexp_handling target
|
60
85
|
convert_string super
|
61
86
|
end
|
62
87
|
|