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
@@ -1,9 +1,14 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
# frozen_string_literal: true
|
3
2
|
##
|
4
3
|
# Base class for RDoc markup formatters
|
5
4
|
#
|
6
|
-
# Formatters
|
5
|
+
# Formatters are a visitor that converts an RDoc::Markup tree (from a comment)
|
6
|
+
# into some kind of output. RDoc ships with formatters for converting back to
|
7
|
+
# rdoc, ANSI text, HTML, a Table of Contents and other formats.
|
8
|
+
#
|
9
|
+
# If you'd like to write your own Formatter use
|
10
|
+
# RDoc::Markup::FormatterTestCase. If you're writing a text-output formatter
|
11
|
+
# use RDoc::Markup::TextFormatterTestCase which provides extra test cases.
|
7
12
|
|
8
13
|
class RDoc::Markup::Formatter
|
9
14
|
|
@@ -13,16 +18,84 @@ class RDoc::Markup::Formatter
|
|
13
18
|
|
14
19
|
InlineTag = Struct.new(:bit, :on, :off)
|
15
20
|
|
21
|
+
##
|
22
|
+
# Converts a target url to one that is relative to a given path
|
23
|
+
|
24
|
+
def self.gen_relative_url path, target
|
25
|
+
from = File.dirname path
|
26
|
+
to, to_file = File.split target
|
27
|
+
|
28
|
+
from = from.split "/"
|
29
|
+
to = to.split "/"
|
30
|
+
|
31
|
+
from.delete '.'
|
32
|
+
to.delete '.'
|
33
|
+
|
34
|
+
while from.size > 0 and to.size > 0 and from[0] == to[0] do
|
35
|
+
from.shift
|
36
|
+
to.shift
|
37
|
+
end
|
38
|
+
|
39
|
+
from.fill ".."
|
40
|
+
from.concat to
|
41
|
+
from << to_file
|
42
|
+
File.join(*from)
|
43
|
+
end
|
44
|
+
|
16
45
|
##
|
17
46
|
# Creates a new Formatter
|
18
47
|
|
19
|
-
def initialize
|
20
|
-
@
|
21
|
-
|
48
|
+
def initialize options, markup = nil
|
49
|
+
@options = options
|
50
|
+
|
51
|
+
@markup = markup || RDoc::Markup.new
|
52
|
+
@am = @markup.attribute_manager
|
53
|
+
@am.add_regexp_handling(/<br>/, :HARD_BREAK)
|
54
|
+
|
55
|
+
@attributes = @am.attributes
|
56
|
+
|
22
57
|
@attr_tags = []
|
23
58
|
|
24
59
|
@in_tt = 0
|
25
|
-
@tt_bit =
|
60
|
+
@tt_bit = @attributes.bitmap_for :TT
|
61
|
+
|
62
|
+
@hard_break = ''
|
63
|
+
@from_path = '.'
|
64
|
+
end
|
65
|
+
|
66
|
+
##
|
67
|
+
# Adds +document+ to the output
|
68
|
+
|
69
|
+
def accept_document document
|
70
|
+
document.parts.each do |item|
|
71
|
+
case item
|
72
|
+
when RDoc::Markup::Document then # HACK
|
73
|
+
accept_document item
|
74
|
+
else
|
75
|
+
item.accept self
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
##
|
81
|
+
# Adds a regexp handling for links of the form rdoc-...:
|
82
|
+
|
83
|
+
def add_regexp_handling_RDOCLINK
|
84
|
+
@markup.add_regexp_handling(/rdoc-[a-z]+:[^\s\]]+/, :RDOCLINK)
|
85
|
+
end
|
86
|
+
|
87
|
+
##
|
88
|
+
# Adds a regexp handling for links of the form {<text>}[<url>] and
|
89
|
+
# <word>[<url>]
|
90
|
+
|
91
|
+
def add_regexp_handling_TIDYLINK
|
92
|
+
@markup.add_regexp_handling(/(?:
|
93
|
+
\{.*?\} | # multi-word label
|
94
|
+
\b[^\s{}]+? # single-word label
|
95
|
+
)
|
96
|
+
|
97
|
+
\[\S+?\] # link target
|
98
|
+
/x, :TIDYLINK)
|
26
99
|
end
|
27
100
|
|
28
101
|
##
|
@@ -30,7 +103,7 @@ class RDoc::Markup::Formatter
|
|
30
103
|
# tags for flexibility
|
31
104
|
|
32
105
|
def add_tag(name, start, stop)
|
33
|
-
attr =
|
106
|
+
attr = @attributes.bitmap_for name
|
34
107
|
@attr_tags << InlineTag.new(attr, start, stop)
|
35
108
|
end
|
36
109
|
|
@@ -44,7 +117,7 @@ class RDoc::Markup::Formatter
|
|
44
117
|
##
|
45
118
|
# Marks up +content+
|
46
119
|
|
47
|
-
def convert
|
120
|
+
def convert content
|
48
121
|
@markup.convert content, self
|
49
122
|
end
|
50
123
|
|
@@ -61,8 +134,8 @@ class RDoc::Markup::Formatter
|
|
61
134
|
when RDoc::Markup::AttrChanger then
|
62
135
|
off_tags res, item
|
63
136
|
on_tags res, item
|
64
|
-
when RDoc::Markup::
|
65
|
-
res <<
|
137
|
+
when RDoc::Markup::RegexpHandling then
|
138
|
+
res << convert_regexp_handling(item)
|
66
139
|
else
|
67
140
|
raise "Unknown flow element: #{item.inspect}"
|
68
141
|
end
|
@@ -72,23 +145,29 @@ class RDoc::Markup::Formatter
|
|
72
145
|
end
|
73
146
|
|
74
147
|
##
|
75
|
-
# Converts added
|
148
|
+
# Converts added regexp handlings. See RDoc::Markup#add_regexp_handling
|
149
|
+
|
150
|
+
def convert_regexp_handling target
|
151
|
+
return target.text if in_tt?
|
76
152
|
|
77
|
-
def convert_special(special)
|
78
153
|
handled = false
|
79
154
|
|
80
|
-
|
81
|
-
method_name = "
|
155
|
+
@attributes.each_name_of target.type do |name|
|
156
|
+
method_name = "handle_regexp_#{name}"
|
82
157
|
|
83
158
|
if respond_to? method_name then
|
84
|
-
|
159
|
+
target.text = public_send method_name, target
|
85
160
|
handled = true
|
86
161
|
end
|
87
162
|
end
|
88
163
|
|
89
|
-
|
164
|
+
unless handled then
|
165
|
+
target_name = @attributes.as_string target.type
|
166
|
+
|
167
|
+
raise RDoc::Error, "Unhandled regexp handling #{target_name}: #{target}"
|
168
|
+
end
|
90
169
|
|
91
|
-
|
170
|
+
target.text
|
92
171
|
end
|
93
172
|
|
94
173
|
##
|
@@ -98,6 +177,17 @@ class RDoc::Markup::Formatter
|
|
98
177
|
string
|
99
178
|
end
|
100
179
|
|
180
|
+
##
|
181
|
+
# Use ignore in your subclass to ignore the content of a node.
|
182
|
+
#
|
183
|
+
# ##
|
184
|
+
# # We don't support raw nodes in ToNoRaw
|
185
|
+
#
|
186
|
+
# alias accept_raw ignore
|
187
|
+
|
188
|
+
def ignore *node
|
189
|
+
end
|
190
|
+
|
101
191
|
##
|
102
192
|
# Are we currently inside tt tags?
|
103
193
|
|
@@ -135,6 +225,36 @@ class RDoc::Markup::Formatter
|
|
135
225
|
end
|
136
226
|
end
|
137
227
|
|
228
|
+
##
|
229
|
+
# Extracts and a scheme, url and an anchor id from +url+ and returns them.
|
230
|
+
|
231
|
+
def parse_url url
|
232
|
+
case url
|
233
|
+
when /^rdoc-label:([^:]*)(?::(.*))?/ then
|
234
|
+
scheme = 'link'
|
235
|
+
path = "##{$1}"
|
236
|
+
id = " id=\"#{$2}\"" if $2
|
237
|
+
when /([A-Za-z]+):(.*)/ then
|
238
|
+
scheme = $1.downcase
|
239
|
+
path = $2
|
240
|
+
when /^#/ then
|
241
|
+
else
|
242
|
+
scheme = 'http'
|
243
|
+
path = url
|
244
|
+
url = url
|
245
|
+
end
|
246
|
+
|
247
|
+
if scheme == 'link' then
|
248
|
+
url = if path[0, 1] == '#' then # is this meaningful?
|
249
|
+
path
|
250
|
+
else
|
251
|
+
self.class.gen_relative_url @from_path, path
|
252
|
+
end
|
253
|
+
end
|
254
|
+
|
255
|
+
[scheme, url, id]
|
256
|
+
end
|
257
|
+
|
138
258
|
##
|
139
259
|
# Is +tag+ a tt tag?
|
140
260
|
|
@@ -144,10 +264,3 @@ class RDoc::Markup::Formatter
|
|
144
264
|
|
145
265
|
end
|
146
266
|
|
147
|
-
class RDoc::Markup
|
148
|
-
autoload :ToAnsi, 'rdoc/markup/to_ansi'
|
149
|
-
autoload :ToBs, 'rdoc/markup/to_bs'
|
150
|
-
autoload :ToHtml, 'rdoc/markup/to_html'
|
151
|
-
autoload :ToHtmlCrossref, 'rdoc/markup/to_html_crossref'
|
152
|
-
autoload :ToRdoc, 'rdoc/markup/to_rdoc'
|
153
|
-
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
##
|
3
|
+
# A hard-break in the middle of a paragraph.
|
4
|
+
|
5
|
+
class RDoc::Markup::HardBreak
|
6
|
+
|
7
|
+
@instance = new
|
8
|
+
|
9
|
+
##
|
10
|
+
# RDoc::Markup::HardBreak is a singleton
|
11
|
+
|
12
|
+
def self.new
|
13
|
+
@instance
|
14
|
+
end
|
15
|
+
|
16
|
+
##
|
17
|
+
# Calls #accept_hard_break on +visitor+
|
18
|
+
|
19
|
+
def accept visitor
|
20
|
+
visitor.accept_hard_break self
|
21
|
+
end
|
22
|
+
|
23
|
+
def == other # :nodoc:
|
24
|
+
self.class === other
|
25
|
+
end
|
26
|
+
|
27
|
+
def pretty_print q # :nodoc:
|
28
|
+
q.text "[break]"
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
32
|
+
|
data/lib/rdoc/markup/heading.rb
CHANGED
@@ -1,15 +1,74 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
##
|
2
3
|
# A heading with a level (1-6) and text
|
3
4
|
|
4
|
-
|
5
|
+
RDoc::Markup::Heading =
|
6
|
+
Struct.new :level, :text do
|
7
|
+
|
8
|
+
@to_html = nil
|
9
|
+
@to_label = nil
|
10
|
+
|
11
|
+
##
|
12
|
+
# A singleton RDoc::Markup::ToLabel formatter for headings.
|
13
|
+
|
14
|
+
def self.to_label
|
15
|
+
@to_label ||= RDoc::Markup::ToLabel.new
|
16
|
+
end
|
17
|
+
|
18
|
+
##
|
19
|
+
# A singleton plain HTML formatter for headings. Used for creating labels
|
20
|
+
# for the Table of Contents
|
21
|
+
|
22
|
+
def self.to_html
|
23
|
+
return @to_html if @to_html
|
24
|
+
|
25
|
+
markup = RDoc::Markup.new
|
26
|
+
markup.add_regexp_handling RDoc::CrossReference::CROSSREF_REGEXP, :CROSSREF
|
27
|
+
|
28
|
+
@to_html = RDoc::Markup::ToHtml.new nil
|
29
|
+
|
30
|
+
def @to_html.handle_regexp_CROSSREF target
|
31
|
+
target.text.sub(/^\\/, '')
|
32
|
+
end
|
33
|
+
|
34
|
+
@to_html
|
35
|
+
end
|
5
36
|
|
6
37
|
##
|
7
|
-
# Calls #accept_heading on +
|
38
|
+
# Calls #accept_heading on +visitor+
|
8
39
|
|
9
40
|
def accept visitor
|
10
41
|
visitor.accept_heading self
|
11
42
|
end
|
12
43
|
|
44
|
+
##
|
45
|
+
# An HTML-safe anchor reference for this header.
|
46
|
+
|
47
|
+
def aref
|
48
|
+
"label-#{self.class.to_label.convert text.dup}"
|
49
|
+
end
|
50
|
+
|
51
|
+
##
|
52
|
+
# Creates a fully-qualified label which will include the label from
|
53
|
+
# +context+. This helps keep ids unique in HTML.
|
54
|
+
|
55
|
+
def label context = nil
|
56
|
+
label = aref
|
57
|
+
|
58
|
+
label = [context.aref, label].compact.join '-' if
|
59
|
+
context and context.respond_to? :aref
|
60
|
+
|
61
|
+
label
|
62
|
+
end
|
63
|
+
|
64
|
+
##
|
65
|
+
# HTML markup of the text of this label without the surrounding header
|
66
|
+
# element.
|
67
|
+
|
68
|
+
def plain_html
|
69
|
+
self.class.to_html.to_html(text.dup)
|
70
|
+
end
|
71
|
+
|
13
72
|
def pretty_print q # :nodoc:
|
14
73
|
q.group 2, "[head: #{level} ", ']' do
|
15
74
|
q.pp text
|
@@ -0,0 +1,43 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
##
|
3
|
+
# A file included at generation time. Objects of this class are created by
|
4
|
+
# RDoc::RD for an extension-less include.
|
5
|
+
#
|
6
|
+
# This implementation in incomplete.
|
7
|
+
|
8
|
+
class RDoc::Markup::Include
|
9
|
+
|
10
|
+
##
|
11
|
+
# The filename to be included, without extension
|
12
|
+
|
13
|
+
attr_reader :file
|
14
|
+
|
15
|
+
##
|
16
|
+
# Directories to search for #file
|
17
|
+
|
18
|
+
attr_reader :include_path
|
19
|
+
|
20
|
+
##
|
21
|
+
# Creates a new include that will import +file+ from +include_path+
|
22
|
+
|
23
|
+
def initialize file, include_path
|
24
|
+
@file = file
|
25
|
+
@include_path = include_path
|
26
|
+
end
|
27
|
+
|
28
|
+
def == other # :nodoc:
|
29
|
+
self.class === other and
|
30
|
+
@file == other.file and @include_path == other.include_path
|
31
|
+
end
|
32
|
+
|
33
|
+
def pretty_print q # :nodoc:
|
34
|
+
q.group 2, '[incl ', ']' do
|
35
|
+
q.text file
|
36
|
+
q.breakable
|
37
|
+
q.text 'from '
|
38
|
+
q.pp include_path
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
end
|
43
|
+
|
@@ -0,0 +1,48 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
##
|
3
|
+
# An Indented Paragraph of text
|
4
|
+
|
5
|
+
class RDoc::Markup::IndentedParagraph < RDoc::Markup::Raw
|
6
|
+
|
7
|
+
##
|
8
|
+
# The indent in number of spaces
|
9
|
+
|
10
|
+
attr_reader :indent
|
11
|
+
|
12
|
+
##
|
13
|
+
# Creates a new IndentedParagraph containing +parts+ indented with +indent+
|
14
|
+
# spaces
|
15
|
+
|
16
|
+
def initialize indent, *parts
|
17
|
+
@indent = indent
|
18
|
+
|
19
|
+
super(*parts)
|
20
|
+
end
|
21
|
+
|
22
|
+
def == other # :nodoc:
|
23
|
+
super and indent == other.indent
|
24
|
+
end
|
25
|
+
|
26
|
+
##
|
27
|
+
# Calls #accept_indented_paragraph on +visitor+
|
28
|
+
|
29
|
+
def accept visitor
|
30
|
+
visitor.accept_indented_paragraph self
|
31
|
+
end
|
32
|
+
|
33
|
+
##
|
34
|
+
# Joins the raw paragraph text and converts inline HardBreaks to the
|
35
|
+
# +hard_break+ text followed by the indent.
|
36
|
+
|
37
|
+
def text hard_break = nil
|
38
|
+
@parts.map do |part|
|
39
|
+
if RDoc::Markup::HardBreak === part then
|
40
|
+
'%1$s%3$*2$s' % [hard_break, @indent, ' '] if hard_break
|
41
|
+
else
|
42
|
+
part
|
43
|
+
end
|
44
|
+
end.join
|
45
|
+
end
|
46
|
+
|
47
|
+
end
|
48
|
+
|
data/lib/rdoc/markup/list.rb
CHANGED
@@ -1,5 +1,25 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
##
|
2
|
-
# A List of ListItems
|
3
|
+
# A List is a homogeneous set of ListItems.
|
4
|
+
#
|
5
|
+
# The supported list types include:
|
6
|
+
#
|
7
|
+
# :BULLET::
|
8
|
+
# An unordered list
|
9
|
+
# :LABEL::
|
10
|
+
# An unordered definition list, but using an alternate RDoc::Markup syntax
|
11
|
+
# :LALPHA::
|
12
|
+
# An ordered list using increasing lowercase English letters
|
13
|
+
# :NOTE::
|
14
|
+
# An unordered definition list
|
15
|
+
# :NUMBER::
|
16
|
+
# An ordered list using increasing Arabic numerals
|
17
|
+
# :UALPHA::
|
18
|
+
# An ordered list using increasing uppercase English letters
|
19
|
+
#
|
20
|
+
# Definition lists behave like HTML definition lists. Each list item can
|
21
|
+
# describe multiple terms. See RDoc::Markup::ListItem for how labels and
|
22
|
+
# definition are stored as list items.
|
3
23
|
|
4
24
|
class RDoc::Markup::List
|
5
25
|
|
@@ -14,12 +34,13 @@ class RDoc::Markup::List
|
|
14
34
|
attr_reader :items
|
15
35
|
|
16
36
|
##
|
17
|
-
# Creates a new list of +type+ with +items
|
37
|
+
# Creates a new list of +type+ with +items+. Valid list types are:
|
38
|
+
# +:BULLET+, +:LABEL+, +:LALPHA+, +:NOTE+, +:NUMBER+, +:UALPHA+
|
18
39
|
|
19
40
|
def initialize type = nil, *items
|
20
41
|
@type = type
|
21
42
|
@items = []
|
22
|
-
@items.
|
43
|
+
@items.concat items
|
23
44
|
end
|
24
45
|
|
25
46
|
##
|
@@ -74,7 +95,7 @@ class RDoc::Markup::List
|
|
74
95
|
# Appends +items+ to the list
|
75
96
|
|
76
97
|
def push *items
|
77
|
-
@items.
|
98
|
+
@items.concat items
|
78
99
|
end
|
79
100
|
|
80
101
|
end
|
@@ -1,5 +1,13 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
##
|
2
3
|
# An item within a List that contains paragraphs, headings, etc.
|
4
|
+
#
|
5
|
+
# For BULLET, NUMBER, LALPHA and UALPHA lists, the label will always be nil.
|
6
|
+
# For NOTE and LABEL lists, the list label may contain:
|
7
|
+
#
|
8
|
+
# * a single String for a single label
|
9
|
+
# * an Array of Strings for a list item with multiple terms
|
10
|
+
# * nil for an extra description attached to a previously labeled list item
|
3
11
|
|
4
12
|
class RDoc::Markup::ListItem
|
5
13
|
|
@@ -19,7 +27,7 @@ class RDoc::Markup::ListItem
|
|
19
27
|
def initialize label = nil, *parts
|
20
28
|
@label = label
|
21
29
|
@parts = []
|
22
|
-
@parts.
|
30
|
+
@parts.concat parts
|
23
31
|
end
|
24
32
|
|
25
33
|
##
|
@@ -64,8 +72,14 @@ class RDoc::Markup::ListItem
|
|
64
72
|
|
65
73
|
def pretty_print q # :nodoc:
|
66
74
|
q.group 2, '[item: ', ']' do
|
67
|
-
|
68
|
-
|
75
|
+
case @label
|
76
|
+
when Array then
|
77
|
+
q.pp @label
|
78
|
+
q.text ';'
|
79
|
+
q.breakable
|
80
|
+
when String then
|
81
|
+
q.pp @label
|
82
|
+
q.text ';'
|
69
83
|
q.breakable
|
70
84
|
end
|
71
85
|
|
@@ -79,7 +93,7 @@ class RDoc::Markup::ListItem
|
|
79
93
|
# Adds +parts+ to the ListItem
|
80
94
|
|
81
95
|
def push *parts
|
82
|
-
@parts.
|
96
|
+
@parts.concat parts
|
83
97
|
end
|
84
98
|
|
85
99
|
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
##
|
2
3
|
# A Paragraph of text
|
3
4
|
|
@@ -10,5 +11,19 @@ class RDoc::Markup::Paragraph < RDoc::Markup::Raw
|
|
10
11
|
visitor.accept_paragraph self
|
11
12
|
end
|
12
13
|
|
14
|
+
##
|
15
|
+
# Joins the raw paragraph text and converts inline HardBreaks to the
|
16
|
+
# +hard_break+ text.
|
17
|
+
|
18
|
+
def text hard_break = ''
|
19
|
+
@parts.map do |part|
|
20
|
+
if RDoc::Markup::HardBreak === part then
|
21
|
+
hard_break
|
22
|
+
else
|
23
|
+
part
|
24
|
+
end
|
25
|
+
end.join
|
26
|
+
end
|
27
|
+
|
13
28
|
end
|
14
29
|
|