rdoc 3.1 → 6.3.3
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of rdoc might be problematic. Click here for more details.
- checksums.yaml +7 -0
- data/CONTRIBUTING.rdoc +220 -0
- data/CVE-2013-0256.rdoc +49 -0
- data/ExampleMarkdown.md +37 -0
- data/ExampleRDoc.rdoc +208 -0
- data/Gemfile +12 -0
- data/History.rdoc +1666 -0
- data/LEGAL.rdoc +50 -0
- data/LICENSE.rdoc +57 -0
- data/README.rdoc +129 -0
- data/RI.rdoc +57 -0
- data/Rakefile +84 -81
- data/TODO.rdoc +59 -0
- data/bin/console +7 -0
- data/bin/setup +6 -0
- data/{bin → exe}/rdoc +11 -2
- data/exe/ri +12 -0
- data/lib/rdoc/alias.rb +1 -2
- data/lib/rdoc/anon_class.rb +3 -2
- data/lib/rdoc/any_method.rb +234 -40
- data/lib/rdoc/attr.rb +79 -11
- data/lib/rdoc/class_module.rb +443 -71
- data/lib/rdoc/code_object.rb +216 -20
- data/lib/rdoc/code_objects.rb +4 -21
- data/lib/rdoc/comment.rb +250 -0
- data/lib/rdoc/constant.rb +110 -9
- data/lib/rdoc/context/section.rb +232 -0
- data/lib/rdoc/context.rb +392 -172
- data/lib/rdoc/cross_reference.rb +202 -0
- data/lib/rdoc/encoding.rb +83 -28
- data/lib/rdoc/erb_partial.rb +19 -0
- data/lib/rdoc/erbio.rb +8 -3
- data/lib/rdoc/extend.rb +10 -0
- data/lib/rdoc/generator/darkfish.rb +507 -84
- data/lib/rdoc/generator/json_index.rb +300 -0
- data/lib/rdoc/generator/markup.rb +27 -74
- data/lib/rdoc/generator/pot/message_extractor.rb +68 -0
- data/lib/rdoc/generator/pot/po.rb +84 -0
- data/lib/rdoc/generator/pot/po_entry.rb +141 -0
- data/lib/rdoc/generator/pot.rb +98 -0
- data/lib/rdoc/generator/ri.rb +8 -62
- data/lib/rdoc/generator/template/darkfish/_footer.rhtml +5 -0
- data/lib/rdoc/generator/template/darkfish/_head.rhtml +22 -0
- data/lib/rdoc/generator/template/darkfish/_sidebar_VCS_info.rhtml +19 -0
- data/lib/rdoc/generator/template/darkfish/_sidebar_classes.rhtml +9 -0
- data/lib/rdoc/generator/template/darkfish/_sidebar_extends.rhtml +15 -0
- data/lib/rdoc/generator/template/darkfish/_sidebar_in_files.rhtml +9 -0
- data/lib/rdoc/generator/template/darkfish/_sidebar_includes.rhtml +15 -0
- data/lib/rdoc/generator/template/darkfish/_sidebar_installed.rhtml +15 -0
- data/lib/rdoc/generator/template/darkfish/_sidebar_methods.rhtml +12 -0
- data/lib/rdoc/generator/template/darkfish/_sidebar_navigation.rhtml +11 -0
- data/lib/rdoc/generator/template/darkfish/_sidebar_pages.rhtml +12 -0
- data/lib/rdoc/generator/template/darkfish/_sidebar_parent.rhtml +11 -0
- data/lib/rdoc/generator/template/darkfish/_sidebar_search.rhtml +14 -0
- data/lib/rdoc/generator/template/darkfish/_sidebar_sections.rhtml +11 -0
- data/lib/rdoc/generator/template/darkfish/_sidebar_table_of_contents.rhtml +18 -0
- data/lib/rdoc/generator/template/darkfish/class.rhtml +172 -0
- data/lib/rdoc/generator/template/darkfish/css/fonts.css +167 -0
- data/lib/rdoc/generator/template/darkfish/css/rdoc.css +639 -0
- data/lib/rdoc/generator/template/darkfish/fonts/Lato-Light.ttf +0 -0
- data/lib/rdoc/generator/template/darkfish/fonts/Lato-LightItalic.ttf +0 -0
- data/lib/rdoc/generator/template/darkfish/fonts/Lato-Regular.ttf +0 -0
- data/lib/rdoc/generator/template/darkfish/fonts/Lato-RegularItalic.ttf +0 -0
- 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/images/add.png +0 -0
- data/lib/rdoc/generator/template/darkfish/images/arrow_up.png +0 -0
- data/lib/rdoc/generator/template/darkfish/images/delete.png +0 -0
- data/lib/rdoc/generator/template/darkfish/images/tag_blue.png +0 -0
- data/lib/rdoc/generator/template/darkfish/images/transparent.png +0 -0
- data/lib/rdoc/generator/template/darkfish/index.rhtml +18 -60
- data/lib/rdoc/generator/template/darkfish/js/darkfish.js +51 -83
- data/lib/rdoc/generator/template/darkfish/js/search.js +110 -0
- data/lib/rdoc/generator/template/darkfish/page.rhtml +18 -0
- data/lib/rdoc/generator/template/darkfish/servlet_not_found.rhtml +18 -0
- data/lib/rdoc/generator/template/darkfish/servlet_root.rhtml +62 -0
- data/lib/rdoc/generator/template/darkfish/table_of_contents.rhtml +58 -0
- data/lib/rdoc/generator/template/json_index/.document +1 -0
- data/lib/rdoc/generator/template/json_index/js/navigation.js +105 -0
- data/lib/rdoc/generator/template/json_index/js/searcher.js +229 -0
- data/lib/rdoc/generator.rb +24 -13
- data/lib/rdoc/ghost_method.rb +1 -2
- data/lib/rdoc/i18n/locale.rb +102 -0
- data/lib/rdoc/i18n/text.rb +126 -0
- data/lib/rdoc/i18n.rb +10 -0
- data/lib/rdoc/include.rb +5 -95
- data/lib/rdoc/known_classes.rb +5 -2
- data/lib/rdoc/markdown/entities.rb +2132 -0
- data/lib/rdoc/markdown/literals.kpeg +23 -0
- data/lib/rdoc/markdown/literals.rb +416 -0
- data/lib/rdoc/markdown.kpeg +1237 -0
- data/lib/rdoc/markdown.rb +16684 -0
- data/lib/rdoc/markup/attr_changer.rb +23 -0
- data/lib/rdoc/markup/attr_span.rb +36 -0
- data/lib/rdoc/markup/attribute_manager.rb +135 -62
- data/lib/rdoc/markup/attributes.rb +71 -0
- data/lib/rdoc/markup/blank_line.rb +1 -0
- data/lib/rdoc/markup/block_quote.rb +15 -0
- data/lib/rdoc/markup/document.rb +96 -9
- data/lib/rdoc/markup/formatter.rb +138 -25
- data/lib/rdoc/markup/hard_break.rb +32 -0
- data/lib/rdoc/markup/heading.rb +61 -2
- data/lib/rdoc/markup/include.rb +43 -0
- data/lib/rdoc/markup/indented_paragraph.rb +48 -0
- data/lib/rdoc/markup/list.rb +25 -4
- data/lib/rdoc/markup/list_item.rb +18 -4
- data/lib/rdoc/markup/paragraph.rb +15 -0
- data/lib/rdoc/markup/parser.rb +180 -88
- data/lib/rdoc/markup/pre_process.rb +183 -38
- data/lib/rdoc/markup/raw.rb +6 -5
- data/lib/rdoc/markup/regexp_handling.rb +41 -0
- data/lib/rdoc/markup/rule.rb +1 -0
- data/lib/rdoc/markup/table.rb +47 -0
- data/lib/rdoc/markup/to_ansi.rb +17 -7
- data/lib/rdoc/markup/to_bs.rb +5 -8
- data/lib/rdoc/markup/to_html.rb +238 -137
- data/lib/rdoc/markup/to_html_crossref.rb +125 -152
- data/lib/rdoc/markup/to_html_snippet.rb +285 -0
- data/lib/rdoc/markup/to_joined_paragraph.rb +47 -0
- data/lib/rdoc/markup/to_label.rb +75 -0
- data/lib/rdoc/markup/to_markdown.rb +192 -0
- data/lib/rdoc/markup/to_rdoc.rb +85 -15
- data/lib/rdoc/markup/to_table_of_contents.rb +89 -0
- data/lib/rdoc/markup/to_test.rb +2 -4
- data/lib/rdoc/markup/to_tt_only.rb +121 -0
- data/lib/rdoc/markup/verbatim.rb +39 -0
- data/lib/rdoc/markup.rb +388 -110
- data/lib/rdoc/meta_method.rb +1 -2
- data/lib/rdoc/method_attr.rb +87 -21
- data/lib/rdoc/mixin.rb +121 -0
- data/lib/rdoc/normal_class.rb +39 -10
- data/lib/rdoc/normal_module.rb +22 -7
- data/lib/rdoc/options.rb +613 -73
- data/lib/rdoc/parser/c.rb +621 -287
- data/lib/rdoc/parser/changelog.rb +335 -0
- data/lib/rdoc/parser/markdown.rb +24 -0
- data/lib/rdoc/parser/rd.rb +23 -0
- data/lib/rdoc/parser/ripper_state_lex.rb +590 -0
- data/lib/rdoc/parser/ruby.rb +1368 -762
- data/lib/rdoc/parser/ruby_tools.rb +42 -35
- data/lib/rdoc/parser/simple.rb +23 -11
- data/lib/rdoc/parser/text.rb +12 -0
- data/lib/rdoc/parser.rb +162 -89
- data/lib/rdoc/rd/block_parser.rb +1056 -0
- data/lib/rdoc/rd/block_parser.ry +639 -0
- data/lib/rdoc/rd/inline.rb +72 -0
- data/lib/rdoc/rd/inline_parser.rb +1208 -0
- data/lib/rdoc/rd/inline_parser.ry +593 -0
- data/lib/rdoc/rd.rb +100 -0
- data/lib/rdoc/rdoc.rb +208 -115
- data/lib/rdoc/require.rb +1 -2
- data/lib/rdoc/ri/driver.rb +734 -239
- data/lib/rdoc/ri/formatter.rb +1 -0
- data/lib/rdoc/ri/paths.rb +91 -48
- data/lib/rdoc/ri/store.rb +3 -261
- data/lib/rdoc/ri/task.rb +71 -0
- data/lib/rdoc/ri.rb +5 -2
- data/lib/rdoc/rubygems_hook.rb +246 -0
- data/lib/rdoc/servlet.rb +451 -0
- data/lib/rdoc/single_class.rb +14 -2
- data/lib/rdoc/stats/normal.rb +19 -12
- data/lib/rdoc/stats/quiet.rb +1 -0
- data/lib/rdoc/stats/verbose.rb +1 -0
- data/lib/rdoc/stats.rb +262 -104
- data/lib/rdoc/store.rb +979 -0
- data/lib/rdoc/task.rb +84 -44
- data/lib/rdoc/text.rb +117 -72
- data/lib/rdoc/token_stream.rb +73 -4
- data/lib/rdoc/tom_doc.rb +263 -0
- data/lib/rdoc/top_level.rb +111 -261
- data/lib/rdoc/version.rb +8 -0
- data/lib/rdoc.rb +127 -64
- data/man/ri.1 +247 -0
- data/rdoc.gemspec +249 -0
- metadata +171 -291
- data/.autotest +0 -16
- data/.document +0 -5
- data/History.txt +0 -594
- data/LICENSE.txt +0 -57
- data/Manifest.txt +0 -158
- data/README.txt +0 -45
- data/RI.txt +0 -58
- data/bin/ri +0 -5
- data/lib/rdoc/gauntlet.rb +0 -52
- data/lib/rdoc/generator/template/darkfish/classpage.rhtml +0 -296
- data/lib/rdoc/generator/template/darkfish/filepage.rhtml +0 -124
- data/lib/rdoc/generator/template/darkfish/js/jquery.js +0 -32
- data/lib/rdoc/generator/template/darkfish/js/quicksearch.js +0 -114
- data/lib/rdoc/generator/template/darkfish/js/thickbox-compressed.js +0 -10
- data/lib/rdoc/generator/template/darkfish/rdoc.css +0 -706
- data/lib/rdoc/markup/formatter_test_case.rb +0 -689
- data/lib/rdoc/markup/inline.rb +0 -137
- data/lib/rdoc/markup/text_formatter_test_case.rb +0 -116
- data/lib/rdoc/ruby_lex.rb +0 -1291
- data/lib/rdoc/ruby_token.rb +0 -416
- data/test/README +0 -1
- data/test/binary.dat +0 -0
- data/test/hidden.zip.txt +0 -1
- data/test/test.ja.rdoc +0 -10
- data/test/test.ja.txt +0 -8
- data/test/test.txt +0 -1
- data/test/test_attribute_manager.rb +0 -120
- data/test/test_rdoc_alias.rb +0 -13
- data/test/test_rdoc_any_method.rb +0 -126
- data/test/test_rdoc_attr.rb +0 -61
- data/test/test_rdoc_class_module.rb +0 -233
- data/test/test_rdoc_code_object.rb +0 -165
- data/test/test_rdoc_constant.rb +0 -15
- data/test/test_rdoc_context.rb +0 -370
- data/test/test_rdoc_encoding.rb +0 -166
- data/test/test_rdoc_generator_darkfish.rb +0 -119
- data/test/test_rdoc_generator_ri.rb +0 -76
- data/test/test_rdoc_include.rb +0 -96
- data/test/test_rdoc_markup.rb +0 -37
- data/test/test_rdoc_markup_attribute_manager.rb +0 -240
- data/test/test_rdoc_markup_document.rb +0 -51
- data/test/test_rdoc_markup_paragraph.rb +0 -9
- data/test/test_rdoc_markup_parser.rb +0 -1395
- data/test/test_rdoc_markup_pre_process.rb +0 -185
- data/test/test_rdoc_markup_raw.rb +0 -27
- data/test/test_rdoc_markup_to_ansi.rb +0 -328
- data/test/test_rdoc_markup_to_bs.rb +0 -341
- data/test/test_rdoc_markup_to_html.rb +0 -335
- data/test/test_rdoc_markup_to_html_crossref.rb +0 -169
- data/test/test_rdoc_markup_to_rdoc.rb +0 -327
- data/test/test_rdoc_method_attr.rb +0 -122
- data/test/test_rdoc_normal_class.rb +0 -17
- data/test/test_rdoc_normal_module.rb +0 -31
- data/test/test_rdoc_options.rb +0 -342
- data/test/test_rdoc_parser.rb +0 -83
- data/test/test_rdoc_parser_c.rb +0 -912
- data/test/test_rdoc_parser_ruby.rb +0 -1754
- data/test/test_rdoc_parser_simple.rb +0 -99
- data/test/test_rdoc_rdoc.rb +0 -164
- data/test/test_rdoc_require.rb +0 -25
- data/test/test_rdoc_ri_driver.rb +0 -846
- data/test/test_rdoc_ri_paths.rb +0 -43
- data/test/test_rdoc_ri_store.rb +0 -352
- data/test/test_rdoc_ruby_lex.rb +0 -23
- data/test/test_rdoc_stats.rb +0 -38
- data/test/test_rdoc_task.rb +0 -92
- data/test/test_rdoc_text.rb +0 -251
- data/test/test_rdoc_top_level.rb +0 -120
- data/test/xref_data.rb +0 -62
- data/test/xref_test_case.rb +0 -61
- data.tar.gz.sig +0 -3
- metadata.gz.sig +0 -0
@@ -0,0 +1,75 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
require 'cgi'
|
3
|
+
|
4
|
+
##
|
5
|
+
# Creates HTML-safe labels suitable for use in id attributes. Tidylinks are
|
6
|
+
# converted to their link part and cross-reference links have the suppression
|
7
|
+
# marks removed (\\SomeClass is converted to SomeClass).
|
8
|
+
|
9
|
+
class RDoc::Markup::ToLabel < RDoc::Markup::Formatter
|
10
|
+
|
11
|
+
attr_reader :res # :nodoc:
|
12
|
+
|
13
|
+
##
|
14
|
+
# Creates a new formatter that will output HTML-safe labels
|
15
|
+
|
16
|
+
def initialize markup = nil
|
17
|
+
super nil, markup
|
18
|
+
|
19
|
+
@markup.add_regexp_handling RDoc::CrossReference::CROSSREF_REGEXP, :CROSSREF
|
20
|
+
@markup.add_regexp_handling(/(((\{.*?\})|\b\S+?)\[\S+?\])/, :TIDYLINK)
|
21
|
+
|
22
|
+
add_tag :BOLD, '', ''
|
23
|
+
add_tag :TT, '', ''
|
24
|
+
add_tag :EM, '', ''
|
25
|
+
|
26
|
+
@res = []
|
27
|
+
end
|
28
|
+
|
29
|
+
##
|
30
|
+
# Converts +text+ to an HTML-safe label
|
31
|
+
|
32
|
+
def convert text
|
33
|
+
label = convert_flow @am.flow text
|
34
|
+
|
35
|
+
CGI.escape(label).gsub('%', '-').sub(/^-/, '')
|
36
|
+
end
|
37
|
+
|
38
|
+
##
|
39
|
+
# Converts the CROSSREF +target+ to plain text, removing the suppression
|
40
|
+
# marker, if any
|
41
|
+
|
42
|
+
def handle_regexp_CROSSREF target
|
43
|
+
text = target.text
|
44
|
+
|
45
|
+
text.sub(/^\\/, '')
|
46
|
+
end
|
47
|
+
|
48
|
+
##
|
49
|
+
# Converts the TIDYLINK +target+ to just the text part
|
50
|
+
|
51
|
+
def handle_regexp_TIDYLINK target
|
52
|
+
text = target.text
|
53
|
+
|
54
|
+
return text unless text =~ /\{(.*?)\}\[(.*?)\]/ or text =~ /(\S+)\[(.*?)\]/
|
55
|
+
|
56
|
+
$1
|
57
|
+
end
|
58
|
+
|
59
|
+
alias accept_blank_line ignore
|
60
|
+
alias accept_block_quote ignore
|
61
|
+
alias accept_heading ignore
|
62
|
+
alias accept_list_end ignore
|
63
|
+
alias accept_list_item_end ignore
|
64
|
+
alias accept_list_item_start ignore
|
65
|
+
alias accept_list_start ignore
|
66
|
+
alias accept_paragraph ignore
|
67
|
+
alias accept_raw ignore
|
68
|
+
alias accept_rule ignore
|
69
|
+
alias accept_verbatim ignore
|
70
|
+
alias end_accepting ignore
|
71
|
+
alias handle_regexp_HARD_BREAK ignore
|
72
|
+
alias start_accepting ignore
|
73
|
+
|
74
|
+
end
|
75
|
+
|
@@ -0,0 +1,192 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
# :markup: markdown
|
3
|
+
|
4
|
+
##
|
5
|
+
# Outputs parsed markup as Markdown
|
6
|
+
|
7
|
+
class RDoc::Markup::ToMarkdown < RDoc::Markup::ToRdoc
|
8
|
+
|
9
|
+
##
|
10
|
+
# Creates a new formatter that will output Markdown format text
|
11
|
+
|
12
|
+
def initialize markup = nil
|
13
|
+
super
|
14
|
+
|
15
|
+
@headings[1] = ['# ', '']
|
16
|
+
@headings[2] = ['## ', '']
|
17
|
+
@headings[3] = ['### ', '']
|
18
|
+
@headings[4] = ['#### ', '']
|
19
|
+
@headings[5] = ['##### ', '']
|
20
|
+
@headings[6] = ['###### ', '']
|
21
|
+
|
22
|
+
add_regexp_handling_RDOCLINK
|
23
|
+
add_regexp_handling_TIDYLINK
|
24
|
+
|
25
|
+
@hard_break = " \n"
|
26
|
+
end
|
27
|
+
|
28
|
+
##
|
29
|
+
# Maps attributes to HTML sequences
|
30
|
+
|
31
|
+
def init_tags
|
32
|
+
add_tag :BOLD, '**', '**'
|
33
|
+
add_tag :EM, '*', '*'
|
34
|
+
add_tag :TT, '`', '`'
|
35
|
+
end
|
36
|
+
|
37
|
+
##
|
38
|
+
# Adds a newline to the output
|
39
|
+
|
40
|
+
def handle_regexp_HARD_BREAK target
|
41
|
+
" \n"
|
42
|
+
end
|
43
|
+
|
44
|
+
##
|
45
|
+
# Finishes consumption of `list`
|
46
|
+
|
47
|
+
def accept_list_end list
|
48
|
+
@res << "\n"
|
49
|
+
|
50
|
+
super
|
51
|
+
end
|
52
|
+
|
53
|
+
##
|
54
|
+
# Finishes consumption of `list_item`
|
55
|
+
|
56
|
+
def accept_list_item_end list_item
|
57
|
+
width = case @list_type.last
|
58
|
+
when :BULLET then
|
59
|
+
4
|
60
|
+
when :NOTE, :LABEL then
|
61
|
+
use_prefix
|
62
|
+
|
63
|
+
4
|
64
|
+
else
|
65
|
+
@list_index[-1] = @list_index.last.succ
|
66
|
+
4
|
67
|
+
end
|
68
|
+
|
69
|
+
@indent -= width
|
70
|
+
end
|
71
|
+
|
72
|
+
##
|
73
|
+
# Prepares the visitor for consuming `list_item`
|
74
|
+
|
75
|
+
def accept_list_item_start list_item
|
76
|
+
type = @list_type.last
|
77
|
+
|
78
|
+
case type
|
79
|
+
when :NOTE, :LABEL then
|
80
|
+
bullets = Array(list_item.label).map do |label|
|
81
|
+
attributes(label).strip
|
82
|
+
end.join "\n"
|
83
|
+
|
84
|
+
bullets << "\n:"
|
85
|
+
|
86
|
+
@prefix = ' ' * @indent
|
87
|
+
@indent += 4
|
88
|
+
@prefix << bullets + (' ' * (@indent - 1))
|
89
|
+
else
|
90
|
+
bullet = type == :BULLET ? '*' : @list_index.last.to_s + '.'
|
91
|
+
@prefix = (' ' * @indent) + bullet.ljust(4)
|
92
|
+
|
93
|
+
@indent += 4
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
##
|
98
|
+
# Prepares the visitor for consuming `list`
|
99
|
+
|
100
|
+
def accept_list_start list
|
101
|
+
case list.type
|
102
|
+
when :BULLET, :LABEL, :NOTE then
|
103
|
+
@list_index << nil
|
104
|
+
when :LALPHA, :NUMBER, :UALPHA then
|
105
|
+
@list_index << 1
|
106
|
+
else
|
107
|
+
raise RDoc::Error, "invalid list type #{list.type}"
|
108
|
+
end
|
109
|
+
|
110
|
+
@list_width << 4
|
111
|
+
@list_type << list.type
|
112
|
+
end
|
113
|
+
|
114
|
+
##
|
115
|
+
# Adds `rule` to the output
|
116
|
+
|
117
|
+
def accept_rule rule
|
118
|
+
use_prefix or @res << ' ' * @indent
|
119
|
+
@res << '-' * 3
|
120
|
+
@res << "\n"
|
121
|
+
end
|
122
|
+
|
123
|
+
##
|
124
|
+
# Outputs `verbatim` indented 4 columns
|
125
|
+
|
126
|
+
def accept_verbatim verbatim
|
127
|
+
indent = ' ' * (@indent + 4)
|
128
|
+
|
129
|
+
verbatim.parts.each do |part|
|
130
|
+
@res << indent unless part == "\n"
|
131
|
+
@res << part
|
132
|
+
end
|
133
|
+
|
134
|
+
@res << "\n"
|
135
|
+
end
|
136
|
+
|
137
|
+
##
|
138
|
+
# Creates a Markdown-style URL from +url+ with +text+.
|
139
|
+
|
140
|
+
def gen_url url, text
|
141
|
+
scheme, url, = parse_url url
|
142
|
+
|
143
|
+
"[#{text.sub(%r{^#{scheme}:/*}i, '')}](#{url})"
|
144
|
+
end
|
145
|
+
|
146
|
+
##
|
147
|
+
# Handles <tt>rdoc-</tt> type links for footnotes.
|
148
|
+
|
149
|
+
def handle_rdoc_link url
|
150
|
+
case url
|
151
|
+
when /^rdoc-ref:/ then
|
152
|
+
$'
|
153
|
+
when /^rdoc-label:footmark-(\d+)/ then
|
154
|
+
"[^#{$1}]:"
|
155
|
+
when /^rdoc-label:foottext-(\d+)/ then
|
156
|
+
"[^#{$1}]"
|
157
|
+
when /^rdoc-label:label-/ then
|
158
|
+
gen_url url, $'
|
159
|
+
when /^rdoc-image:/ then
|
160
|
+
"![](#{$'})"
|
161
|
+
when /^rdoc-[a-z]+:/ then
|
162
|
+
$'
|
163
|
+
end
|
164
|
+
end
|
165
|
+
|
166
|
+
##
|
167
|
+
# Converts the RDoc markup tidylink into a Markdown.style link.
|
168
|
+
|
169
|
+
def handle_regexp_TIDYLINK target
|
170
|
+
text = target.text
|
171
|
+
|
172
|
+
return text unless text =~ /\{(.*?)\}\[(.*?)\]/ or text =~ /(\S+)\[(.*?)\]/
|
173
|
+
|
174
|
+
label = $1
|
175
|
+
url = $2
|
176
|
+
|
177
|
+
if url =~ /^rdoc-label:foot/ then
|
178
|
+
handle_rdoc_link url
|
179
|
+
else
|
180
|
+
gen_url url, label
|
181
|
+
end
|
182
|
+
end
|
183
|
+
|
184
|
+
##
|
185
|
+
# Converts the rdoc-...: links into a Markdown.style links.
|
186
|
+
|
187
|
+
def handle_regexp_RDOCLINK target
|
188
|
+
handle_rdoc_link target.text
|
189
|
+
end
|
190
|
+
|
191
|
+
end
|
192
|
+
|
data/lib/rdoc/markup/to_rdoc.rb
CHANGED
@@ -1,6 +1,4 @@
|
|
1
|
-
|
2
|
-
require 'rdoc/markup/inline'
|
3
|
-
|
1
|
+
# frozen_string_literal: true
|
4
2
|
##
|
5
3
|
# Outputs RDoc markup as RDoc markup! (mostly)
|
6
4
|
|
@@ -44,10 +42,10 @@ class RDoc::Markup::ToRdoc < RDoc::Markup::Formatter
|
|
44
42
|
##
|
45
43
|
# Creates a new formatter that will output (mostly) \RDoc markup
|
46
44
|
|
47
|
-
def initialize
|
48
|
-
super
|
45
|
+
def initialize markup = nil
|
46
|
+
super nil, markup
|
49
47
|
|
50
|
-
@markup.
|
48
|
+
@markup.add_regexp_handling(/\\\S/, :SUPPRESSED_CROSSREF)
|
51
49
|
@width = 78
|
52
50
|
init_tags
|
53
51
|
|
@@ -60,6 +58,8 @@ class RDoc::Markup::ToRdoc < RDoc::Markup::Formatter
|
|
60
58
|
@headings[4] = ['==== ', '']
|
61
59
|
@headings[5] = ['===== ', '']
|
62
60
|
@headings[6] = ['====== ', '']
|
61
|
+
|
62
|
+
@hard_break = "\n"
|
63
63
|
end
|
64
64
|
|
65
65
|
##
|
@@ -78,6 +78,21 @@ class RDoc::Markup::ToRdoc < RDoc::Markup::Formatter
|
|
78
78
|
@res << "\n"
|
79
79
|
end
|
80
80
|
|
81
|
+
##
|
82
|
+
# Adds +paragraph+ to the output
|
83
|
+
|
84
|
+
def accept_block_quote block_quote
|
85
|
+
@indent += 2
|
86
|
+
|
87
|
+
block_quote.parts.each do |part|
|
88
|
+
@prefix = '> '
|
89
|
+
|
90
|
+
part.accept self
|
91
|
+
end
|
92
|
+
|
93
|
+
@indent -= 2
|
94
|
+
end
|
95
|
+
|
81
96
|
##
|
82
97
|
# Adds +heading+ to the output
|
83
98
|
|
@@ -106,6 +121,11 @@ class RDoc::Markup::ToRdoc < RDoc::Markup::Formatter
|
|
106
121
|
when :BULLET then
|
107
122
|
2
|
108
123
|
when :NOTE, :LABEL then
|
124
|
+
if @prefix then
|
125
|
+
@res << @prefix.strip
|
126
|
+
@prefix = nil
|
127
|
+
end
|
128
|
+
|
109
129
|
@res << "\n"
|
110
130
|
2
|
111
131
|
else
|
@@ -125,10 +145,15 @@ class RDoc::Markup::ToRdoc < RDoc::Markup::Formatter
|
|
125
145
|
|
126
146
|
case type
|
127
147
|
when :NOTE, :LABEL then
|
128
|
-
|
148
|
+
bullets = Array(list_item.label).map do |label|
|
149
|
+
attributes(label).strip
|
150
|
+
end.join "\n"
|
151
|
+
|
152
|
+
bullets << ":\n" unless bullets.empty?
|
153
|
+
|
129
154
|
@prefix = ' ' * @indent
|
130
155
|
@indent += 2
|
131
|
-
@prefix <<
|
156
|
+
@prefix << bullets + (' ' * @indent)
|
132
157
|
else
|
133
158
|
bullet = type == :BULLET ? '*' : @list_index.last.to_s + '.'
|
134
159
|
@prefix = (' ' * @indent) + bullet.ljust(bullet.length + 1)
|
@@ -168,7 +193,18 @@ class RDoc::Markup::ToRdoc < RDoc::Markup::Formatter
|
|
168
193
|
# Adds +paragraph+ to the output
|
169
194
|
|
170
195
|
def accept_paragraph paragraph
|
171
|
-
|
196
|
+
text = paragraph.text @hard_break
|
197
|
+
wrap attributes text
|
198
|
+
end
|
199
|
+
|
200
|
+
##
|
201
|
+
# Adds +paragraph+ to the output
|
202
|
+
|
203
|
+
def accept_indented_paragraph paragraph
|
204
|
+
@indent += paragraph.indent
|
205
|
+
text = paragraph.text @hard_break
|
206
|
+
wrap attributes text
|
207
|
+
@indent -= paragraph.indent
|
172
208
|
end
|
173
209
|
|
174
210
|
##
|
@@ -198,7 +234,35 @@ class RDoc::Markup::ToRdoc < RDoc::Markup::Formatter
|
|
198
234
|
@res << part
|
199
235
|
end
|
200
236
|
|
201
|
-
@res << "\n"
|
237
|
+
@res << "\n"
|
238
|
+
end
|
239
|
+
|
240
|
+
##
|
241
|
+
# Adds +table+ to the output
|
242
|
+
|
243
|
+
def accept_table header, body, aligns
|
244
|
+
widths = header.zip(body) do |h, b|
|
245
|
+
[h.size, b.size].max
|
246
|
+
end
|
247
|
+
aligns = aligns.map do |a|
|
248
|
+
case a
|
249
|
+
when nil
|
250
|
+
:center
|
251
|
+
when :left
|
252
|
+
:ljust
|
253
|
+
when :right
|
254
|
+
:rjust
|
255
|
+
end
|
256
|
+
end
|
257
|
+
@res << header.zip(widths, aligns) do |h, w, a|
|
258
|
+
h.__send__(a, w)
|
259
|
+
end.join("|").rstrip << "\n"
|
260
|
+
@res << widths.map {|w| "-" * w }.join("|") << "\n"
|
261
|
+
body.each do |row|
|
262
|
+
@res << row.zip(widths, aligns) do |t, w, a|
|
263
|
+
t.__send__(a, w)
|
264
|
+
end.join("|").rstrip << "\n"
|
265
|
+
end
|
202
266
|
end
|
203
267
|
|
204
268
|
##
|
@@ -217,14 +281,21 @@ class RDoc::Markup::ToRdoc < RDoc::Markup::Formatter
|
|
217
281
|
end
|
218
282
|
|
219
283
|
##
|
220
|
-
# Removes
|
284
|
+
# Removes preceding \\ from the suppressed crossref +target+
|
221
285
|
|
222
|
-
def
|
223
|
-
text =
|
286
|
+
def handle_regexp_SUPPRESSED_CROSSREF target
|
287
|
+
text = target.text
|
224
288
|
text = text.sub('\\', '') unless in_tt?
|
225
289
|
text
|
226
290
|
end
|
227
291
|
|
292
|
+
##
|
293
|
+
# Adds a newline to the output
|
294
|
+
|
295
|
+
def handle_regexp_HARD_BREAK target
|
296
|
+
"\n"
|
297
|
+
end
|
298
|
+
|
228
299
|
##
|
229
300
|
# Prepares the visitor for text generation
|
230
301
|
|
@@ -243,8 +314,7 @@ class RDoc::Markup::ToRdoc < RDoc::Markup::Formatter
|
|
243
314
|
# prefix for later consumption.
|
244
315
|
|
245
316
|
def use_prefix
|
246
|
-
prefix = @prefix
|
247
|
-
@prefix = nil
|
317
|
+
prefix, @prefix = @prefix, nil
|
248
318
|
@res << prefix if prefix
|
249
319
|
|
250
320
|
prefix
|
@@ -0,0 +1,89 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
##
|
3
|
+
# Extracts just the RDoc::Markup::Heading elements from a
|
4
|
+
# RDoc::Markup::Document to help build a table of contents
|
5
|
+
|
6
|
+
class RDoc::Markup::ToTableOfContents < RDoc::Markup::Formatter
|
7
|
+
|
8
|
+
@to_toc = nil
|
9
|
+
|
10
|
+
##
|
11
|
+
# Singleton for table-of-contents generation
|
12
|
+
|
13
|
+
def self.to_toc
|
14
|
+
@to_toc ||= new
|
15
|
+
end
|
16
|
+
|
17
|
+
##
|
18
|
+
# Output accumulator
|
19
|
+
|
20
|
+
attr_reader :res
|
21
|
+
|
22
|
+
##
|
23
|
+
# Omits headings with a level less than the given level.
|
24
|
+
|
25
|
+
attr_accessor :omit_headings_below
|
26
|
+
|
27
|
+
def initialize # :nodoc:
|
28
|
+
super nil
|
29
|
+
|
30
|
+
@omit_headings_below = nil
|
31
|
+
end
|
32
|
+
|
33
|
+
##
|
34
|
+
# Adds +document+ to the output, using its heading cutoff if present
|
35
|
+
|
36
|
+
def accept_document document
|
37
|
+
@omit_headings_below = document.omit_headings_below
|
38
|
+
|
39
|
+
super
|
40
|
+
end
|
41
|
+
|
42
|
+
##
|
43
|
+
# Adds +heading+ to the table of contents
|
44
|
+
|
45
|
+
def accept_heading heading
|
46
|
+
@res << heading unless suppressed? heading
|
47
|
+
end
|
48
|
+
|
49
|
+
##
|
50
|
+
# Returns the table of contents
|
51
|
+
|
52
|
+
def end_accepting
|
53
|
+
@res
|
54
|
+
end
|
55
|
+
|
56
|
+
##
|
57
|
+
# Prepares the visitor for text generation
|
58
|
+
|
59
|
+
def start_accepting
|
60
|
+
@omit_headings_below = nil
|
61
|
+
@res = []
|
62
|
+
end
|
63
|
+
|
64
|
+
##
|
65
|
+
# Returns true if +heading+ is below the display threshold
|
66
|
+
|
67
|
+
def suppressed? heading
|
68
|
+
return false unless @omit_headings_below
|
69
|
+
|
70
|
+
heading.level > @omit_headings_below
|
71
|
+
end
|
72
|
+
|
73
|
+
# :stopdoc:
|
74
|
+
alias accept_block_quote ignore
|
75
|
+
alias accept_raw ignore
|
76
|
+
alias accept_rule ignore
|
77
|
+
alias accept_blank_line ignore
|
78
|
+
alias accept_paragraph ignore
|
79
|
+
alias accept_verbatim ignore
|
80
|
+
alias accept_list_end ignore
|
81
|
+
alias accept_list_item_start ignore
|
82
|
+
alias accept_list_item_end ignore
|
83
|
+
alias accept_list_end_bullet ignore
|
84
|
+
alias accept_list_start ignore
|
85
|
+
alias accept_table ignore
|
86
|
+
# :startdoc:
|
87
|
+
|
88
|
+
end
|
89
|
+
|
data/lib/rdoc/markup/to_test.rb
CHANGED
@@ -1,6 +1,4 @@
|
|
1
|
-
|
2
|
-
require 'rdoc/markup/formatter'
|
3
|
-
|
1
|
+
# frozen_string_literal: true
|
4
2
|
##
|
5
3
|
# This Markup outputter is used for testing purposes.
|
6
4
|
|
@@ -21,7 +19,7 @@ class RDoc::Markup::ToTest < RDoc::Markup::Formatter
|
|
21
19
|
end
|
22
20
|
|
23
21
|
def accept_paragraph(paragraph)
|
24
|
-
@res << paragraph.text
|
22
|
+
@res << convert_flow(@am.flow(paragraph.text))
|
25
23
|
end
|
26
24
|
|
27
25
|
def accept_raw raw
|
@@ -0,0 +1,121 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
##
|
3
|
+
# Extracts sections of text enclosed in plus, tt or code. Used to discover
|
4
|
+
# undocumented parameters.
|
5
|
+
|
6
|
+
class RDoc::Markup::ToTtOnly < RDoc::Markup::Formatter
|
7
|
+
|
8
|
+
##
|
9
|
+
# Stack of list types
|
10
|
+
|
11
|
+
attr_reader :list_type
|
12
|
+
|
13
|
+
##
|
14
|
+
# Output accumulator
|
15
|
+
|
16
|
+
attr_reader :res
|
17
|
+
|
18
|
+
##
|
19
|
+
# Creates a new tt-only formatter.
|
20
|
+
|
21
|
+
def initialize markup = nil
|
22
|
+
super nil, markup
|
23
|
+
|
24
|
+
add_tag :TT, nil, nil
|
25
|
+
end
|
26
|
+
|
27
|
+
##
|
28
|
+
# Adds tts from +block_quote+ to the output
|
29
|
+
|
30
|
+
def accept_block_quote block_quote
|
31
|
+
tt_sections block_quote.text
|
32
|
+
end
|
33
|
+
|
34
|
+
##
|
35
|
+
# Pops the list type for +list+ from #list_type
|
36
|
+
|
37
|
+
def accept_list_end list
|
38
|
+
@list_type.pop
|
39
|
+
end
|
40
|
+
|
41
|
+
##
|
42
|
+
# Pushes the list type for +list+ onto #list_type
|
43
|
+
|
44
|
+
def accept_list_start list
|
45
|
+
@list_type << list.type
|
46
|
+
end
|
47
|
+
|
48
|
+
##
|
49
|
+
# Prepares the visitor for consuming +list_item+
|
50
|
+
|
51
|
+
def accept_list_item_start list_item
|
52
|
+
case @list_type.last
|
53
|
+
when :NOTE, :LABEL then
|
54
|
+
Array(list_item.label).map do |label|
|
55
|
+
tt_sections label
|
56
|
+
end.flatten
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
##
|
61
|
+
# Adds +paragraph+ to the output
|
62
|
+
|
63
|
+
def accept_paragraph paragraph
|
64
|
+
tt_sections(paragraph.text)
|
65
|
+
end
|
66
|
+
|
67
|
+
##
|
68
|
+
# Does nothing to +markup_item+ because it doesn't have any user-built
|
69
|
+
# content
|
70
|
+
|
71
|
+
def do_nothing markup_item
|
72
|
+
end
|
73
|
+
|
74
|
+
alias accept_blank_line do_nothing # :nodoc:
|
75
|
+
alias accept_heading do_nothing # :nodoc:
|
76
|
+
alias accept_list_item_end do_nothing # :nodoc:
|
77
|
+
alias accept_raw do_nothing # :nodoc:
|
78
|
+
alias accept_rule do_nothing # :nodoc:
|
79
|
+
alias accept_verbatim do_nothing # :nodoc:
|
80
|
+
|
81
|
+
##
|
82
|
+
# Extracts tt sections from +text+
|
83
|
+
|
84
|
+
def tt_sections text
|
85
|
+
flow = @am.flow text.dup
|
86
|
+
|
87
|
+
flow.each do |item|
|
88
|
+
case item
|
89
|
+
when String then
|
90
|
+
@res << item if in_tt?
|
91
|
+
when RDoc::Markup::AttrChanger then
|
92
|
+
off_tags res, item
|
93
|
+
on_tags res, item
|
94
|
+
when RDoc::Markup::RegexpHandling then
|
95
|
+
@res << convert_regexp_handling(item) if in_tt? # TODO can this happen?
|
96
|
+
else
|
97
|
+
raise "Unknown flow element: #{item.inspect}"
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
101
|
+
res
|
102
|
+
end
|
103
|
+
|
104
|
+
##
|
105
|
+
# Returns an Array of items that were wrapped in plus, tt or code.
|
106
|
+
|
107
|
+
def end_accepting
|
108
|
+
@res.compact
|
109
|
+
end
|
110
|
+
|
111
|
+
##
|
112
|
+
# Prepares the visitor for gathering tt sections
|
113
|
+
|
114
|
+
def start_accepting
|
115
|
+
@res = []
|
116
|
+
|
117
|
+
@list_type = []
|
118
|
+
end
|
119
|
+
|
120
|
+
end
|
121
|
+
|
data/lib/rdoc/markup/verbatim.rb
CHANGED
@@ -1,8 +1,24 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
##
|
2
3
|
# A section of verbatim text
|
3
4
|
|
4
5
|
class RDoc::Markup::Verbatim < RDoc::Markup::Raw
|
5
6
|
|
7
|
+
##
|
8
|
+
# Format of this verbatim section
|
9
|
+
|
10
|
+
attr_accessor :format
|
11
|
+
|
12
|
+
def initialize *parts # :nodoc:
|
13
|
+
super
|
14
|
+
|
15
|
+
@format = nil
|
16
|
+
end
|
17
|
+
|
18
|
+
def == other # :nodoc:
|
19
|
+
super and @format == other.format
|
20
|
+
end
|
21
|
+
|
6
22
|
##
|
7
23
|
# Calls #accept_verbatim on +visitor+
|
8
24
|
|
@@ -34,6 +50,29 @@ class RDoc::Markup::Verbatim < RDoc::Markup::Raw
|
|
34
50
|
@parts = parts
|
35
51
|
end
|
36
52
|
|
53
|
+
def pretty_print q # :nodoc:
|
54
|
+
self.class.name =~ /.*::(\w{1,4})/i
|
55
|
+
|
56
|
+
q.group 2, "[#{$1.downcase}: ", ']' do
|
57
|
+
if @format then
|
58
|
+
q.text "format: #{@format}"
|
59
|
+
q.breakable
|
60
|
+
end
|
61
|
+
|
62
|
+
q.seplist @parts do |part|
|
63
|
+
q.pp part
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
##
|
69
|
+
# Is this verbatim section Ruby code?
|
70
|
+
|
71
|
+
def ruby?
|
72
|
+
@format ||= nil # TODO for older ri data, switch the tree to marshal_dump
|
73
|
+
@format == :ruby
|
74
|
+
end
|
75
|
+
|
37
76
|
##
|
38
77
|
# The text of the section
|
39
78
|
|