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.
- checksums.yaml +4 -4
- data/CONTRIBUTING.md +195 -0
- data/History.rdoc +65 -63
- data/LEGAL.rdoc +7 -1
- data/LICENSE.rdoc +6 -0
- data/README.md +236 -0
- data/RI.md +842 -0
- data/TODO.rdoc +8 -7
- data/doc/markup_reference/markdown.md +659 -0
- data/doc/markup_reference/rdoc.rdoc +1169 -0
- data/exe/rdoc +0 -1
- data/lib/rdoc/{alias.rb → code_object/alias.rb} +4 -18
- data/lib/rdoc/{any_method.rb → code_object/any_method.rb} +50 -24
- data/lib/rdoc/{attr.rb → code_object/attr.rb} +16 -14
- data/lib/rdoc/{class_module.rb → code_object/class_module.rb} +225 -58
- data/lib/rdoc/{constant.rb → code_object/constant.rb} +44 -10
- data/lib/rdoc/code_object/context/section.rb +182 -0
- data/lib/rdoc/{context.rb → code_object/context.rb} +78 -106
- data/lib/rdoc/{extend.rb → code_object/extend.rb} +0 -1
- data/lib/rdoc/{include.rb → code_object/include.rb} +0 -1
- data/lib/rdoc/{method_attr.rb → code_object/method_attr.rb} +46 -48
- data/lib/rdoc/{mixin.rb → code_object/mixin.rb} +6 -4
- data/lib/rdoc/{normal_class.rb → code_object/normal_class.rb} +2 -3
- data/lib/rdoc/{normal_module.rb → code_object/normal_module.rb} +2 -3
- data/lib/rdoc/{require.rb → code_object/require.rb} +1 -2
- data/lib/rdoc/{single_class.rb → code_object/single_class.rb} +5 -1
- data/lib/rdoc/{top_level.rb → code_object/top_level.rb} +60 -63
- data/lib/rdoc/code_object.rb +11 -39
- data/lib/rdoc/code_objects.rb +1 -2
- data/lib/rdoc/comment.rb +202 -99
- data/lib/rdoc/cross_reference.rb +75 -62
- data/lib/rdoc/encoding.rb +8 -24
- data/lib/rdoc/erb_partial.rb +1 -2
- data/lib/rdoc/erbio.rb +3 -8
- data/lib/rdoc/generator/aliki.rb +200 -0
- data/lib/rdoc/generator/darkfish.rb +156 -122
- data/lib/rdoc/generator/json_index.rb +8 -24
- data/lib/rdoc/generator/markup.rb +70 -34
- data/lib/rdoc/generator/pot/message_extractor.rb +7 -7
- data/lib/rdoc/generator/pot/po.rb +1 -1
- data/lib/rdoc/generator/pot/po_entry.rb +8 -8
- data/lib/rdoc/generator/pot.rb +1 -5
- data/lib/rdoc/generator/ri.rb +1 -2
- data/lib/rdoc/generator/template/aliki/DESIGN.md +536 -0
- data/lib/rdoc/generator/template/aliki/_aside_toc.rhtml +8 -0
- data/lib/rdoc/generator/template/aliki/_footer.rhtml +23 -0
- data/lib/rdoc/generator/template/aliki/_head.rhtml +163 -0
- data/lib/rdoc/generator/template/aliki/_header.rhtml +56 -0
- data/lib/rdoc/generator/template/aliki/_icons.rhtml +208 -0
- data/lib/rdoc/generator/template/aliki/_sidebar_ancestors.rhtml +16 -0
- data/lib/rdoc/generator/template/aliki/_sidebar_classes.rhtml +15 -0
- data/lib/rdoc/generator/template/aliki/_sidebar_extends.rhtml +27 -0
- data/lib/rdoc/generator/template/aliki/_sidebar_includes.rhtml +27 -0
- data/lib/rdoc/generator/template/aliki/_sidebar_installed.rhtml +16 -0
- data/lib/rdoc/generator/template/aliki/_sidebar_methods.rhtml +41 -0
- data/lib/rdoc/generator/template/aliki/_sidebar_pages.rhtml +67 -0
- data/lib/rdoc/generator/template/aliki/_sidebar_search.rhtml +15 -0
- data/lib/rdoc/generator/template/aliki/_sidebar_sections.rhtml +21 -0
- data/lib/rdoc/generator/template/aliki/_sidebar_toggle.rhtml +3 -0
- data/lib/rdoc/generator/template/aliki/class.rhtml +230 -0
- data/lib/rdoc/generator/template/aliki/css/rdoc.css +2181 -0
- data/lib/rdoc/generator/template/aliki/index.rhtml +22 -0
- data/lib/rdoc/generator/template/aliki/js/aliki.js +513 -0
- data/lib/rdoc/generator/template/aliki/js/bash_highlighter.js +167 -0
- data/lib/rdoc/generator/template/aliki/js/c_highlighter.js +299 -0
- data/lib/rdoc/generator/template/aliki/js/search_controller.js +129 -0
- data/lib/rdoc/generator/template/aliki/js/search_navigation.js +105 -0
- data/lib/rdoc/generator/template/aliki/js/search_ranker.js +239 -0
- data/lib/rdoc/generator/template/aliki/js/theme-toggle.js +112 -0
- data/lib/rdoc/generator/template/aliki/page.rhtml +18 -0
- data/lib/rdoc/generator/template/aliki/servlet_not_found.rhtml +14 -0
- data/lib/rdoc/generator/template/aliki/servlet_root.rhtml +65 -0
- data/lib/rdoc/generator/template/darkfish/_footer.rhtml +3 -3
- data/lib/rdoc/generator/template/darkfish/_head.rhtml +35 -14
- data/lib/rdoc/generator/template/darkfish/_sidebar_classes.rhtml +1 -5
- data/lib/rdoc/generator/template/darkfish/_sidebar_extends.rhtml +11 -9
- data/lib/rdoc/generator/template/darkfish/_sidebar_includes.rhtml +11 -9
- data/lib/rdoc/generator/template/darkfish/_sidebar_installed.rhtml +7 -6
- data/lib/rdoc/generator/template/darkfish/_sidebar_methods.rhtml +20 -11
- data/lib/rdoc/generator/template/darkfish/_sidebar_pages.rhtml +25 -5
- data/lib/rdoc/generator/template/darkfish/_sidebar_parent.rhtml +4 -9
- data/lib/rdoc/generator/template/darkfish/_sidebar_search.rhtml +2 -1
- data/lib/rdoc/generator/template/darkfish/_sidebar_sections.rhtml +4 -4
- data/lib/rdoc/generator/template/darkfish/_sidebar_table_of_contents.rhtml +28 -7
- data/lib/rdoc/generator/template/darkfish/_sidebar_toggle.rhtml +3 -0
- data/lib/rdoc/generator/template/darkfish/class.rhtml +138 -90
- data/lib/rdoc/generator/template/darkfish/css/rdoc.css +420 -358
- 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 +14 -12
- data/lib/rdoc/generator/template/darkfish/js/darkfish.js +59 -3
- data/lib/rdoc/generator/template/darkfish/js/search.js +15 -5
- data/lib/rdoc/generator/template/darkfish/page.rhtml +7 -6
- data/lib/rdoc/generator/template/darkfish/servlet_not_found.rhtml +12 -9
- data/lib/rdoc/generator/template/darkfish/servlet_root.rhtml +24 -21
- data/lib/rdoc/generator/template/darkfish/table_of_contents.rhtml +35 -21
- data/lib/rdoc/generator/template/json_index/js/navigation.js +8 -8
- data/lib/rdoc/generator/template/json_index/js/searcher.js +48 -6
- data/lib/rdoc/generator.rb +6 -5
- data/lib/rdoc/i18n/text.rb +3 -3
- data/lib/rdoc/i18n.rb +1 -1
- data/lib/rdoc/known_classes.rb +5 -4
- data/lib/rdoc/markdown/entities.rb +0 -1
- data/lib/rdoc/markdown/literals.kpeg +0 -2
- data/lib/rdoc/markdown/literals.rb +0 -1
- data/lib/rdoc/markdown.kpeg +140 -62
- data/lib/rdoc/markdown.rb +1015 -873
- data/lib/rdoc/markup/blank_line.rb +25 -24
- data/lib/rdoc/markup/block_quote.rb +1 -2
- data/lib/rdoc/markup/document.rb +10 -11
- data/lib/rdoc/markup/element.rb +21 -0
- data/lib/rdoc/markup/formatter.rb +134 -115
- data/lib/rdoc/markup/hard_break.rb +30 -28
- data/lib/rdoc/markup/heading.rb +163 -72
- data/lib/rdoc/markup/include.rb +3 -4
- data/lib/rdoc/markup/indented_paragraph.rb +4 -5
- data/lib/rdoc/markup/inline_parser.rb +312 -0
- data/lib/rdoc/markup/list.rb +6 -7
- data/lib/rdoc/markup/list_item.rb +6 -7
- data/lib/rdoc/markup/paragraph.rb +2 -3
- data/lib/rdoc/markup/parser.rb +29 -19
- data/lib/rdoc/markup/pre_process.rb +39 -18
- data/lib/rdoc/markup/raw.rb +52 -56
- data/lib/rdoc/markup/rule.rb +2 -3
- data/lib/rdoc/markup/table.rb +49 -32
- data/lib/rdoc/markup/to_ansi.rb +58 -8
- data/lib/rdoc/markup/to_bs.rb +47 -38
- data/lib/rdoc/markup/to_html.rb +343 -105
- data/lib/rdoc/markup/to_html_crossref.rb +143 -58
- data/lib/rdoc/markup/to_html_snippet.rb +78 -76
- data/lib/rdoc/markup/to_joined_paragraph.rb +3 -9
- data/lib/rdoc/markup/to_label.rb +34 -25
- data/lib/rdoc/markup/to_markdown.rb +74 -51
- data/lib/rdoc/markup/to_rdoc.rb +141 -82
- data/lib/rdoc/markup/to_table_of_contents.rb +4 -5
- data/lib/rdoc/markup/to_test.rb +10 -3
- data/lib/rdoc/markup/to_tt_only.rb +17 -31
- data/lib/rdoc/markup/verbatim.rb +5 -6
- data/lib/rdoc/markup.rb +59 -707
- data/lib/rdoc/options.rb +228 -101
- data/lib/rdoc/parser/c.rb +186 -184
- data/lib/rdoc/parser/changelog.rb +57 -13
- data/lib/rdoc/parser/markdown.rb +0 -2
- data/lib/rdoc/parser/rbs.rb +275 -0
- data/lib/rdoc/parser/rd.rb +0 -1
- data/lib/rdoc/parser/ruby.rb +963 -2024
- data/lib/rdoc/parser/ruby_colorizer.rb +253 -0
- data/lib/rdoc/parser/simple.rb +6 -23
- data/lib/rdoc/parser/text.rb +0 -1
- data/lib/rdoc/parser.rb +35 -14
- data/lib/rdoc/rbs_helper.rb +186 -0
- data/lib/rdoc/rd/block_parser.rb +659 -11
- data/lib/rdoc/rd/block_parser.ry +13 -9
- data/lib/rdoc/rd/inline.rb +4 -5
- data/lib/rdoc/rd/inline_parser.rb +646 -2
- data/lib/rdoc/rd.rb +4 -5
- data/lib/rdoc/rdoc.rb +234 -90
- data/lib/rdoc/ri/driver.rb +172 -172
- data/lib/rdoc/ri/paths.rb +3 -3
- data/lib/rdoc/{servlet.rb → ri/servlet.rb} +28 -27
- data/lib/rdoc/ri/store.rb +0 -1
- data/lib/rdoc/ri/task.rb +3 -3
- data/lib/rdoc/ri.rb +5 -5
- data/lib/rdoc/rubygems_hook.rb +106 -25
- data/lib/rdoc/server.rb +460 -0
- data/lib/rdoc/stats/normal.rb +1 -1
- data/lib/rdoc/stats/quiet.rb +1 -2
- data/lib/rdoc/stats/verbose.rb +3 -5
- data/lib/rdoc/stats.rb +158 -136
- data/lib/rdoc/store.rb +267 -48
- data/lib/rdoc/task.rb +54 -28
- data/lib/rdoc/text.rb +60 -120
- data/lib/rdoc/token_stream.rb +30 -45
- data/lib/rdoc/tom_doc.rb +9 -15
- data/lib/rdoc/version.rb +3 -1
- data/lib/rdoc.rb +90 -52
- data/lib/rubygems_plugin.rb +14 -0
- data/man/ri.1 +2 -0
- data/rdoc-logo.svg +43 -0
- data/rdoc.gemspec +25 -200
- metadata +120 -53
- data/CONTRIBUTING.rdoc +0 -220
- data/ExampleMarkdown.md +0 -37
- data/ExampleRDoc.rdoc +0 -208
- data/Gemfile +0 -12
- data/README.rdoc +0 -129
- data/RI.rdoc +0 -57
- data/Rakefile +0 -101
- data/bin/console +0 -7
- data/bin/setup +0 -6
- data/lib/rdoc/anon_class.rb +0 -11
- data/lib/rdoc/context/section.rb +0 -232
- 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/json_index/.document +0 -1
- data/lib/rdoc/ghost_method.rb +0 -7
- data/lib/rdoc/markup/attr_changer.rb +0 -23
- data/lib/rdoc/markup/attr_span.rb +0 -36
- data/lib/rdoc/markup/attribute_manager.rb +0 -409
- data/lib/rdoc/markup/attributes.rb +0 -71
- data/lib/rdoc/markup/regexp_handling.rb +0 -41
- data/lib/rdoc/meta_method.rb +0 -7
- data/lib/rdoc/parser/ripper_state_lex.rb +0 -590
- 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
|
|
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 <<
|
|
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
|
|
@@ -92,9 +92,8 @@ class RDoc::Markup::ListItem
|
|
|
92
92
|
##
|
|
93
93
|
# Adds +parts+ to the ListItem
|
|
94
94
|
|
|
95
|
-
def push
|
|
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
|
|
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
|
|
@@ -26,4 +26,3 @@ class RDoc::Markup::Paragraph < RDoc::Markup::Raw
|
|
|
26
26
|
end
|
|
27
27
|
|
|
28
28
|
end
|
|
29
|
-
|
data/lib/rdoc/markup/parser.rb
CHANGED
|
@@ -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::
|
|
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
|
|
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
|
|
@@ -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
|
|
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
|
|
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,
|
|
376
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
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
|
-
|
|
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
|
|
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
|
|
281
|
+
def include_file(name, indent, encoding)
|
|
261
282
|
full_name = find_include_file name
|
|
262
283
|
|
|
263
284
|
unless full_name then
|
data/lib/rdoc/markup/raw.rb
CHANGED
|
@@ -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
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
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
|
-
|
|
24
|
-
|
|
25
|
-
|
|
17
|
+
# Appends +text+
|
|
18
|
+
#: (String) -> void
|
|
19
|
+
def <<(text)
|
|
20
|
+
@parts << text
|
|
21
|
+
end
|
|
26
22
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
23
|
+
#: (top) -> bool
|
|
24
|
+
def ==(other) # :nodoc:
|
|
25
|
+
self.class == other.class && @parts == other.parts
|
|
26
|
+
end
|
|
30
27
|
|
|
31
|
-
|
|
32
|
-
|
|
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
|
-
|
|
35
|
-
|
|
36
|
-
|
|
35
|
+
# Appends +other+'s parts
|
|
36
|
+
#: (Raw) -> void
|
|
37
|
+
def merge(other)
|
|
38
|
+
@parts.concat(other.parts)
|
|
39
|
+
end
|
|
37
40
|
|
|
38
|
-
|
|
39
|
-
|
|
41
|
+
# @override
|
|
42
|
+
#: (PP) -> void
|
|
43
|
+
def pretty_print(q) # :nodoc:
|
|
44
|
+
self.class.name =~ /.*::(\w{1,4})/i
|
|
40
45
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
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
|
-
|
|
46
|
-
|
|
53
|
+
# Appends +texts+ onto this Paragraph
|
|
54
|
+
#: (*String) -> void
|
|
55
|
+
def push(*texts)
|
|
56
|
+
self.parts.concat(texts)
|
|
57
|
+
end
|
|
47
58
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
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
|
-
|
data/lib/rdoc/markup/rule.rb
CHANGED
|
@@ -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
|
|
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
|
|
18
18
|
end
|
|
19
19
|
|
|
20
20
|
end
|
|
21
|
-
|
data/lib/rdoc/markup/table.rb
CHANGED
|
@@ -1,43 +1,60 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
##
|
|
3
|
-
# A section of table
|
|
4
2
|
|
|
5
|
-
|
|
6
|
-
|
|
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
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
+
# Alignments of each column
|
|
12
|
+
#: Array[Symbol?]
|
|
13
|
+
attr_accessor :align
|
|
11
14
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
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
|
-
|
|
20
|
-
|
|
21
|
-
|
|
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
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
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
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
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
|