mega-max-hub 0.0.1

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.
Files changed (218) hide show
  1. checksums.yaml +7 -0
  2. data/mega-max-hub.gemspec +11 -0
  3. data/rdoc-8.0.0/CONTRIBUTING.md +195 -0
  4. data/rdoc-8.0.0/CVE-2013-0256.rdoc +49 -0
  5. data/rdoc-8.0.0/History.rdoc +1668 -0
  6. data/rdoc-8.0.0/LEGAL.rdoc +56 -0
  7. data/rdoc-8.0.0/LICENSE.rdoc +63 -0
  8. data/rdoc-8.0.0/README.md +236 -0
  9. data/rdoc-8.0.0/RI.md +842 -0
  10. data/rdoc-8.0.0/TODO.rdoc +60 -0
  11. data/rdoc-8.0.0/doc/markup_reference/markdown.md +659 -0
  12. data/rdoc-8.0.0/doc/markup_reference/rdoc.rdoc +1169 -0
  13. data/rdoc-8.0.0/exe/rdoc +43 -0
  14. data/rdoc-8.0.0/exe/ri +12 -0
  15. data/rdoc-8.0.0/lib/rdoc/code_object/alias.rb +98 -0
  16. data/rdoc-8.0.0/lib/rdoc/code_object/any_method.rb +387 -0
  17. data/rdoc-8.0.0/lib/rdoc/code_object/attr.rb +178 -0
  18. data/rdoc-8.0.0/lib/rdoc/code_object/class_module.rb +969 -0
  19. data/rdoc-8.0.0/lib/rdoc/code_object/constant.rb +221 -0
  20. data/rdoc-8.0.0/lib/rdoc/code_object/context/section.rb +182 -0
  21. data/rdoc-8.0.0/lib/rdoc/code_object/context.rb +1238 -0
  22. data/rdoc-8.0.0/lib/rdoc/code_object/extend.rb +9 -0
  23. data/rdoc-8.0.0/lib/rdoc/code_object/include.rb +9 -0
  24. data/rdoc-8.0.0/lib/rdoc/code_object/method_attr.rb +417 -0
  25. data/rdoc-8.0.0/lib/rdoc/code_object/mixin.rb +123 -0
  26. data/rdoc-8.0.0/lib/rdoc/code_object/normal_class.rb +92 -0
  27. data/rdoc-8.0.0/lib/rdoc/code_object/normal_module.rb +73 -0
  28. data/rdoc-8.0.0/lib/rdoc/code_object/require.rb +51 -0
  29. data/rdoc-8.0.0/lib/rdoc/code_object/single_class.rb +30 -0
  30. data/rdoc-8.0.0/lib/rdoc/code_object/top_level.rb +286 -0
  31. data/rdoc-8.0.0/lib/rdoc/code_object.rb +393 -0
  32. data/rdoc-8.0.0/lib/rdoc/code_objects.rb +5 -0
  33. data/rdoc-8.0.0/lib/rdoc/comment.rb +353 -0
  34. data/rdoc-8.0.0/lib/rdoc/cross_reference.rb +215 -0
  35. data/rdoc-8.0.0/lib/rdoc/encoding.rb +120 -0
  36. data/rdoc-8.0.0/lib/rdoc/erb_partial.rb +18 -0
  37. data/rdoc-8.0.0/lib/rdoc/erbio.rb +37 -0
  38. data/rdoc-8.0.0/lib/rdoc/generator/aliki.rb +200 -0
  39. data/rdoc-8.0.0/lib/rdoc/generator/darkfish.rb +824 -0
  40. data/rdoc-8.0.0/lib/rdoc/generator/json_index.rb +284 -0
  41. data/rdoc-8.0.0/lib/rdoc/generator/markup.rb +196 -0
  42. data/rdoc-8.0.0/lib/rdoc/generator/pot/message_extractor.rb +68 -0
  43. data/rdoc-8.0.0/lib/rdoc/generator/pot/po.rb +84 -0
  44. data/rdoc-8.0.0/lib/rdoc/generator/pot/po_entry.rb +141 -0
  45. data/rdoc-8.0.0/lib/rdoc/generator/pot.rb +94 -0
  46. data/rdoc-8.0.0/lib/rdoc/generator/ri.rb +30 -0
  47. data/rdoc-8.0.0/lib/rdoc/generator/template/aliki/DESIGN.md +536 -0
  48. data/rdoc-8.0.0/lib/rdoc/generator/template/aliki/_aside_toc.rhtml +8 -0
  49. data/rdoc-8.0.0/lib/rdoc/generator/template/aliki/_footer.rhtml +23 -0
  50. data/rdoc-8.0.0/lib/rdoc/generator/template/aliki/_head.rhtml +163 -0
  51. data/rdoc-8.0.0/lib/rdoc/generator/template/aliki/_header.rhtml +56 -0
  52. data/rdoc-8.0.0/lib/rdoc/generator/template/aliki/_icons.rhtml +208 -0
  53. data/rdoc-8.0.0/lib/rdoc/generator/template/aliki/_sidebar_ancestors.rhtml +16 -0
  54. data/rdoc-8.0.0/lib/rdoc/generator/template/aliki/_sidebar_classes.rhtml +15 -0
  55. data/rdoc-8.0.0/lib/rdoc/generator/template/aliki/_sidebar_extends.rhtml +27 -0
  56. data/rdoc-8.0.0/lib/rdoc/generator/template/aliki/_sidebar_includes.rhtml +27 -0
  57. data/rdoc-8.0.0/lib/rdoc/generator/template/aliki/_sidebar_installed.rhtml +16 -0
  58. data/rdoc-8.0.0/lib/rdoc/generator/template/aliki/_sidebar_methods.rhtml +41 -0
  59. data/rdoc-8.0.0/lib/rdoc/generator/template/aliki/_sidebar_pages.rhtml +67 -0
  60. data/rdoc-8.0.0/lib/rdoc/generator/template/aliki/_sidebar_search.rhtml +15 -0
  61. data/rdoc-8.0.0/lib/rdoc/generator/template/aliki/_sidebar_sections.rhtml +21 -0
  62. data/rdoc-8.0.0/lib/rdoc/generator/template/aliki/_sidebar_toggle.rhtml +3 -0
  63. data/rdoc-8.0.0/lib/rdoc/generator/template/aliki/class.rhtml +230 -0
  64. data/rdoc-8.0.0/lib/rdoc/generator/template/aliki/css/rdoc.css +2181 -0
  65. data/rdoc-8.0.0/lib/rdoc/generator/template/aliki/index.rhtml +22 -0
  66. data/rdoc-8.0.0/lib/rdoc/generator/template/aliki/js/aliki.js +513 -0
  67. data/rdoc-8.0.0/lib/rdoc/generator/template/aliki/js/bash_highlighter.js +167 -0
  68. data/rdoc-8.0.0/lib/rdoc/generator/template/aliki/js/c_highlighter.js +299 -0
  69. data/rdoc-8.0.0/lib/rdoc/generator/template/aliki/js/search_controller.js +129 -0
  70. data/rdoc-8.0.0/lib/rdoc/generator/template/aliki/js/search_navigation.js +105 -0
  71. data/rdoc-8.0.0/lib/rdoc/generator/template/aliki/js/search_ranker.js +239 -0
  72. data/rdoc-8.0.0/lib/rdoc/generator/template/aliki/js/theme-toggle.js +112 -0
  73. data/rdoc-8.0.0/lib/rdoc/generator/template/aliki/page.rhtml +18 -0
  74. data/rdoc-8.0.0/lib/rdoc/generator/template/aliki/servlet_not_found.rhtml +14 -0
  75. data/rdoc-8.0.0/lib/rdoc/generator/template/aliki/servlet_root.rhtml +65 -0
  76. data/rdoc-8.0.0/lib/rdoc/generator/template/darkfish/_footer.rhtml +5 -0
  77. data/rdoc-8.0.0/lib/rdoc/generator/template/darkfish/_head.rhtml +43 -0
  78. data/rdoc-8.0.0/lib/rdoc/generator/template/darkfish/_sidebar_classes.rhtml +5 -0
  79. data/rdoc-8.0.0/lib/rdoc/generator/template/darkfish/_sidebar_extends.rhtml +17 -0
  80. data/rdoc-8.0.0/lib/rdoc/generator/template/darkfish/_sidebar_includes.rhtml +17 -0
  81. data/rdoc-8.0.0/lib/rdoc/generator/template/darkfish/_sidebar_installed.rhtml +16 -0
  82. data/rdoc-8.0.0/lib/rdoc/generator/template/darkfish/_sidebar_methods.rhtml +21 -0
  83. data/rdoc-8.0.0/lib/rdoc/generator/template/darkfish/_sidebar_navigation.rhtml +11 -0
  84. data/rdoc-8.0.0/lib/rdoc/generator/template/darkfish/_sidebar_pages.rhtml +32 -0
  85. data/rdoc-8.0.0/lib/rdoc/generator/template/darkfish/_sidebar_parent.rhtml +6 -0
  86. data/rdoc-8.0.0/lib/rdoc/generator/template/darkfish/_sidebar_search.rhtml +15 -0
  87. data/rdoc-8.0.0/lib/rdoc/generator/template/darkfish/_sidebar_sections.rhtml +11 -0
  88. data/rdoc-8.0.0/lib/rdoc/generator/template/darkfish/_sidebar_table_of_contents.rhtml +39 -0
  89. data/rdoc-8.0.0/lib/rdoc/generator/template/darkfish/_sidebar_toggle.rhtml +3 -0
  90. data/rdoc-8.0.0/lib/rdoc/generator/template/darkfish/class.rhtml +220 -0
  91. data/rdoc-8.0.0/lib/rdoc/generator/template/darkfish/css/fonts.css +167 -0
  92. data/rdoc-8.0.0/lib/rdoc/generator/template/darkfish/css/rdoc.css +701 -0
  93. data/rdoc-8.0.0/lib/rdoc/generator/template/darkfish/fonts/Lato-Light.ttf +0 -0
  94. data/rdoc-8.0.0/lib/rdoc/generator/template/darkfish/fonts/Lato-LightItalic.ttf +0 -0
  95. data/rdoc-8.0.0/lib/rdoc/generator/template/darkfish/fonts/Lato-Regular.ttf +0 -0
  96. data/rdoc-8.0.0/lib/rdoc/generator/template/darkfish/fonts/Lato-RegularItalic.ttf +0 -0
  97. data/rdoc-8.0.0/lib/rdoc/generator/template/darkfish/fonts/SourceCodePro-Bold.ttf +0 -0
  98. data/rdoc-8.0.0/lib/rdoc/generator/template/darkfish/fonts/SourceCodePro-Regular.ttf +0 -0
  99. data/rdoc-8.0.0/lib/rdoc/generator/template/darkfish/images/add.png +0 -0
  100. data/rdoc-8.0.0/lib/rdoc/generator/template/darkfish/images/arrow_up.png +0 -0
  101. data/rdoc-8.0.0/lib/rdoc/generator/template/darkfish/images/brick.png +0 -0
  102. data/rdoc-8.0.0/lib/rdoc/generator/template/darkfish/images/brick_link.png +0 -0
  103. data/rdoc-8.0.0/lib/rdoc/generator/template/darkfish/images/bug.png +0 -0
  104. data/rdoc-8.0.0/lib/rdoc/generator/template/darkfish/images/bullet_black.png +0 -0
  105. data/rdoc-8.0.0/lib/rdoc/generator/template/darkfish/images/bullet_toggle_minus.png +0 -0
  106. data/rdoc-8.0.0/lib/rdoc/generator/template/darkfish/images/bullet_toggle_plus.png +0 -0
  107. data/rdoc-8.0.0/lib/rdoc/generator/template/darkfish/images/date.png +0 -0
  108. data/rdoc-8.0.0/lib/rdoc/generator/template/darkfish/images/delete.png +0 -0
  109. data/rdoc-8.0.0/lib/rdoc/generator/template/darkfish/images/find.png +0 -0
  110. data/rdoc-8.0.0/lib/rdoc/generator/template/darkfish/images/loadingAnimation.gif +0 -0
  111. data/rdoc-8.0.0/lib/rdoc/generator/template/darkfish/images/macFFBgHack.png +0 -0
  112. data/rdoc-8.0.0/lib/rdoc/generator/template/darkfish/images/package.png +0 -0
  113. data/rdoc-8.0.0/lib/rdoc/generator/template/darkfish/images/page_green.png +0 -0
  114. data/rdoc-8.0.0/lib/rdoc/generator/template/darkfish/images/page_white_text.png +0 -0
  115. data/rdoc-8.0.0/lib/rdoc/generator/template/darkfish/images/page_white_width.png +0 -0
  116. data/rdoc-8.0.0/lib/rdoc/generator/template/darkfish/images/plugin.png +0 -0
  117. data/rdoc-8.0.0/lib/rdoc/generator/template/darkfish/images/ruby.png +0 -0
  118. data/rdoc-8.0.0/lib/rdoc/generator/template/darkfish/images/tag_blue.png +0 -0
  119. data/rdoc-8.0.0/lib/rdoc/generator/template/darkfish/images/tag_green.png +0 -0
  120. data/rdoc-8.0.0/lib/rdoc/generator/template/darkfish/images/transparent.png +0 -0
  121. data/rdoc-8.0.0/lib/rdoc/generator/template/darkfish/images/wrench.png +0 -0
  122. data/rdoc-8.0.0/lib/rdoc/generator/template/darkfish/images/wrench_orange.png +0 -0
  123. data/rdoc-8.0.0/lib/rdoc/generator/template/darkfish/images/zoom.png +0 -0
  124. data/rdoc-8.0.0/lib/rdoc/generator/template/darkfish/index.rhtml +24 -0
  125. data/rdoc-8.0.0/lib/rdoc/generator/template/darkfish/js/darkfish.js +140 -0
  126. data/rdoc-8.0.0/lib/rdoc/generator/template/darkfish/js/search.js +120 -0
  127. data/rdoc-8.0.0/lib/rdoc/generator/template/darkfish/page.rhtml +19 -0
  128. data/rdoc-8.0.0/lib/rdoc/generator/template/darkfish/servlet_not_found.rhtml +21 -0
  129. data/rdoc-8.0.0/lib/rdoc/generator/template/darkfish/servlet_root.rhtml +65 -0
  130. data/rdoc-8.0.0/lib/rdoc/generator/template/darkfish/table_of_contents.rhtml +72 -0
  131. data/rdoc-8.0.0/lib/rdoc/generator/template/json_index/js/navigation.js +105 -0
  132. data/rdoc-8.0.0/lib/rdoc/generator/template/json_index/js/searcher.js +271 -0
  133. data/rdoc-8.0.0/lib/rdoc/generator.rb +52 -0
  134. data/rdoc-8.0.0/lib/rdoc/i18n/locale.rb +102 -0
  135. data/rdoc-8.0.0/lib/rdoc/i18n/text.rb +126 -0
  136. data/rdoc-8.0.0/lib/rdoc/i18n.rb +10 -0
  137. data/rdoc-8.0.0/lib/rdoc/known_classes.rb +74 -0
  138. data/rdoc-8.0.0/lib/rdoc/markdown/entities.rb +2131 -0
  139. data/rdoc-8.0.0/lib/rdoc/markdown/literals.kpeg +21 -0
  140. data/rdoc-8.0.0/lib/rdoc/markdown/literals.rb +454 -0
  141. data/rdoc-8.0.0/lib/rdoc/markdown.kpeg +1315 -0
  142. data/rdoc-8.0.0/lib/rdoc/markdown.rb +16865 -0
  143. data/rdoc-8.0.0/lib/rdoc/markup/blank_line.rb +29 -0
  144. data/rdoc-8.0.0/lib/rdoc/markup/block_quote.rb +14 -0
  145. data/rdoc-8.0.0/lib/rdoc/markup/document.rb +164 -0
  146. data/rdoc-8.0.0/lib/rdoc/markup/element.rb +21 -0
  147. data/rdoc-8.0.0/lib/rdoc/markup/formatter.rb +285 -0
  148. data/rdoc-8.0.0/lib/rdoc/markup/hard_break.rb +34 -0
  149. data/rdoc-8.0.0/lib/rdoc/markup/heading.rb +170 -0
  150. data/rdoc-8.0.0/lib/rdoc/markup/include.rb +42 -0
  151. data/rdoc-8.0.0/lib/rdoc/markup/indented_paragraph.rb +47 -0
  152. data/rdoc-8.0.0/lib/rdoc/markup/inline_parser.rb +312 -0
  153. data/rdoc-8.0.0/lib/rdoc/markup/list.rb +101 -0
  154. data/rdoc-8.0.0/lib/rdoc/markup/list_item.rb +99 -0
  155. data/rdoc-8.0.0/lib/rdoc/markup/paragraph.rb +28 -0
  156. data/rdoc-8.0.0/lib/rdoc/markup/parser.rb +585 -0
  157. data/rdoc-8.0.0/lib/rdoc/markup/pre_process.rb +317 -0
  158. data/rdoc-8.0.0/lib/rdoc/markup/raw.rb +66 -0
  159. data/rdoc-8.0.0/lib/rdoc/markup/rule.rb +20 -0
  160. data/rdoc-8.0.0/lib/rdoc/markup/table.rb +64 -0
  161. data/rdoc-8.0.0/lib/rdoc/markup/to_ansi.rb +144 -0
  162. data/rdoc-8.0.0/lib/rdoc/markup/to_bs.rb +86 -0
  163. data/rdoc-8.0.0/lib/rdoc/markup/to_html.rb +682 -0
  164. data/rdoc-8.0.0/lib/rdoc/markup/to_html_crossref.rb +261 -0
  165. data/rdoc-8.0.0/lib/rdoc/markup/to_html_snippet.rb +287 -0
  166. data/rdoc-8.0.0/lib/rdoc/markup/to_joined_paragraph.rb +41 -0
  167. data/rdoc-8.0.0/lib/rdoc/markup/to_label.rb +84 -0
  168. data/rdoc-8.0.0/lib/rdoc/markup/to_markdown.rb +215 -0
  169. data/rdoc-8.0.0/lib/rdoc/markup/to_rdoc.rb +421 -0
  170. data/rdoc-8.0.0/lib/rdoc/markup/to_table_of_contents.rb +88 -0
  171. data/rdoc-8.0.0/lib/rdoc/markup/to_test.rb +77 -0
  172. data/rdoc-8.0.0/lib/rdoc/markup/to_tt_only.rb +107 -0
  173. data/rdoc-8.0.0/lib/rdoc/markup/verbatim.rb +83 -0
  174. data/rdoc-8.0.0/lib/rdoc/markup.rb +219 -0
  175. data/rdoc-8.0.0/lib/rdoc/options.rb +1412 -0
  176. data/rdoc-8.0.0/lib/rdoc/parser/c.rb +1227 -0
  177. data/rdoc-8.0.0/lib/rdoc/parser/changelog.rb +379 -0
  178. data/rdoc-8.0.0/lib/rdoc/parser/markdown.rb +22 -0
  179. data/rdoc-8.0.0/lib/rdoc/parser/rbs.rb +275 -0
  180. data/rdoc-8.0.0/lib/rdoc/parser/rd.rb +22 -0
  181. data/rdoc-8.0.0/lib/rdoc/parser/ruby.rb +1266 -0
  182. data/rdoc-8.0.0/lib/rdoc/parser/ruby_colorizer.rb +253 -0
  183. data/rdoc-8.0.0/lib/rdoc/parser/simple.rb +44 -0
  184. data/rdoc-8.0.0/lib/rdoc/parser/text.rb +11 -0
  185. data/rdoc-8.0.0/lib/rdoc/parser.rb +298 -0
  186. data/rdoc-8.0.0/lib/rdoc/rbs_helper.rb +186 -0
  187. data/rdoc-8.0.0/lib/rdoc/rd/block_parser.rb +1706 -0
  188. data/rdoc-8.0.0/lib/rdoc/rd/block_parser.ry +643 -0
  189. data/rdoc-8.0.0/lib/rdoc/rd/inline.rb +71 -0
  190. data/rdoc-8.0.0/lib/rdoc/rd/inline_parser.rb +1854 -0
  191. data/rdoc-8.0.0/lib/rdoc/rd/inline_parser.ry +593 -0
  192. data/rdoc-8.0.0/lib/rdoc/rd.rb +99 -0
  193. data/rdoc-8.0.0/lib/rdoc/rdoc.rb +724 -0
  194. data/rdoc-8.0.0/lib/rdoc/ri/driver.rb +1572 -0
  195. data/rdoc-8.0.0/lib/rdoc/ri/formatter.rb +6 -0
  196. data/rdoc-8.0.0/lib/rdoc/ri/paths.rb +171 -0
  197. data/rdoc-8.0.0/lib/rdoc/ri/servlet.rb +452 -0
  198. data/rdoc-8.0.0/lib/rdoc/ri/store.rb +6 -0
  199. data/rdoc-8.0.0/lib/rdoc/ri/task.rb +71 -0
  200. data/rdoc-8.0.0/lib/rdoc/ri.rb +21 -0
  201. data/rdoc-8.0.0/lib/rdoc/rubygems_hook.rb +327 -0
  202. data/rdoc-8.0.0/lib/rdoc/server.rb +460 -0
  203. data/rdoc-8.0.0/lib/rdoc/stats/normal.rb +58 -0
  204. data/rdoc-8.0.0/lib/rdoc/stats/quiet.rb +59 -0
  205. data/rdoc-8.0.0/lib/rdoc/stats/verbose.rb +44 -0
  206. data/rdoc-8.0.0/lib/rdoc/stats.rb +484 -0
  207. data/rdoc-8.0.0/lib/rdoc/store.rb +1205 -0
  208. data/rdoc-8.0.0/lib/rdoc/task.rb +355 -0
  209. data/rdoc-8.0.0/lib/rdoc/text.rb +244 -0
  210. data/rdoc-8.0.0/lib/rdoc/token_stream.rb +104 -0
  211. data/rdoc-8.0.0/lib/rdoc/tom_doc.rb +257 -0
  212. data/rdoc-8.0.0/lib/rdoc/version.rb +10 -0
  213. data/rdoc-8.0.0/lib/rdoc.rb +239 -0
  214. data/rdoc-8.0.0/lib/rubygems_plugin.rb +14 -0
  215. data/rdoc-8.0.0/man/ri.1 +249 -0
  216. data/rdoc-8.0.0/rdoc-logo.svg +43 -0
  217. data/rdoc-8.0.0/rdoc.gemspec +74 -0
  218. metadata +256 -0
