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.

Files changed (247) hide show
  1. checksums.yaml +7 -0
  2. data/CONTRIBUTING.rdoc +220 -0
  3. data/CVE-2013-0256.rdoc +49 -0
  4. data/ExampleMarkdown.md +37 -0
  5. data/ExampleRDoc.rdoc +208 -0
  6. data/Gemfile +12 -0
  7. data/History.rdoc +1666 -0
  8. data/LEGAL.rdoc +50 -0
  9. data/LICENSE.rdoc +57 -0
  10. data/README.rdoc +129 -0
  11. data/RI.rdoc +57 -0
  12. data/Rakefile +84 -81
  13. data/TODO.rdoc +59 -0
  14. data/bin/console +7 -0
  15. data/bin/setup +6 -0
  16. data/{bin → exe}/rdoc +11 -2
  17. data/exe/ri +12 -0
  18. data/lib/rdoc/alias.rb +1 -2
  19. data/lib/rdoc/anon_class.rb +3 -2
  20. data/lib/rdoc/any_method.rb +234 -40
  21. data/lib/rdoc/attr.rb +79 -11
  22. data/lib/rdoc/class_module.rb +443 -71
  23. data/lib/rdoc/code_object.rb +216 -20
  24. data/lib/rdoc/code_objects.rb +4 -21
  25. data/lib/rdoc/comment.rb +250 -0
  26. data/lib/rdoc/constant.rb +110 -9
  27. data/lib/rdoc/context/section.rb +232 -0
  28. data/lib/rdoc/context.rb +392 -172
  29. data/lib/rdoc/cross_reference.rb +202 -0
  30. data/lib/rdoc/encoding.rb +83 -28
  31. data/lib/rdoc/erb_partial.rb +19 -0
  32. data/lib/rdoc/erbio.rb +8 -3
  33. data/lib/rdoc/extend.rb +10 -0
  34. data/lib/rdoc/generator/darkfish.rb +507 -84
  35. data/lib/rdoc/generator/json_index.rb +300 -0
  36. data/lib/rdoc/generator/markup.rb +27 -74
  37. data/lib/rdoc/generator/pot/message_extractor.rb +68 -0
  38. data/lib/rdoc/generator/pot/po.rb +84 -0
  39. data/lib/rdoc/generator/pot/po_entry.rb +141 -0
  40. data/lib/rdoc/generator/pot.rb +98 -0
  41. data/lib/rdoc/generator/ri.rb +8 -62
  42. data/lib/rdoc/generator/template/darkfish/_footer.rhtml +5 -0
  43. data/lib/rdoc/generator/template/darkfish/_head.rhtml +22 -0
  44. data/lib/rdoc/generator/template/darkfish/_sidebar_VCS_info.rhtml +19 -0
  45. data/lib/rdoc/generator/template/darkfish/_sidebar_classes.rhtml +9 -0
  46. data/lib/rdoc/generator/template/darkfish/_sidebar_extends.rhtml +15 -0
  47. data/lib/rdoc/generator/template/darkfish/_sidebar_in_files.rhtml +9 -0
  48. data/lib/rdoc/generator/template/darkfish/_sidebar_includes.rhtml +15 -0
  49. data/lib/rdoc/generator/template/darkfish/_sidebar_installed.rhtml +15 -0
  50. data/lib/rdoc/generator/template/darkfish/_sidebar_methods.rhtml +12 -0
  51. data/lib/rdoc/generator/template/darkfish/_sidebar_navigation.rhtml +11 -0
  52. data/lib/rdoc/generator/template/darkfish/_sidebar_pages.rhtml +12 -0
  53. data/lib/rdoc/generator/template/darkfish/_sidebar_parent.rhtml +11 -0
  54. data/lib/rdoc/generator/template/darkfish/_sidebar_search.rhtml +14 -0
  55. data/lib/rdoc/generator/template/darkfish/_sidebar_sections.rhtml +11 -0
  56. data/lib/rdoc/generator/template/darkfish/_sidebar_table_of_contents.rhtml +18 -0
  57. data/lib/rdoc/generator/template/darkfish/class.rhtml +172 -0
  58. data/lib/rdoc/generator/template/darkfish/css/fonts.css +167 -0
  59. data/lib/rdoc/generator/template/darkfish/css/rdoc.css +639 -0
  60. data/lib/rdoc/generator/template/darkfish/fonts/Lato-Light.ttf +0 -0
  61. data/lib/rdoc/generator/template/darkfish/fonts/Lato-LightItalic.ttf +0 -0
  62. data/lib/rdoc/generator/template/darkfish/fonts/Lato-Regular.ttf +0 -0
  63. data/lib/rdoc/generator/template/darkfish/fonts/Lato-RegularItalic.ttf +0 -0
  64. data/lib/rdoc/generator/template/darkfish/fonts/SourceCodePro-Bold.ttf +0 -0
  65. data/lib/rdoc/generator/template/darkfish/fonts/SourceCodePro-Regular.ttf +0 -0
  66. data/lib/rdoc/generator/template/darkfish/images/add.png +0 -0
  67. data/lib/rdoc/generator/template/darkfish/images/arrow_up.png +0 -0
  68. data/lib/rdoc/generator/template/darkfish/images/delete.png +0 -0
  69. data/lib/rdoc/generator/template/darkfish/images/tag_blue.png +0 -0
  70. data/lib/rdoc/generator/template/darkfish/images/transparent.png +0 -0
  71. data/lib/rdoc/generator/template/darkfish/index.rhtml +18 -60
  72. data/lib/rdoc/generator/template/darkfish/js/darkfish.js +51 -83
  73. data/lib/rdoc/generator/template/darkfish/js/search.js +110 -0
  74. data/lib/rdoc/generator/template/darkfish/page.rhtml +18 -0
  75. data/lib/rdoc/generator/template/darkfish/servlet_not_found.rhtml +18 -0
  76. data/lib/rdoc/generator/template/darkfish/servlet_root.rhtml +62 -0
  77. data/lib/rdoc/generator/template/darkfish/table_of_contents.rhtml +58 -0
  78. data/lib/rdoc/generator/template/json_index/.document +1 -0
  79. data/lib/rdoc/generator/template/json_index/js/navigation.js +105 -0
  80. data/lib/rdoc/generator/template/json_index/js/searcher.js +229 -0
  81. data/lib/rdoc/generator.rb +24 -13
  82. data/lib/rdoc/ghost_method.rb +1 -2
  83. data/lib/rdoc/i18n/locale.rb +102 -0
  84. data/lib/rdoc/i18n/text.rb +126 -0
  85. data/lib/rdoc/i18n.rb +10 -0
  86. data/lib/rdoc/include.rb +5 -95
  87. data/lib/rdoc/known_classes.rb +5 -2
  88. data/lib/rdoc/markdown/entities.rb +2132 -0
  89. data/lib/rdoc/markdown/literals.kpeg +23 -0
  90. data/lib/rdoc/markdown/literals.rb +416 -0
  91. data/lib/rdoc/markdown.kpeg +1237 -0
  92. data/lib/rdoc/markdown.rb +16684 -0
  93. data/lib/rdoc/markup/attr_changer.rb +23 -0
  94. data/lib/rdoc/markup/attr_span.rb +36 -0
  95. data/lib/rdoc/markup/attribute_manager.rb +135 -62
  96. data/lib/rdoc/markup/attributes.rb +71 -0
  97. data/lib/rdoc/markup/blank_line.rb +1 -0
  98. data/lib/rdoc/markup/block_quote.rb +15 -0
  99. data/lib/rdoc/markup/document.rb +96 -9
  100. data/lib/rdoc/markup/formatter.rb +138 -25
  101. data/lib/rdoc/markup/hard_break.rb +32 -0
  102. data/lib/rdoc/markup/heading.rb +61 -2
  103. data/lib/rdoc/markup/include.rb +43 -0
  104. data/lib/rdoc/markup/indented_paragraph.rb +48 -0
  105. data/lib/rdoc/markup/list.rb +25 -4
  106. data/lib/rdoc/markup/list_item.rb +18 -4
  107. data/lib/rdoc/markup/paragraph.rb +15 -0
  108. data/lib/rdoc/markup/parser.rb +180 -88
  109. data/lib/rdoc/markup/pre_process.rb +183 -38
  110. data/lib/rdoc/markup/raw.rb +6 -5
  111. data/lib/rdoc/markup/regexp_handling.rb +41 -0
  112. data/lib/rdoc/markup/rule.rb +1 -0
  113. data/lib/rdoc/markup/table.rb +47 -0
  114. data/lib/rdoc/markup/to_ansi.rb +17 -7
  115. data/lib/rdoc/markup/to_bs.rb +5 -8
  116. data/lib/rdoc/markup/to_html.rb +238 -137
  117. data/lib/rdoc/markup/to_html_crossref.rb +125 -152
  118. data/lib/rdoc/markup/to_html_snippet.rb +285 -0
  119. data/lib/rdoc/markup/to_joined_paragraph.rb +47 -0
  120. data/lib/rdoc/markup/to_label.rb +75 -0
  121. data/lib/rdoc/markup/to_markdown.rb +192 -0
  122. data/lib/rdoc/markup/to_rdoc.rb +85 -15
  123. data/lib/rdoc/markup/to_table_of_contents.rb +89 -0
  124. data/lib/rdoc/markup/to_test.rb +2 -4
  125. data/lib/rdoc/markup/to_tt_only.rb +121 -0
  126. data/lib/rdoc/markup/verbatim.rb +39 -0
  127. data/lib/rdoc/markup.rb +388 -110
  128. data/lib/rdoc/meta_method.rb +1 -2
  129. data/lib/rdoc/method_attr.rb +87 -21
  130. data/lib/rdoc/mixin.rb +121 -0
  131. data/lib/rdoc/normal_class.rb +39 -10
  132. data/lib/rdoc/normal_module.rb +22 -7
  133. data/lib/rdoc/options.rb +613 -73
  134. data/lib/rdoc/parser/c.rb +621 -287
  135. data/lib/rdoc/parser/changelog.rb +335 -0
  136. data/lib/rdoc/parser/markdown.rb +24 -0
  137. data/lib/rdoc/parser/rd.rb +23 -0
  138. data/lib/rdoc/parser/ripper_state_lex.rb +590 -0
  139. data/lib/rdoc/parser/ruby.rb +1368 -762
  140. data/lib/rdoc/parser/ruby_tools.rb +42 -35
  141. data/lib/rdoc/parser/simple.rb +23 -11
  142. data/lib/rdoc/parser/text.rb +12 -0
  143. data/lib/rdoc/parser.rb +162 -89
  144. data/lib/rdoc/rd/block_parser.rb +1056 -0
  145. data/lib/rdoc/rd/block_parser.ry +639 -0
  146. data/lib/rdoc/rd/inline.rb +72 -0
  147. data/lib/rdoc/rd/inline_parser.rb +1208 -0
  148. data/lib/rdoc/rd/inline_parser.ry +593 -0
  149. data/lib/rdoc/rd.rb +100 -0
  150. data/lib/rdoc/rdoc.rb +208 -115
  151. data/lib/rdoc/require.rb +1 -2
  152. data/lib/rdoc/ri/driver.rb +734 -239
  153. data/lib/rdoc/ri/formatter.rb +1 -0
  154. data/lib/rdoc/ri/paths.rb +91 -48
  155. data/lib/rdoc/ri/store.rb +3 -261
  156. data/lib/rdoc/ri/task.rb +71 -0
  157. data/lib/rdoc/ri.rb +5 -2
  158. data/lib/rdoc/rubygems_hook.rb +246 -0
  159. data/lib/rdoc/servlet.rb +451 -0
  160. data/lib/rdoc/single_class.rb +14 -2
  161. data/lib/rdoc/stats/normal.rb +19 -12
  162. data/lib/rdoc/stats/quiet.rb +1 -0
  163. data/lib/rdoc/stats/verbose.rb +1 -0
  164. data/lib/rdoc/stats.rb +262 -104
  165. data/lib/rdoc/store.rb +979 -0
  166. data/lib/rdoc/task.rb +84 -44
  167. data/lib/rdoc/text.rb +117 -72
  168. data/lib/rdoc/token_stream.rb +73 -4
  169. data/lib/rdoc/tom_doc.rb +263 -0
  170. data/lib/rdoc/top_level.rb +111 -261
  171. data/lib/rdoc/version.rb +8 -0
  172. data/lib/rdoc.rb +127 -64
  173. data/man/ri.1 +247 -0
  174. data/rdoc.gemspec +249 -0
  175. metadata +171 -291
  176. data/.autotest +0 -16
  177. data/.document +0 -5
  178. data/History.txt +0 -594
  179. data/LICENSE.txt +0 -57
  180. data/Manifest.txt +0 -158
  181. data/README.txt +0 -45
  182. data/RI.txt +0 -58
  183. data/bin/ri +0 -5
  184. data/lib/rdoc/gauntlet.rb +0 -52
  185. data/lib/rdoc/generator/template/darkfish/classpage.rhtml +0 -296
  186. data/lib/rdoc/generator/template/darkfish/filepage.rhtml +0 -124
  187. data/lib/rdoc/generator/template/darkfish/js/jquery.js +0 -32
  188. data/lib/rdoc/generator/template/darkfish/js/quicksearch.js +0 -114
  189. data/lib/rdoc/generator/template/darkfish/js/thickbox-compressed.js +0 -10
  190. data/lib/rdoc/generator/template/darkfish/rdoc.css +0 -706
  191. data/lib/rdoc/markup/formatter_test_case.rb +0 -689
  192. data/lib/rdoc/markup/inline.rb +0 -137
  193. data/lib/rdoc/markup/text_formatter_test_case.rb +0 -116
  194. data/lib/rdoc/ruby_lex.rb +0 -1291
  195. data/lib/rdoc/ruby_token.rb +0 -416
  196. data/test/README +0 -1
  197. data/test/binary.dat +0 -0
  198. data/test/hidden.zip.txt +0 -1
  199. data/test/test.ja.rdoc +0 -10
  200. data/test/test.ja.txt +0 -8
  201. data/test/test.txt +0 -1
  202. data/test/test_attribute_manager.rb +0 -120
  203. data/test/test_rdoc_alias.rb +0 -13
  204. data/test/test_rdoc_any_method.rb +0 -126
  205. data/test/test_rdoc_attr.rb +0 -61
  206. data/test/test_rdoc_class_module.rb +0 -233
  207. data/test/test_rdoc_code_object.rb +0 -165
  208. data/test/test_rdoc_constant.rb +0 -15
  209. data/test/test_rdoc_context.rb +0 -370
  210. data/test/test_rdoc_encoding.rb +0 -166
  211. data/test/test_rdoc_generator_darkfish.rb +0 -119
  212. data/test/test_rdoc_generator_ri.rb +0 -76
  213. data/test/test_rdoc_include.rb +0 -96
  214. data/test/test_rdoc_markup.rb +0 -37
  215. data/test/test_rdoc_markup_attribute_manager.rb +0 -240
  216. data/test/test_rdoc_markup_document.rb +0 -51
  217. data/test/test_rdoc_markup_paragraph.rb +0 -9
  218. data/test/test_rdoc_markup_parser.rb +0 -1395
  219. data/test/test_rdoc_markup_pre_process.rb +0 -185
  220. data/test/test_rdoc_markup_raw.rb +0 -27
  221. data/test/test_rdoc_markup_to_ansi.rb +0 -328
  222. data/test/test_rdoc_markup_to_bs.rb +0 -341
  223. data/test/test_rdoc_markup_to_html.rb +0 -335
  224. data/test/test_rdoc_markup_to_html_crossref.rb +0 -169
  225. data/test/test_rdoc_markup_to_rdoc.rb +0 -327
  226. data/test/test_rdoc_method_attr.rb +0 -122
  227. data/test/test_rdoc_normal_class.rb +0 -17
  228. data/test/test_rdoc_normal_module.rb +0 -31
  229. data/test/test_rdoc_options.rb +0 -342
  230. data/test/test_rdoc_parser.rb +0 -83
  231. data/test/test_rdoc_parser_c.rb +0 -912
  232. data/test/test_rdoc_parser_ruby.rb +0 -1754
  233. data/test/test_rdoc_parser_simple.rb +0 -99
  234. data/test/test_rdoc_rdoc.rb +0 -164
  235. data/test/test_rdoc_require.rb +0 -25
  236. data/test/test_rdoc_ri_driver.rb +0 -846
  237. data/test/test_rdoc_ri_paths.rb +0 -43
  238. data/test/test_rdoc_ri_store.rb +0 -352
  239. data/test/test_rdoc_ruby_lex.rb +0 -23
  240. data/test/test_rdoc_stats.rb +0 -38
  241. data/test/test_rdoc_task.rb +0 -92
  242. data/test/test_rdoc_text.rb +0 -251
  243. data/test/test_rdoc_top_level.rb +0 -120
  244. data/test/xref_data.rb +0 -62
  245. data/test/xref_test_case.rb +0 -61
  246. data.tar.gz.sig +0 -3
  247. metadata.gz.sig +0 -0
@@ -1,9 +1,14 @@
1
- require 'rdoc/markup'
2
-
1
+ # frozen_string_literal: true
3
2
  ##
4
3
  # Base class for RDoc markup formatters
5
4
  #
6
- # Formatters use a visitor pattern to convert content into output.
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
- @markup = RDoc::Markup.new
21
- @am = @markup.attribute_manager
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 = RDoc::Markup::Attribute.bitmap_for :TT
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 = RDoc::Markup::Attribute.bitmap_for name
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(content)
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::Special then
65
- res << convert_special(item)
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 specials. See RDoc::Markup#add_special
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
- RDoc::Markup::Attribute.each_name_of special.type do |name|
81
- method_name = "handle_special_#{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
- special.text = send method_name, special
159
+ target.text = public_send method_name, target
85
160
  handled = true
86
161
  end
87
162
  end
88
163
 
89
- raise "Unhandled special: #{special}" unless handled
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
- special.text
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
+
@@ -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
- class RDoc::Markup::Heading < Struct.new :level, :text
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 +wisitor+
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
+
@@ -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.push(*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.push(*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.push(*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
- if @label then
68
- q.text @label
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.push(*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