rdoc 6.17.0 → 8.1.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 +193 -0
- data/LEGAL.rdoc +6 -0
- data/LICENSE.rdoc +4 -0
- data/README.md +132 -8
- data/RI.md +75 -75
- data/doc/markup_reference/markdown.md +659 -0
- data/doc/markup_reference/rdoc.rdoc +1169 -0
- data/exe/rdoc +2 -2
- data/lib/rdoc/code_object/alias.rb +70 -74
- data/lib/rdoc/code_object/any_method.rb +308 -293
- data/lib/rdoc/code_object/attr.rb +150 -142
- data/lib/rdoc/code_object/class_module.rb +802 -715
- data/lib/rdoc/code_object/constant.rb +181 -144
- data/lib/rdoc/code_object/context/section.rb +140 -130
- data/lib/rdoc/code_object/context.rb +925 -941
- data/lib/rdoc/code_object/extend.rb +7 -5
- data/lib/rdoc/code_object/include.rb +7 -5
- data/lib/rdoc/code_object/method_attr.rb +328 -315
- data/lib/rdoc/code_object/mixin.rb +97 -92
- data/lib/rdoc/code_object/normal_class.rb +77 -78
- data/lib/rdoc/code_object/normal_module.rb +61 -59
- data/lib/rdoc/code_object/require.rb +23 -39
- data/lib/rdoc/code_object/single_class.rb +21 -19
- data/lib/rdoc/code_object/top_level.rb +215 -202
- data/lib/rdoc/code_object.rb +305 -305
- data/lib/rdoc/comment.rb +274 -337
- data/lib/rdoc/cross_reference.rb +195 -206
- data/lib/rdoc/encoding.rb +105 -103
- data/lib/rdoc/erb_partial.rb +13 -11
- data/lib/rdoc/erbio.rb +29 -27
- data/lib/rdoc/generator/aliki.rb +196 -30
- data/lib/rdoc/generator/darkfish.rb +647 -629
- data/lib/rdoc/generator/json_index.rb +233 -229
- data/lib/rdoc/generator/markup.rb +165 -122
- data/lib/rdoc/generator/pot/message_extractor.rb +57 -51
- data/lib/rdoc/generator/pot/po.rb +52 -51
- data/lib/rdoc/generator/pot/po_entry.rb +138 -132
- data/lib/rdoc/generator/pot.rb +85 -81
- data/lib/rdoc/generator/ri.rb +23 -19
- data/lib/rdoc/generator/template/aliki/DESIGN.md +538 -0
- data/lib/rdoc/generator/template/aliki/_aside_toc.rhtml +1 -1
- data/lib/rdoc/generator/template/aliki/_footer.rhtml +2 -2
- data/lib/rdoc/generator/template/aliki/_head.rhtml +15 -10
- data/lib/rdoc/generator/template/aliki/_header.rhtml +29 -44
- data/lib/rdoc/generator/template/aliki/_sidebar_extends.rhtml +8 -6
- data/lib/rdoc/generator/template/aliki/_sidebar_includes.rhtml +8 -6
- data/lib/rdoc/generator/template/aliki/_sidebar_installed.rhtml +1 -1
- data/lib/rdoc/generator/template/aliki/_sidebar_pages.rhtml +3 -3
- data/lib/rdoc/generator/template/aliki/_sidebar_search.rhtml +3 -3
- data/lib/rdoc/generator/template/aliki/_sidebar_sections.rhtml +1 -1
- data/lib/rdoc/generator/template/aliki/_sidebar_toggle.rhtml +1 -1
- data/lib/rdoc/generator/template/aliki/class.rhtml +71 -61
- data/lib/rdoc/generator/template/aliki/css/rdoc.css +796 -323
- data/lib/rdoc/generator/template/aliki/index.rhtml +1 -1
- data/lib/rdoc/generator/template/aliki/js/aliki.js +119 -113
- data/lib/rdoc/generator/template/aliki/js/bash_highlighter.js +167 -0
- data/lib/rdoc/generator/template/aliki/js/c_highlighter.js +1 -1
- data/lib/rdoc/generator/template/aliki/js/{search.js → search_controller.js} +16 -7
- 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/page.rhtml +1 -1
- data/lib/rdoc/generator/template/aliki/servlet_not_found.rhtml +1 -1
- data/lib/rdoc/generator/template/aliki/servlet_root.rhtml +2 -2
- data/lib/rdoc/generator/template/darkfish/_footer.rhtml +1 -1
- data/lib/rdoc/generator/template/darkfish/_sidebar_extends.rhtml +8 -6
- data/lib/rdoc/generator/template/darkfish/_sidebar_includes.rhtml +8 -6
- data/lib/rdoc/generator/template/darkfish/_sidebar_installed.rhtml +1 -1
- data/lib/rdoc/generator/template/darkfish/_sidebar_pages.rhtml +2 -2
- data/lib/rdoc/generator/template/darkfish/_sidebar_sections.rhtml +1 -1
- data/lib/rdoc/generator/template/darkfish/_sidebar_table_of_contents.rhtml +5 -5
- data/lib/rdoc/generator/template/darkfish/class.rhtml +29 -32
- data/lib/rdoc/generator/template/darkfish/css/rdoc.css +19 -1
- data/lib/rdoc/generator/template/darkfish/table_of_contents.rhtml +3 -3
- data/lib/rdoc/generator.rb +48 -46
- data/lib/rdoc/i18n/locale.rb +99 -95
- data/lib/rdoc/i18n/text.rb +109 -105
- data/lib/rdoc/i18n.rb +7 -5
- data/lib/rdoc/markdown/byte_runtime.rb +80 -0
- data/lib/rdoc/markdown.kpeg +52 -33
- data/lib/rdoc/markdown.rb +365 -177
- data/lib/rdoc/markup/blank_line.rb +25 -23
- data/lib/rdoc/markup/block_quote.rb +12 -8
- data/lib/rdoc/markup/document.rb +127 -123
- data/lib/rdoc/markup/element.rb +21 -0
- data/lib/rdoc/markup/formatter.rb +220 -203
- data/lib/rdoc/markup/hard_break.rb +30 -27
- data/lib/rdoc/markup/heading.rb +163 -77
- data/lib/rdoc/markup/include.rb +33 -29
- data/lib/rdoc/markup/indented_paragraph.rb +37 -33
- data/lib/rdoc/markup/inline_parser.rb +316 -0
- data/lib/rdoc/markup/list.rb +80 -88
- data/lib/rdoc/markup/list_item.rb +73 -85
- data/lib/rdoc/markup/paragraph.rb +23 -19
- data/lib/rdoc/markup/parser.rb +501 -497
- data/lib/rdoc/markup/pre_process.rb +284 -305
- data/lib/rdoc/markup/raw.rb +52 -55
- data/lib/rdoc/markup/rule.rb +16 -12
- data/lib/rdoc/markup/table.rb +48 -40
- data/lib/rdoc/markup/to_ansi.rb +143 -92
- data/lib/rdoc/markup/to_bs.rb +86 -102
- data/lib/rdoc/markup/to_html.rb +608 -506
- data/lib/rdoc/markup/to_html_crossref.rb +219 -210
- data/lib/rdoc/markup/to_html_snippet.rb +210 -205
- data/lib/rdoc/markup/to_joined_paragraph.rb +40 -41
- data/lib/rdoc/markup/to_label.rb +64 -51
- data/lib/rdoc/markup/to_markdown.rb +212 -184
- data/lib/rdoc/markup/to_rdoc.rb +341 -277
- data/lib/rdoc/markup/to_table_of_contents.rb +66 -62
- data/lib/rdoc/markup/to_test.rb +62 -50
- data/lib/rdoc/markup/to_tt_only.rb +83 -92
- data/lib/rdoc/markup/verbatim.rb +62 -58
- data/lib/rdoc/markup.rb +196 -215
- data/lib/rdoc/options.rb +1063 -1076
- data/lib/rdoc/parser/c.rb +1039 -1036
- data/lib/rdoc/parser/changelog.rb +320 -287
- data/lib/rdoc/parser/markdown.rb +17 -13
- data/lib/rdoc/parser/rbs.rb +279 -0
- data/lib/rdoc/parser/rd.rb +17 -13
- data/lib/rdoc/parser/ruby.rb +1231 -2222
- data/lib/rdoc/parser/ruby_colorizer.rb +303 -0
- data/lib/rdoc/parser/simple.rb +31 -27
- data/lib/rdoc/parser/text.rb +12 -8
- data/lib/rdoc/parser.rb +230 -221
- data/lib/rdoc/rbs_helper.rb +186 -0
- data/lib/rdoc/rd/inline.rb +57 -53
- data/lib/rdoc/rd.rb +90 -88
- data/lib/rdoc/rdoc.rb +547 -366
- data/lib/rdoc/ri/driver.rb +1141 -1130
- data/lib/rdoc/ri/formatter.rb +7 -3
- data/lib/rdoc/ri/paths.rb +140 -136
- data/lib/rdoc/ri/servlet.rb +456 -0
- data/lib/rdoc/ri/store.rb +4 -2
- data/lib/rdoc/ri/task.rb +55 -51
- data/lib/rdoc/ri.rb +14 -11
- data/lib/rdoc/rubygems_hook.rb +194 -192
- data/lib/rdoc/server.rb +462 -0
- data/lib/rdoc/stats/normal.rb +46 -42
- data/lib/rdoc/stats/quiet.rb +39 -35
- data/lib/rdoc/stats/verbose.rb +35 -31
- data/lib/rdoc/stats.rb +363 -338
- data/lib/rdoc/store.rb +919 -725
- data/lib/rdoc/task.rb +260 -255
- data/lib/rdoc/text.rb +164 -240
- data/lib/rdoc/token_stream.rb +88 -106
- data/lib/rdoc/tom_doc.rb +203 -201
- data/lib/rdoc/version.rb +1 -1
- data/lib/rdoc.rb +35 -7
- data/lib/rubygems_plugin.rb +2 -11
- data/rdoc-logo.svg +43 -0
- data/rdoc.gemspec +9 -7
- metadata +46 -32
- data/CONTRIBUTING.rdoc +0 -219
- data/ExampleMarkdown.md +0 -39
- data/ExampleRDoc.rdoc +0 -210
- data/lib/rdoc/code_object/anon_class.rb +0 -10
- data/lib/rdoc/code_object/ghost_method.rb +0 -6
- data/lib/rdoc/code_object/meta_method.rb +0 -6
- data/lib/rdoc/markdown/literals.kpeg +0 -21
- data/lib/rdoc/markdown/literals.rb +0 -454
- data/lib/rdoc/markup/attr_changer.rb +0 -22
- data/lib/rdoc/markup/attr_span.rb +0 -35
- data/lib/rdoc/markup/attribute_manager.rb +0 -405
- data/lib/rdoc/markup/attributes.rb +0 -70
- data/lib/rdoc/markup/regexp_handling.rb +0 -40
- data/lib/rdoc/parser/prism_ruby.rb +0 -1100
- data/lib/rdoc/parser/ripper_state_lex.rb +0 -302
- data/lib/rdoc/parser/ruby_tools.rb +0 -163
- data/lib/rdoc/servlet.rb +0 -452
data/lib/rdoc/markup/heading.rb
CHANGED
|
@@ -1,84 +1,170 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
##
|
|
3
|
-
# A heading with a level (1-6) and text
|
|
4
2
|
|
|
5
|
-
RDoc
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
3
|
+
module RDoc
|
|
4
|
+
class Markup
|
|
5
|
+
# IMPORTANT! This weird workaround is required to ensure that RDoc can correctly deserializing Marshal data from
|
|
6
|
+
# older rubies. Older rubies have `Heading` as a struct, so if we change it to a class, deserialization fails
|
|
7
|
+
if RUBY_VERSION.start_with?("4.")
|
|
8
|
+
class Heading < Element
|
|
9
|
+
#: String
|
|
10
|
+
attr_reader :text
|
|
11
|
+
|
|
12
|
+
#: Integer
|
|
13
|
+
attr_accessor :level
|
|
14
|
+
|
|
15
|
+
#: (Integer, String) -> void
|
|
16
|
+
def initialize(level, text)
|
|
17
|
+
super()
|
|
18
|
+
|
|
19
|
+
@level = level
|
|
20
|
+
@text = text
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
#: (Object) -> bool
|
|
24
|
+
def ==(other)
|
|
25
|
+
other.is_a?(Heading) && other.level == @level && other.text == @text
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
else
|
|
29
|
+
Heading = Struct.new(:level, :text)
|
|
32
30
|
end
|
|
33
31
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
32
|
+
# A heading with a level (1-6) and text
|
|
33
|
+
#
|
|
34
|
+
# RDoc syntax:
|
|
35
|
+
# = Heading 1
|
|
36
|
+
# == Heading 2
|
|
37
|
+
# === Heading 3
|
|
38
|
+
#
|
|
39
|
+
# Markdown syntax:
|
|
40
|
+
# # Heading 1
|
|
41
|
+
# ## Heading 2
|
|
42
|
+
# ### Heading 3
|
|
43
|
+
#
|
|
44
|
+
class Heading
|
|
45
|
+
# A singleton RDoc::Markup::ToLabel formatter for headings.
|
|
46
|
+
#: () -> RDoc::Markup::ToLabel
|
|
47
|
+
def self.to_label
|
|
48
|
+
@to_label ||= Markup::ToLabel.new
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
# A singleton plain HTML formatter for headings. Used for creating labels for the Table of Contents
|
|
52
|
+
#: () -> RDoc::Markup::ToHtml
|
|
53
|
+
def self.to_html
|
|
54
|
+
@to_html ||= begin
|
|
55
|
+
to_html = Markup::ToHtml.new
|
|
56
|
+
|
|
57
|
+
def to_html.handle_regexp_CROSSREF(text)
|
|
58
|
+
text.sub(/^\\/, '')
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
to_html
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
# @override
|
|
66
|
+
#: (untyped) -> void
|
|
67
|
+
def accept(visitor)
|
|
68
|
+
visitor.accept_heading(self)
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
# An HTML-safe anchor reference for this header using GitHub-style formatting:
|
|
72
|
+
# - Lowercase
|
|
73
|
+
# - Spaces converted to hyphens
|
|
74
|
+
# - Special characters removed (except hyphens)
|
|
75
|
+
#
|
|
76
|
+
# Examples:
|
|
77
|
+
# "Hello" -> "hello"
|
|
78
|
+
# "Hello World" -> "hello-world"
|
|
79
|
+
# "Foo Bar Baz" -> "foo-bar-baz"
|
|
80
|
+
#
|
|
81
|
+
#: () -> String
|
|
82
|
+
def aref
|
|
83
|
+
self.class.to_label.convert text.dup
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
# An HTML-safe anchor reference using legacy RDoc formatting:
|
|
87
|
+
# - Prefixed with "label-"
|
|
88
|
+
# - Original case preserved
|
|
89
|
+
# - Spaces converted to + (URL encoding style)
|
|
90
|
+
# - Special characters percent-encoded
|
|
91
|
+
#
|
|
92
|
+
# Returns nil if it would be the same as the GitHub-style aref (no alias needed).
|
|
93
|
+
#
|
|
94
|
+
# Examples:
|
|
95
|
+
# "hello" -> "label-hello" (different due to label- prefix)
|
|
96
|
+
# "Hello" -> "label-Hello"
|
|
97
|
+
# "Hello World" -> "label-Hello+World"
|
|
98
|
+
# "Foo Bar Baz" -> "label-Foo+Bar+Baz"
|
|
99
|
+
#
|
|
100
|
+
#: () -> String?
|
|
101
|
+
def legacy_aref
|
|
102
|
+
"label-#{self.class.to_label.convert_legacy text.dup}"
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
# Creates a fully-qualified label (GitHub-style) which includes the context's aref prefix.
|
|
106
|
+
# This helps keep IDs unique in HTML when headings appear within class/method documentation.
|
|
107
|
+
#
|
|
108
|
+
# Examples (without context):
|
|
109
|
+
# "Hello World" -> "hello-world"
|
|
110
|
+
#
|
|
111
|
+
# Examples (with context being class Foo):
|
|
112
|
+
# "Hello World" -> "class-foo-hello-world"
|
|
113
|
+
#
|
|
114
|
+
# Examples (with context being method #bar):
|
|
115
|
+
# "Hello World" -> "method-i-bar-hello-world"
|
|
116
|
+
#
|
|
117
|
+
#: (RDoc::Context?) -> String
|
|
118
|
+
def label(context = nil)
|
|
119
|
+
result = +""
|
|
120
|
+
result << "#{context.aref}-" if context&.respond_to?(:aref)
|
|
121
|
+
result << aref
|
|
122
|
+
result
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
# Creates a fully-qualified legacy label for backward compatibility.
|
|
126
|
+
# This is used to generate a secondary ID attribute on the heading's inner anchor,
|
|
127
|
+
# allowing old-style links (e.g., #label-Hello+World) to continue working.
|
|
128
|
+
#
|
|
129
|
+
# Examples (without context):
|
|
130
|
+
# "hello" -> "label-hello"
|
|
131
|
+
# "Hello World" -> "label-Hello+World"
|
|
132
|
+
#
|
|
133
|
+
# Examples (with context being class Foo):
|
|
134
|
+
# "hello" -> "class-Foo-label-hello"
|
|
135
|
+
# "Hello World" -> "class-Foo-label-Hello+World"
|
|
136
|
+
#
|
|
137
|
+
#: (RDoc::Context?) -> String
|
|
138
|
+
def legacy_label(context = nil)
|
|
139
|
+
result = +""
|
|
140
|
+
if context&.respond_to?(:legacy_aref)
|
|
141
|
+
result << "#{context.legacy_aref}-"
|
|
142
|
+
elsif context&.respond_to?(:aref)
|
|
143
|
+
result << "#{context.aref}-"
|
|
144
|
+
end
|
|
145
|
+
result << legacy_aref
|
|
146
|
+
result
|
|
147
|
+
end
|
|
148
|
+
|
|
149
|
+
# HTML markup of the text of this label without the surrounding header element.
|
|
150
|
+
#: () -> String
|
|
151
|
+
def plain_html
|
|
152
|
+
no_image_text = text
|
|
153
|
+
|
|
154
|
+
if matched = no_image_text.match(/rdoc-image:[^:]+:(.*)/)
|
|
155
|
+
no_image_text = matched[1]
|
|
156
|
+
end
|
|
157
|
+
|
|
158
|
+
self.class.to_html.to_html(no_image_text)
|
|
159
|
+
end
|
|
160
|
+
|
|
161
|
+
# @override
|
|
162
|
+
#: (PP) -> void
|
|
163
|
+
def pretty_print(q)
|
|
164
|
+
q.group 2, "[head: #{level} ", ']' do
|
|
165
|
+
q.pp text
|
|
166
|
+
end
|
|
167
|
+
end
|
|
73
168
|
end
|
|
74
|
-
|
|
75
|
-
self.class.to_html.to_html(text)
|
|
76
169
|
end
|
|
77
|
-
|
|
78
|
-
def pretty_print(q) # :nodoc:
|
|
79
|
-
q.group 2, "[head: #{level} ", ']' do
|
|
80
|
-
q.pp text
|
|
81
|
-
end
|
|
82
|
-
end
|
|
83
|
-
|
|
84
170
|
end
|
data/lib/rdoc/markup/include.rb
CHANGED
|
@@ -1,42 +1,46 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
#
|
|
6
|
-
#
|
|
2
|
+
module RDoc
|
|
3
|
+
class Markup
|
|
4
|
+
##
|
|
5
|
+
# A file included at generation time. Objects of this class are created by
|
|
6
|
+
# RDoc::RD for an extension-less include.
|
|
7
|
+
#
|
|
8
|
+
# This implementation in incomplete.
|
|
7
9
|
|
|
8
|
-
class
|
|
10
|
+
class Include
|
|
9
11
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
+
##
|
|
13
|
+
# The filename to be included, without extension
|
|
12
14
|
|
|
13
|
-
|
|
15
|
+
attr_reader :file
|
|
14
16
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
+
##
|
|
18
|
+
# Directories to search for #file
|
|
17
19
|
|
|
18
|
-
|
|
20
|
+
attr_reader :include_path
|
|
19
21
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
+
##
|
|
23
|
+
# Creates a new include that will import +file+ from +include_path+
|
|
22
24
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
25
|
+
def initialize(file, include_path)
|
|
26
|
+
@file = file
|
|
27
|
+
@include_path = include_path
|
|
28
|
+
end
|
|
27
29
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
30
|
+
def ==(other) # :nodoc:
|
|
31
|
+
self.class === other and
|
|
32
|
+
@file == other.file and @include_path == other.include_path
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def pretty_print(q) # :nodoc:
|
|
36
|
+
q.group 2, '[incl ', ']' do
|
|
37
|
+
q.text file
|
|
38
|
+
q.breakable
|
|
39
|
+
q.text 'from '
|
|
40
|
+
q.pp include_path
|
|
41
|
+
end
|
|
42
|
+
end
|
|
32
43
|
|
|
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
44
|
end
|
|
40
45
|
end
|
|
41
|
-
|
|
42
46
|
end
|
|
@@ -1,47 +1,51 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
module RDoc
|
|
3
|
+
class Markup
|
|
4
|
+
##
|
|
5
|
+
# An Indented Paragraph of text
|
|
4
6
|
|
|
5
|
-
class
|
|
7
|
+
class IndentedParagraph < Markup::Raw
|
|
6
8
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
+
##
|
|
10
|
+
# The indent in number of spaces
|
|
9
11
|
|
|
10
|
-
|
|
12
|
+
attr_reader :indent
|
|
11
13
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
14
|
+
##
|
|
15
|
+
# Creates a new IndentedParagraph containing +parts+ indented with +indent+
|
|
16
|
+
# spaces
|
|
15
17
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
+
def initialize(indent, *parts)
|
|
19
|
+
@indent = indent
|
|
18
20
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
+
super(*parts)
|
|
22
|
+
end
|
|
21
23
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
24
|
+
def ==(other) # :nodoc:
|
|
25
|
+
super and indent == other.indent
|
|
26
|
+
end
|
|
25
27
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
+
##
|
|
29
|
+
# Calls #accept_indented_paragraph on +visitor+
|
|
28
30
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
##
|
|
34
|
-
# Joins the raw paragraph text and converts inline HardBreaks to the
|
|
35
|
-
# +hard_break+ text followed by the indent.
|
|
31
|
+
def accept(visitor)
|
|
32
|
+
visitor.accept_indented_paragraph self
|
|
33
|
+
end
|
|
36
34
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
part
|
|
35
|
+
##
|
|
36
|
+
# Joins the raw paragraph text and converts inline HardBreaks to the
|
|
37
|
+
# +hard_break+ text followed by the indent.
|
|
38
|
+
|
|
39
|
+
def text(hard_break = nil)
|
|
40
|
+
@parts.map do |part|
|
|
41
|
+
if Markup::HardBreak === part
|
|
42
|
+
'%1$s%3$*2$s' % [hard_break, @indent, ' '] if hard_break
|
|
43
|
+
else
|
|
44
|
+
part
|
|
45
|
+
end
|
|
46
|
+
end.join
|
|
43
47
|
end
|
|
44
|
-
end.join
|
|
45
|
-
end
|
|
46
48
|
|
|
49
|
+
end
|
|
50
|
+
end
|
|
47
51
|
end
|