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
data/lib/rdoc/constant.rb
CHANGED
@@ -1,16 +1,15 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
# frozen_string_literal: true
|
3
2
|
##
|
4
3
|
# A constant
|
5
4
|
|
6
5
|
class RDoc::Constant < RDoc::CodeObject
|
7
6
|
|
7
|
+
MARSHAL_VERSION = 0 # :nodoc:
|
8
|
+
|
8
9
|
##
|
9
|
-
#
|
10
|
-
# this is the RDoc::ClassModule it is an alias for.
|
11
|
-
# +nil+ otherwise.
|
10
|
+
# Sets the module or class this is constant is an alias for.
|
12
11
|
|
13
|
-
|
12
|
+
attr_writer :is_alias_for
|
14
13
|
|
15
14
|
##
|
16
15
|
# The constant's name
|
@@ -22,14 +21,23 @@ class RDoc::Constant < RDoc::CodeObject
|
|
22
21
|
|
23
22
|
attr_accessor :value
|
24
23
|
|
24
|
+
##
|
25
|
+
# The constant's visibility
|
26
|
+
|
27
|
+
attr_accessor :visibility
|
28
|
+
|
25
29
|
##
|
26
30
|
# Creates a new constant with +name+, +value+ and +comment+
|
27
31
|
|
28
32
|
def initialize(name, value, comment)
|
29
33
|
super()
|
30
|
-
|
34
|
+
|
35
|
+
@name = name
|
31
36
|
@value = value
|
37
|
+
|
32
38
|
@is_alias_for = nil
|
39
|
+
@visibility = :public
|
40
|
+
|
33
41
|
self.comment = comment
|
34
42
|
end
|
35
43
|
|
@@ -56,7 +64,36 @@ class RDoc::Constant < RDoc::CodeObject
|
|
56
64
|
# for a documented class or module.
|
57
65
|
|
58
66
|
def documented?
|
59
|
-
|
67
|
+
return true if super
|
68
|
+
return false unless @is_alias_for
|
69
|
+
case @is_alias_for
|
70
|
+
when String then
|
71
|
+
found = @store.find_class_or_module @is_alias_for
|
72
|
+
return false unless found
|
73
|
+
@is_alias_for = found
|
74
|
+
end
|
75
|
+
@is_alias_for.documented?
|
76
|
+
end
|
77
|
+
|
78
|
+
##
|
79
|
+
# Full constant name including namespace
|
80
|
+
|
81
|
+
def full_name
|
82
|
+
@full_name ||= "#{parent_name}::#{@name}"
|
83
|
+
end
|
84
|
+
|
85
|
+
##
|
86
|
+
# The module or class this constant is an alias for
|
87
|
+
|
88
|
+
def is_alias_for
|
89
|
+
case @is_alias_for
|
90
|
+
when String then
|
91
|
+
found = @store.find_class_or_module @is_alias_for
|
92
|
+
@is_alias_for = found if found
|
93
|
+
@is_alias_for
|
94
|
+
else
|
95
|
+
@is_alias_for
|
96
|
+
end
|
60
97
|
end
|
61
98
|
|
62
99
|
def inspect # :nodoc:
|
@@ -67,12 +104,76 @@ class RDoc::Constant < RDoc::CodeObject
|
|
67
104
|
end
|
68
105
|
|
69
106
|
##
|
70
|
-
#
|
107
|
+
# Dumps this Constant for use by ri. See also #marshal_load
|
108
|
+
|
109
|
+
def marshal_dump
|
110
|
+
alias_name = case found = is_alias_for
|
111
|
+
when RDoc::CodeObject then found.full_name
|
112
|
+
else found
|
113
|
+
end
|
114
|
+
|
115
|
+
[ MARSHAL_VERSION,
|
116
|
+
@name,
|
117
|
+
full_name,
|
118
|
+
@visibility,
|
119
|
+
alias_name,
|
120
|
+
parse(@comment),
|
121
|
+
@file.relative_name,
|
122
|
+
parent.name,
|
123
|
+
parent.class,
|
124
|
+
section.title,
|
125
|
+
]
|
126
|
+
end
|
127
|
+
|
128
|
+
##
|
129
|
+
# Loads this Constant from +array+. For a loaded Constant the following
|
130
|
+
# methods will return cached values:
|
131
|
+
#
|
132
|
+
# * #full_name
|
133
|
+
# * #parent_name
|
134
|
+
|
135
|
+
def marshal_load array
|
136
|
+
initialize array[1], nil, array[5]
|
137
|
+
|
138
|
+
@full_name = array[2]
|
139
|
+
@visibility = array[3] || :public
|
140
|
+
@is_alias_for = array[4]
|
141
|
+
# 5 handled above
|
142
|
+
# 6 handled below
|
143
|
+
@parent_name = array[7]
|
144
|
+
@parent_class = array[8]
|
145
|
+
@section_title = array[9]
|
146
|
+
|
147
|
+
@file = RDoc::TopLevel.new array[6]
|
148
|
+
end
|
149
|
+
|
150
|
+
##
|
151
|
+
# Path to this constant for use with HTML generator output.
|
71
152
|
|
72
153
|
def path
|
73
154
|
"#{@parent.path}##{@name}"
|
74
155
|
end
|
75
156
|
|
157
|
+
def pretty_print q # :nodoc:
|
158
|
+
q.group 2, "[#{self.class.name} #{full_name}", "]" do
|
159
|
+
unless comment.empty? then
|
160
|
+
q.breakable
|
161
|
+
q.text "comment:"
|
162
|
+
q.breakable
|
163
|
+
q.pp @comment
|
164
|
+
end
|
165
|
+
end
|
166
|
+
end
|
167
|
+
|
168
|
+
##
|
169
|
+
# Sets the store for this class or module and its contained code objects.
|
170
|
+
|
171
|
+
def store= store
|
172
|
+
super
|
173
|
+
|
174
|
+
@file = @store.add_file @file.full_name if @file
|
175
|
+
end
|
176
|
+
|
76
177
|
def to_s # :nodoc:
|
77
178
|
parent_name = parent ? parent.full_name : '(unknown)'
|
78
179
|
if is_alias_for
|
@@ -0,0 +1,232 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
##
|
3
|
+
# A section of documentation like:
|
4
|
+
#
|
5
|
+
# # :section: The title
|
6
|
+
# # The body
|
7
|
+
#
|
8
|
+
# Sections can be referenced multiple times and will be collapsed into a
|
9
|
+
# single section.
|
10
|
+
|
11
|
+
class RDoc::Context::Section
|
12
|
+
|
13
|
+
include RDoc::Text
|
14
|
+
|
15
|
+
MARSHAL_VERSION = 0 # :nodoc:
|
16
|
+
|
17
|
+
##
|
18
|
+
# Section comment
|
19
|
+
|
20
|
+
attr_reader :comment
|
21
|
+
|
22
|
+
##
|
23
|
+
# Section comments
|
24
|
+
|
25
|
+
attr_reader :comments
|
26
|
+
|
27
|
+
##
|
28
|
+
# Context this Section lives in
|
29
|
+
|
30
|
+
attr_reader :parent
|
31
|
+
|
32
|
+
##
|
33
|
+
# Section title
|
34
|
+
|
35
|
+
attr_reader :title
|
36
|
+
|
37
|
+
##
|
38
|
+
# Creates a new section with +title+ and +comment+
|
39
|
+
|
40
|
+
def initialize parent, title, comment
|
41
|
+
@parent = parent
|
42
|
+
@title = title ? title.strip : title
|
43
|
+
|
44
|
+
@comments = []
|
45
|
+
|
46
|
+
add_comment comment
|
47
|
+
end
|
48
|
+
|
49
|
+
##
|
50
|
+
# Sections are equal when they have the same #title
|
51
|
+
|
52
|
+
def == other
|
53
|
+
self.class === other and @title == other.title
|
54
|
+
end
|
55
|
+
|
56
|
+
alias eql? ==
|
57
|
+
|
58
|
+
##
|
59
|
+
# Adds +comment+ to this section
|
60
|
+
|
61
|
+
def add_comment comment
|
62
|
+
comment = extract_comment comment
|
63
|
+
|
64
|
+
return if comment.empty?
|
65
|
+
|
66
|
+
case comment
|
67
|
+
when RDoc::Comment then
|
68
|
+
@comments << comment
|
69
|
+
when RDoc::Markup::Document then
|
70
|
+
@comments.concat comment.parts
|
71
|
+
when Array then
|
72
|
+
@comments.concat comment
|
73
|
+
else
|
74
|
+
raise TypeError, "unknown comment type: #{comment.inspect}"
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
##
|
79
|
+
# Anchor reference for linking to this section
|
80
|
+
|
81
|
+
def aref
|
82
|
+
title = @title || '[untitled]'
|
83
|
+
|
84
|
+
CGI.escape(title).gsub('%', '-').sub(/^-/, '')
|
85
|
+
end
|
86
|
+
|
87
|
+
##
|
88
|
+
# Extracts the comment for this section from the original comment block.
|
89
|
+
# If the first line contains :section:, strip it and use the rest.
|
90
|
+
# Otherwise remove lines up to the line containing :section:, and look
|
91
|
+
# for those lines again at the end and remove them. This lets us write
|
92
|
+
#
|
93
|
+
# # :section: The title
|
94
|
+
# # The body
|
95
|
+
|
96
|
+
def extract_comment comment
|
97
|
+
case comment
|
98
|
+
when Array then
|
99
|
+
comment.map do |c|
|
100
|
+
extract_comment c
|
101
|
+
end
|
102
|
+
when nil
|
103
|
+
RDoc::Comment.new ''
|
104
|
+
when RDoc::Comment then
|
105
|
+
if comment.text =~ /^#[ \t]*:section:.*\n/ then
|
106
|
+
start = $`
|
107
|
+
rest = $'
|
108
|
+
|
109
|
+
comment.text = if start.empty? then
|
110
|
+
rest
|
111
|
+
else
|
112
|
+
rest.sub(/#{start.chomp}\Z/, '')
|
113
|
+
end
|
114
|
+
end
|
115
|
+
|
116
|
+
comment
|
117
|
+
when RDoc::Markup::Document then
|
118
|
+
comment
|
119
|
+
else
|
120
|
+
raise TypeError, "unknown comment #{comment.inspect}"
|
121
|
+
end
|
122
|
+
end
|
123
|
+
|
124
|
+
def inspect # :nodoc:
|
125
|
+
"#<%s:0x%x %p>" % [self.class, object_id, title]
|
126
|
+
end
|
127
|
+
|
128
|
+
def hash # :nodoc:
|
129
|
+
@title.hash
|
130
|
+
end
|
131
|
+
|
132
|
+
##
|
133
|
+
# The files comments in this section come from
|
134
|
+
|
135
|
+
def in_files
|
136
|
+
return [] if @comments.empty?
|
137
|
+
|
138
|
+
case @comments
|
139
|
+
when Array then
|
140
|
+
@comments.map do |comment|
|
141
|
+
comment.file
|
142
|
+
end
|
143
|
+
when RDoc::Markup::Document then
|
144
|
+
@comment.parts.map do |document|
|
145
|
+
document.file
|
146
|
+
end
|
147
|
+
else
|
148
|
+
raise RDoc::Error, "BUG: unknown comment class #{@comments.class}"
|
149
|
+
end
|
150
|
+
end
|
151
|
+
|
152
|
+
##
|
153
|
+
# Serializes this Section. The title and parsed comment are saved, but not
|
154
|
+
# the section parent which must be restored manually.
|
155
|
+
|
156
|
+
def marshal_dump
|
157
|
+
[
|
158
|
+
MARSHAL_VERSION,
|
159
|
+
@title,
|
160
|
+
parse,
|
161
|
+
]
|
162
|
+
end
|
163
|
+
|
164
|
+
##
|
165
|
+
# De-serializes this Section. The section parent must be restored manually.
|
166
|
+
|
167
|
+
def marshal_load array
|
168
|
+
@parent = nil
|
169
|
+
|
170
|
+
@title = array[1]
|
171
|
+
@comments = array[2]
|
172
|
+
end
|
173
|
+
|
174
|
+
##
|
175
|
+
# Parses +comment_location+ into an RDoc::Markup::Document composed of
|
176
|
+
# multiple RDoc::Markup::Documents with their file set.
|
177
|
+
|
178
|
+
def parse
|
179
|
+
case @comments
|
180
|
+
when String then
|
181
|
+
super
|
182
|
+
when Array then
|
183
|
+
docs = @comments.map do |comment, location|
|
184
|
+
doc = super comment
|
185
|
+
doc.file = location if location
|
186
|
+
doc
|
187
|
+
end
|
188
|
+
|
189
|
+
RDoc::Markup::Document.new(*docs)
|
190
|
+
when RDoc::Comment then
|
191
|
+
doc = super @comments.text, comments.format
|
192
|
+
doc.file = @comments.location
|
193
|
+
doc
|
194
|
+
when RDoc::Markup::Document then
|
195
|
+
return @comments
|
196
|
+
else
|
197
|
+
raise ArgumentError, "unknown comment class #{comments.class}"
|
198
|
+
end
|
199
|
+
end
|
200
|
+
|
201
|
+
##
|
202
|
+
# The section's title, or 'Top Section' if the title is nil.
|
203
|
+
#
|
204
|
+
# This is used by the table of contents template so the name is silly.
|
205
|
+
|
206
|
+
def plain_html
|
207
|
+
@title || 'Top Section'
|
208
|
+
end
|
209
|
+
|
210
|
+
##
|
211
|
+
# Removes a comment from this section if it is from the same file as
|
212
|
+
# +comment+
|
213
|
+
|
214
|
+
def remove_comment comment
|
215
|
+
return if @comments.empty?
|
216
|
+
|
217
|
+
case @comments
|
218
|
+
when Array then
|
219
|
+
@comments.delete_if do |my_comment|
|
220
|
+
my_comment.file == comment.file
|
221
|
+
end
|
222
|
+
when RDoc::Markup::Document then
|
223
|
+
@comments.parts.delete_if do |document|
|
224
|
+
document.file == comment.file.name
|
225
|
+
end
|
226
|
+
else
|
227
|
+
raise RDoc::Error, "BUG: unknown comment class #{@comments.class}"
|
228
|
+
end
|
229
|
+
end
|
230
|
+
|
231
|
+
end
|
232
|
+
|