@@ -0,0 +1,643 @@
1
+ class BlockParser
2
+
3
+ preclow
4
+ nonassoc DUMMY
5
+ left ITEMLISTLINE
6
+ ENUMLISTLINE
7
+ DESCLISTLINE
8
+ METHODLISTLINE
9
+ STRINGLINE
10
+ prechigh
11
+
12
+ token STRINGLINE
13
+ ITEMLISTLINE
14
+ ENUMLISTLINE
15
+ DESCLISTLINE
16
+ METHODLISTLINE
17
+ WHITELINE
18
+ SUBTREE
19
+ HEADLINE
20
+ INCLUDE
21
+ INDENT
22
+ DEDENT
23
+ DUMMY
24
+
25
+ rule
26
+ document : blocks { result = RDoc::Markup::Document.new(*val[0]) }
27
+ | { raise ParseError, "file empty" }
28
+ ;
29
+
30
+ blocks : blocks block { result = val[0].concat val[1] }
31
+ | block { result = val[0] }
32
+ ;
33
+
34
+ block : textblock { result = val }
35
+ | verbatim { result = val }
36
+ | lists
37
+ | headline { result = val }
38
+ | include { result = val }
39
+ | WHITELINE { result = [RDoc::Markup::BlankLine.new] }
40
+ | SUBTREE { result = val[0].parts }
41
+ ;
42
+
43
+ headline : HEADLINE {
44
+ # val[0] is like [level, title]
45
+ title = @inline_parser.parse(val[0][1])
46
+ result = RDoc::Markup::Heading.new(val[0][0], title)
47
+ }
48
+ ;
49
+
50
+ include : INCLUDE {
51
+ result = RDoc::Markup::Include.new val[0], @include_path
52
+ }
53
+ ;
54
+
55
+ textblock : textblockcontent = DUMMY {
56
+ # val[0] is Array of String
57
+ result = paragraph val[0]
58
+ }
59
+ ;
60
+
61
+ textblockcontent : textblockcontent STRINGLINE { result << val[1].rstrip }
62
+ | STRINGLINE { result = [val[0].rstrip] }
63
+ ;
64
+
65
+ verbatim : INDENT verbatimcontent DEDENT {
66
+ # val[1] is Array of String
67
+ content = cut_off val[1]
68
+ result = RDoc::Markup::Verbatim.new(*content)
69
+
70
+ # imform to lexer.
71
+ @in_verbatim = false
72
+ }
73
+ ;
74
+
75
+ verbatim_after_lists : verbatimcontent {
76
+ # val[0] is Array of String
77
+ content = cut_off val[0]
78
+ result = RDoc::Markup::Verbatim.new(*content)
79
+
80
+ # imform to lexer.
81
+ @in_verbatim = false
82
+ }
83
+ ;
84
+
85
+ verbatimcontent : verbatimcontent STRINGLINE {
86
+ result << val[1]
87
+ } | verbatimcontent INDENT verbatimcontent DEDENT {
88
+ result.concat val[2]
89
+ } | verbatimcontent WHITELINE {
90
+ result << "\n"
91
+ } | STRINGLINE {
92
+ result = val
93
+ # inform to lexer.
94
+ @in_verbatim = true
95
+ }
96
+ ;
97
+
98
+ list : itemlist
99
+ | enumlist
100
+ | desclist
101
+ | methodlist
102
+ ;
103
+
104
+ lists : lists2 = DUMMY {
105
+ result = val[0]
106
+ } | INDENT lists2 DEDENT {
107
+ result = val[1]
108
+ } | INDENT lists2 verbatim_after_lists DEDENT {
109
+ result = val[1].push(val[2])
110
+ }
111
+ ;
112
+
113
+ lists2 : lists2 list { result = val[0] << val[1] }
114
+ | list { result = [val[0]] }
115
+ ;
116
+
117
+ itemlist : itemlistitems = DUMMY {
118
+ result = RDoc::Markup::List.new :BULLET, *val[0]
119
+ }
120
+ ;
121
+
122
+ itemlistitems : itemlistitems itemlistitem { result.push(val[1]) }
123
+ | itemlistitem { result = val }
124
+ ;
125
+
126
+ itemlistitem : first_textblock_in_itemlist other_blocks_in_list DEDENT {
127
+ result = RDoc::Markup::ListItem.new nil, val[0], *val[1]
128
+ }
129
+ ;
130
+
131
+ enumlist : enumlistitems = DUMMY {
132
+ result = RDoc::Markup::List.new :NUMBER, *val[0]
133
+ }
134
+ ;
135
+
136
+ enumlistitems : enumlistitems enumlistitem { result.push(val[1]) }
137
+ | enumlistitem { result = val }
138
+ ;
139
+
140
+ enumlistitem : first_textblock_in_enumlist other_blocks_in_list DEDENT {
141
+ result = RDoc::Markup::ListItem.new nil, val[0], *val[1]
142
+ }
143
+ ;
144
+
145
+ desclist : desclistitems = DUMMY {
146
+ result = RDoc::Markup::List.new :NOTE, *val[0]
147
+ }
148
+ ;
149
+
150
+ desclistitems : desclistitems desclistitem { result.push(val[1]) }
151
+ | desclistitem { result = val }
152
+ ;
153
+
154
+ desclistitem : DESCLISTLINE description_part DEDENT {
155
+ term = @inline_parser.parse val[0].strip
156
+
157
+ result = RDoc::Markup::ListItem.new term, *val[1]
158
+ }
159
+ ;
160
+
161
+ methodlist : methodlistitems = DUMMY {
162
+ result = RDoc::Markup::List.new :LABEL, *val[0]
163
+ }
164
+ ;
165
+
166
+ methodlistitems : methodlistitems methodlistitem { result.push(val[1]) }
167
+ | methodlistitem { result = val }
168
+ ;
169
+
170
+ methodlistitem : METHODLISTLINE description_part DEDENT {
171
+ result = RDoc::Markup::ListItem.new "<tt>#{val[0].strip}</tt>", *val[1]
172
+ }
173
+ ;
174
+
175
+ description_part : whitelines textblock blocks_in_list {
176
+ result = [val[1]].concat(val[2])
177
+ } | whitelines textblock {
178
+ result = [val[1]]
179
+ } | whitelines INDENT blocks_in_list DEDENT {
180
+ result = val[2]
181
+ } | whitelines {
182
+ result = []
183
+ }
184
+ ;
185
+
186
+ blocks_in_list : blocks_in_list block_in_list { result.concat val[1] }
187
+ | block_in_list
188
+ ;
189
+
190
+ block_in_list : textblock { result = val }
191
+ | verbatim { result = val }
192
+ | lists
193
+ | WHITELINE { result = [] }
194
+ ;
195
+
196
+ whitelines : whitelines2
197
+ |
198
+ ;
199
+
200
+ whitelines2 : WHITELINE whitelines2
201
+ | WHITELINE
202
+ ;
203
+
204
+ first_textblock_in_itemlist : ITEMLISTLINE textblockcontent {
205
+ result = paragraph [val[0]].concat(val[1])
206
+ } | ITEMLISTLINE {
207
+ result = paragraph [val[0]]
208
+ }
209
+ ;
210
+
211
+ first_textblock_in_enumlist : ENUMLISTLINE textblockcontent {
212
+ result = paragraph [val[0]].concat(val[1])
213
+ } | ENUMLISTLINE {
214
+ result = paragraph [val[0]]
215
+ }
216
+ ;
217
+
218
+ other_blocks_in_list : verbatim blocks_in_list {
219
+ result = [val[0]].concat(val[1])
220
+ } | lists blocks_in_list { result.concat val[1] }
221
+ | WHITELINE blocks_in_list { result = val[1] }
222
+ | verbatim { result = val }
223
+ | lists
224
+ | WHITELINE { result = [] }
225
+ | { result = [] }
226
+ ;
227
+ end
228
+
229
+ ---- inner
230
+
231
+ # :stopdoc:
232
+
233
+ MARK_TO_LEVEL = {
234
+ '=' => 1,
235
+ '==' => 2,
236
+ '===' => 3,
237
+ '====' => 4,
238
+ '+' => 5,
239
+ '++' => 6,
240
+ }
241
+
242
+ # :startdoc:
243
+
244
+ ##
245
+ # Footnotes for this document
246
+
247
+ attr_reader :footnotes
248
+
249
+ ##
250
+ # Labels for items in this document
251
+
252
+ attr_reader :labels
253
+
254
+ ##
255
+ # Path to find included files in
256
+
257
+ attr_accessor :include_path
258
+
259
+ ##
260
+ # Creates a new RDoc::RD::BlockParser. Use #parse to parse an rd-format
261
+ # document.
262
+
263
+ def initialize
264
+ @inline_parser = RDoc::RD::InlineParser.new self
265
+ @include_path = []
266
+
267
+ # for testing
268
+ @footnotes = []
269
+ @labels = {}
270
+ end
271
+
272
+ ##
273
+ # Parses +src+ and returns an RDoc::Markup::Document.
274
+
275
+ def parse src
276
+ @src = src
277
+ @src.push false
278
+
279
+ @footnotes = []
280
+ @labels = {}
281
+
282
+ # @i: index(line no.) of src
283
+ @i = 0
284
+
285
+ # stack for current indentation
286
+ @indent_stack = []
287
+
288
+ # how indented.
289
+ @current_indent = @indent_stack.join("")
290
+
291
+ # RDoc::RD::BlockParser for tmp src
292
+ @subparser = nil
293
+
294
+ # which part is in now
295
+ @in_part = nil
296
+ @part_content = []
297
+
298
+ @in_verbatim = false
299
+
300
+ @yydebug = true
301
+
302
+ document = do_parse
303
+
304
+ unless @footnotes.empty? then
305
+ blankline = document.parts.pop
306
+
307
+ document.parts << RDoc::Markup::Rule.new(1)
308
+ document.parts.concat @footnotes
309
+
310
+ document.parts.push blankline
311
+ end
312
+
313
+ document
314
+ end
315
+
316
+ ##
317
+ # Returns the next token from the document
318
+
319
+ def next_token # :nodoc:
320
+ # preprocessing
321
+ # if it is not in RD part
322
+ # => method
323
+ while @in_part != "rd"
324
+ line = @src[@i]
325
+ @i += 1 # next line
326
+
327
+ case line
328
+ # src end
329
+ when false
330
+ return [false, false]
331
+ # RD part begin
332
+ when /^=begin\s*(?:\bRD\b.*)?\s*$/
333
+ if @in_part # if in non-RD part
334
+ @part_content.push(line)
335
+ else
336
+ @in_part = "rd"
337
+ return [:WHITELINE, "=begin\n"] # <= for textblockand
338
+ end
339
+ # non-RD part begin
340
+ when /^=begin\s+(\w+)/
341
+ part = $1
342
+ =begin # not imported to RDoc
343
+ if @in_part # if in non-RD part
344
+ @part_content.push(line)
345
+ else
346
+ @in_part = part if @tree.filter[part] # if filter exists
347
+ # p "BEGIN_PART: #{@in_part}" # DEBUG
348
+ end
349
+ =end
350
+ @in_part = part
351
+ # non-RD part end
352
+ when /^=end(?:$|[\s\0\C-d\C-z])/
353
+ if @in_part # if in non-RD part
354
+ =begin # not imported to RDoc
355
+ # p "END_PART: #{@in_part}" # DEBUG
356
+ # make Part-in object
357
+ part = RDoc::RD::Part.new(@part_content.join(""), @tree, "r")
358
+ @part_content.clear
359
+ # call filter, part_out is output(Part object)
360
+ part_out = @tree.filter[@in_part].call(part)
361
+
362
+ if @tree.filter[@in_part].mode == :rd # if output is RD formatted
363
+ subtree = parse_subtree(part_out.to_a)
364
+ else # if output is target formatted
365
+ basename = Tempfile.create(["rdtmp", ".#{@in_part}"], @tree.tmp_dir) do |tmpfile|
366
+ tmpfile.print(part_out)
367
+ File.basename(tmpfile.path)
368
+ end
369
+ subtree = parse_subtree(["=begin\n", "<<< #{basename}\n", "=end\n"])
370
+ end
371
+ @in_part = nil
372
+ return [:SUBTREE, subtree]
373
+ =end
374
+ end
375
+ else
376
+ =begin # not imported to RDoc
377
+ if @in_part # if in non-RD part
378
+ @part_content.push(line)
379
+ end
380
+ =end
381
+ end
382
+ end
383
+
384
+ @current_indent = @indent_stack.join("")
385
+ line = @src[@i]
386
+ case line
387
+ when false
388
+ if_current_indent_equal("") do
389
+ [false, false]
390
+ end
391
+ when /^=end/
392
+ if_current_indent_equal("") do
393
+ @in_part = nil
394
+ [:WHITELINE, "=end"] # MUST CHANGE??
395
+ end
396
+ when /^\s*$/
397
+ @i += 1 # next line
398
+ return [:WHITELINE, ':WHITELINE']
399
+ when /^\#/ # comment line
400
+ @i += 1 # next line
401
+ self.next_token()
402
+ when /^(={1,4})(?!=)\s*(?=\S)/, /^(\+{1,2})(?!\+)\s*(?=\S)/
403
+ rest = $' # '
404
+ rest.strip!
405
+ mark = $1
406
+ if_current_indent_equal("") do
407
+ return [:HEADLINE, [MARK_TO_LEVEL[mark], rest]]
408
+ end
409
+ when /^<<<\s*(\S+)/
410
+ file = $1
411
+ if_current_indent_equal("") do
412
+ suffix = file[-3 .. -1]
413
+ if suffix == ".rd" or suffix == ".rb"
414
+ subtree = parse_subtree(get_included(file))
415
+ [:SUBTREE, subtree]
416
+ else
417
+ [:INCLUDE, file]
418
+ end
419
+ end
420
+ when /^(\s*)\*(\s*)/
421
+ rest = $' # '
422
+ newIndent = $2
423
+ if_current_indent_equal($1) do
424
+ if @in_verbatim
425
+ [:STRINGLINE, line]
426
+ else
427
+ @indent_stack.push("\s" + newIndent)
428
+ [:ITEMLISTLINE, rest]
429
+ end
430
+ end
431
+ when /^(\s*)(\(\d+\))(\s*)/
432
+ rest = $' # '
433
+ mark = $2
434
+ newIndent = $3
435
+ if_current_indent_equal($1) do
436
+ if @in_verbatim
437
+ [:STRINGLINE, line]
438
+ else
439
+ @indent_stack.push("\s" * mark.size + newIndent)
440
+ [:ENUMLISTLINE, rest]
441
+ end
442
+ end
443
+ when /^(\s*):(\s*)/
444
+ rest = $' # '
445
+ newIndent = $2
446
+ if_current_indent_equal($1) do
447
+ if @in_verbatim
448
+ [:STRINGLINE, line]
449
+ else
450
+ @indent_stack.push("\s#{$2}")
451
+ [:DESCLISTLINE, rest]
452
+ end
453
+ end
454
+ when /^(\s*)---(?!-|\s*$)/
455
+ indent = $1
456
+ rest = $'
457
+ /\s*/ === rest
458
+ term = $'
459
+ new_indent = $&
460
+ if_current_indent_equal(indent) do
461
+ if @in_verbatim
462
+ [:STRINGLINE, line]
463
+ else
464
+ @indent_stack.push("\s\s\s" + new_indent)
465
+ [:METHODLISTLINE, term]
466
+ end
467
+ end
468
+ when /^(\s*)/
469
+ if_current_indent_equal($1) do
470
+ [:STRINGLINE, line]
471
+ end
472
+ else
473
+ raise "[BUG] parsing error may occurred."
474
+ end
475
+ end
476
+
477
+ ##
478
+ # Yields to the given block if +indent+ matches the current indent, otherwise
479
+ # an indentation token is processed.
480
+
481
+ def if_current_indent_equal(indent)
482
+ indent = indent.sub(/\t/, "\s" * 8)
483
+ if @current_indent == indent
484
+ @i += 1 # next line
485
+ yield
486
+ elsif indent.index(@current_indent) == 0
487
+ @indent_stack.push(indent[@current_indent.size .. -1])
488
+ [:INDENT, ":INDENT"]
489
+ else
490
+ @indent_stack.pop
491
+ [:DEDENT, ":DEDENT"]
492
+ end
493
+ end
494
+ private :if_current_indent_equal
495
+
496
+ ##
497
+ # Cuts off excess whitespace in +src+
498
+
499
+ def cut_off(src)
500
+ ret = []
501
+ whiteline_buf = []
502
+
503
+ line = src.shift
504
+ /^\s*/ =~ line
505
+
506
+ indent = Regexp.quote($&)
507
+ ret.push($')
508
+
509
+ while line = src.shift
510
+ if /^(\s*)$/ =~ line
511
+ whiteline_buf.push(line)
512
+ elsif /^#{indent}/ =~ line
513
+ unless whiteline_buf.empty?
514
+ ret.concat(whiteline_buf)
515
+ whiteline_buf.clear
516
+ end
517
+ ret.push($')
518
+ else
519
+ raise "[BUG]: probably Parser Error while cutting off.\n"
520
+ end
521
+ end
522
+ ret
523
+ end
524
+ private :cut_off
525
+
526
+ def set_term_to_element(parent, term)
527
+ # parent.set_term_under_document_struct(term, @tree.document_struct)
528
+ parent.set_term_without_document_struct(term)
529
+ end
530
+ private :set_term_to_element
531
+
532
+ ##
533
+ # Raises a ParseError when invalid formatting is found
534
+
535
+ def on_error(et, ev, _values)
536
+ prv, cur, nxt = format_line_num(@i, @i+1, @i+2)
537
+
538
+ raise ParseError, <<Msg
539
+
540
+ RD syntax error: line #{@i+1}:
541
+ #{prv} |#{@src[@i-1].chomp}
542
+ #{cur}=>|#{@src[@i].chomp}
543
+ #{nxt} |#{@src[@i+1].chomp}
544
+
545
+ Msg
546
+ end
547
+
548
+ ##
549
+ # Current line number
550
+
551
+ def line_index
552
+ @i
553
+ end
554
+
555
+ ##
556
+ # Parses subtree +src+
557
+
558
+ def parse_subtree src
559
+ @subparser ||= RDoc::RD::BlockParser.new
560
+
561
+ @subparser.parse src
562
+ end
563
+ private :parse_subtree
564
+
565
+ ##
566
+ # Retrieves the content for +file+ from the include_path
567
+
568
+ def get_included(file)
569
+ included = []
570
+
571
+ @include_path.each do |dir|
572
+ file_name = File.join dir, file
573
+
574
+ if File.exist? file_name then
575
+ included = File.readlines file_name
576
+ break
577
+ end
578
+ end
579
+
580
+ included
581
+ end
582
+ private :get_included
583
+
584
+ ##
585
+ # Formats line numbers +line_numbers+ prettily
586
+
587
+ def format_line_num(*line_numbers)
588
+ width = line_numbers.collect{|i| i.to_s.length }.max
589
+ line_numbers.collect{|i| sprintf("%#{width}d", i) }
590
+ end
591
+ private :format_line_num
592
+
593
+ ##
594
+ # Retrieves the content of +values+ as a single String
595
+
596
+ def content values
597
+ values.map { |value| value.content }.join
598
+ end
599
+
600
+ ##
601
+ # Creates a paragraph for +value+
602
+
603
+ def paragraph value
604
+ content = cut_off(value).join(' ').rstrip
605
+ contents = @inline_parser.parse content
606
+
607
+ RDoc::Markup::Paragraph.new(*contents)
608
+ end
609
+
610
+ ##
611
+ # Adds footnote +content+ to the document
612
+
613
+ def add_footnote content
614
+ index = @footnotes.length / 2 + 1
615
+
616
+ footmark_link = "{^#{index}}[rdoc-label:footmark-#{index}:foottext-#{index}]"
617
+
618
+ @footnotes << RDoc::Markup::Paragraph.new(footmark_link, ' ', *content)
619
+ @footnotes << RDoc::Markup::BlankLine.new
620
+
621
+ index
622
+ end
623
+
624
+ ##
625
+ # Adds label +label+ to the document
626
+
627
+ def add_label label
628
+ @labels[label] = true
629
+
630
+ label
631
+ end
632
+
633
+ # :stopdoc:
634
+
635
+ ---- header
636
+ class RDoc::RD
637
+
638
+ ##
639
+ # RD format parser for headings, paragraphs, lists, verbatim sections that
640
+ # exist as blocks.
641
+
642
+ ---- footer
643
+ end
@@ -0,0 +1,71 @@
1
+ # frozen_string_literal: true
2
+ ##
3
+ # Inline keeps track of markup and labels to create proper links.
4
+
5
+ class RDoc::RD::Inline
6
+
7
+ ##
8
+ # The text of the reference
9
+
10
+ attr_reader :reference
11
+
12
+ ##
13
+ # The markup of this reference in RDoc format
14
+
15
+ attr_reader :rdoc
16
+
17
+ ##
18
+ # Creates a new Inline for +rdoc+ and +reference+.
19
+ #
20
+ # +rdoc+ may be another Inline or a String. If +reference+ is not given it
21
+ # will use the text from +rdoc+.
22
+
23
+ def self.new(rdoc, reference = rdoc)
24
+ if self === rdoc and reference.equal? rdoc then
25
+ rdoc
26
+ else
27
+ super
28
+ end
29
+ end
30
+
31
+ ##
32
+ # Initializes the Inline with +rdoc+ and +inline+
33
+
34
+ def initialize(rdoc, reference) # :not-new:
35
+ @reference = reference.equal?(rdoc) ? reference.dup : reference
36
+
37
+ # unpack
38
+ @reference = @reference.reference if self.class === @reference
39
+ @rdoc = rdoc
40
+ end
41
+
42
+ def ==(other) # :nodoc:
43
+ self.class === other and
44
+ @reference == other.reference and @rdoc == other.rdoc
45
+ end
46
+
47
+ ##
48
+ # Appends +more+ to this inline. +more+ may be a String or another Inline.
49
+
50
+ def append(more)
51
+ case more
52
+ when String then
53
+ @reference += more
54
+ @rdoc += more
55
+ when RDoc::RD::Inline then
56
+ @reference += more.reference
57
+ @rdoc += more.rdoc
58
+ else
59
+ raise "unknown thingy #{more}"
60
+ end
61
+
62
+ self
63
+ end
64
+
65
+ def inspect # :nodoc:
66
+ "(inline: #{self})"
67
+ end
68
+
69
+ alias to_s rdoc # :nodoc:
70
+
71
+ end