docspring 3.0.0 → 3.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.
Files changed (523) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +7 -0
  3. data/Gemfile.lock +4 -4
  4. data/README.md +11 -5
  5. data/docs/CreateHtmlSubmissionData.md +3 -1
  6. data/docs/CreatePdfSubmissionData.md +3 -1
  7. data/docs/PDFApi.md +156 -10
  8. data/docs/PublishVersionData.md +20 -0
  9. data/docs/RestoreVersionData.md +18 -0
  10. data/docs/Submission.md +4 -0
  11. data/docs/SubmissionPreview.md +4 -0
  12. data/docs/Template.md +15 -1
  13. data/docs/TemplateDeleteResponse.md +24 -0
  14. data/docs/TemplatePreview.md +13 -1
  15. data/docs/TemplatePublishVersionResponse.md +22 -0
  16. data/lib/docspring/api/pdf_api.rb +152 -5
  17. data/lib/docspring/api_client.rb +1 -1
  18. data/lib/docspring/models/combined_submission_action.rb +1 -5
  19. data/lib/docspring/models/create_html_submission_data.rb +13 -4
  20. data/lib/docspring/models/create_pdf_submission_data.rb +13 -4
  21. data/lib/docspring/models/publish_version_data.rb +230 -0
  22. data/lib/docspring/models/restore_version_data.rb +221 -0
  23. data/lib/docspring/models/submission.rb +41 -1
  24. data/lib/docspring/models/submission_data_request_event.rb +1 -5
  25. data/lib/docspring/models/submission_preview.rb +41 -1
  26. data/lib/docspring/models/template.rb +106 -4
  27. data/lib/docspring/models/template_delete_response.rb +287 -0
  28. data/lib/docspring/models/template_preview.rb +88 -4
  29. data/lib/docspring/models/template_publish_version_response.rb +282 -0
  30. data/lib/docspring/version.rb +1 -1
  31. data/lib/docspring.rb +4 -0
  32. data/spec/api/pdf_api_spec.rb +27 -2
  33. data/spec/models/create_html_submission_data_spec.rb +6 -0
  34. data/spec/models/create_pdf_submission_data_spec.rb +6 -0
  35. data/spec/models/publish_version_data_spec.rb +42 -0
  36. data/spec/models/restore_version_data_spec.rb +36 -0
  37. data/spec/models/submission_preview_spec.rb +16 -0
  38. data/spec/models/submission_spec.rb +16 -0
  39. data/spec/models/template_delete_response_spec.rb +58 -0
  40. data/spec/models/template_preview_spec.rb +40 -0
  41. data/spec/models/template_publish_version_response_spec.rb +52 -0
  42. data/spec/models/template_spec.rb +46 -0
  43. data/vendor/bundle/ruby/3.3.0/bin/irb +29 -0
  44. data/vendor/bundle/ruby/3.3.0/bin/rdbg +29 -0
  45. data/vendor/bundle/ruby/3.3.0/bin/rdoc +29 -0
  46. data/vendor/bundle/ruby/3.3.0/bin/ri +29 -0
  47. data/vendor/bundle/ruby/3.3.0/cache/ast-2.4.3.gem +0 -0
  48. data/vendor/bundle/ruby/3.3.0/cache/debug-1.10.0.gem +0 -0
  49. data/vendor/bundle/ruby/3.3.0/cache/io-console-0.8.0.gem +0 -0
  50. data/vendor/bundle/ruby/3.3.0/cache/irb-1.15.1.gem +0 -0
  51. data/vendor/bundle/ruby/3.3.0/cache/parser-3.3.7.2.gem +0 -0
  52. data/vendor/bundle/ruby/3.3.0/cache/pp-0.6.2.gem +0 -0
  53. data/vendor/bundle/ruby/3.3.0/cache/prettyprint-0.2.0.gem +0 -0
  54. data/vendor/bundle/ruby/3.3.0/cache/rdoc-6.12.0.gem +0 -0
  55. data/vendor/bundle/ruby/3.3.0/cache/reline-0.6.0.gem +0 -0
  56. data/vendor/bundle/ruby/3.3.0/extensions/arm64-darwin-24/3.3.0/debug-1.10.0/debug/debug.bundle +0 -0
  57. data/vendor/bundle/ruby/3.3.0/extensions/arm64-darwin-24/3.3.0/debug-1.10.0/gem.build_complete +0 -0
  58. data/vendor/bundle/ruby/3.3.0/extensions/arm64-darwin-24/3.3.0/debug-1.10.0/gem_make.out +19 -0
  59. data/vendor/bundle/ruby/3.3.0/extensions/arm64-darwin-24/3.3.0/io-console-0.8.0/gem.build_complete +0 -0
  60. data/vendor/bundle/ruby/3.3.0/extensions/arm64-darwin-24/3.3.0/io-console-0.8.0/gem_make.out +31 -0
  61. data/vendor/bundle/ruby/3.3.0/extensions/arm64-darwin-24/3.3.0/io-console-0.8.0/io/console.bundle +0 -0
  62. data/vendor/bundle/ruby/3.3.0/extensions/arm64-darwin-24/3.3.0/io-console-0.8.0/mkmf.log +447 -0
  63. data/vendor/bundle/ruby/3.3.0/gems/ast-2.4.3/LICENSE.MIT +20 -0
  64. data/vendor/bundle/ruby/3.3.0/gems/ast-2.4.3/README.YARD.md +12 -0
  65. data/vendor/bundle/ruby/3.3.0/gems/ast-2.4.3/lib/ast/node.rb +268 -0
  66. data/vendor/bundle/ruby/3.3.0/gems/ast-2.4.3/lib/ast/processor/mixin.rb +288 -0
  67. data/vendor/bundle/ruby/3.3.0/gems/ast-2.4.3/lib/ast/processor.rb +12 -0
  68. data/vendor/bundle/ruby/3.3.0/gems/ast-2.4.3/lib/ast/sexp.rb +30 -0
  69. data/vendor/bundle/ruby/3.3.0/gems/ast-2.4.3/lib/ast.rb +17 -0
  70. data/vendor/bundle/ruby/3.3.0/gems/debug-1.10.0/CONTRIBUTING.md +573 -0
  71. data/vendor/bundle/ruby/3.3.0/gems/debug-1.10.0/Gemfile +10 -0
  72. data/vendor/bundle/ruby/3.3.0/gems/debug-1.10.0/LICENSE.txt +22 -0
  73. data/vendor/bundle/ruby/3.3.0/gems/debug-1.10.0/README.md +970 -0
  74. data/vendor/bundle/ruby/3.3.0/gems/debug-1.10.0/Rakefile +57 -0
  75. data/vendor/bundle/ruby/3.3.0/gems/debug-1.10.0/TODO.md +23 -0
  76. data/vendor/bundle/ruby/3.3.0/gems/debug-1.10.0/debug.gemspec +33 -0
  77. data/vendor/bundle/ruby/3.3.0/gems/debug-1.10.0/exe/rdbg +53 -0
  78. data/vendor/bundle/ruby/3.3.0/gems/debug-1.10.0/ext/debug/Makefile +270 -0
  79. data/vendor/bundle/ruby/3.3.0/gems/debug-1.10.0/ext/debug/debug.c +228 -0
  80. data/vendor/bundle/ruby/3.3.0/gems/debug-1.10.0/ext/debug/debug_version.h +1 -0
  81. data/vendor/bundle/ruby/3.3.0/gems/debug-1.10.0/ext/debug/extconf.rb +27 -0
  82. data/vendor/bundle/ruby/3.3.0/gems/debug-1.10.0/ext/debug/iseq_collector.c +93 -0
  83. data/vendor/bundle/ruby/3.3.0/gems/debug-1.10.0/lib/debug/abbrev_command.rb +77 -0
  84. data/vendor/bundle/ruby/3.3.0/gems/debug-1.10.0/lib/debug/breakpoint.rb +556 -0
  85. data/vendor/bundle/ruby/3.3.0/gems/debug-1.10.0/lib/debug/client.rb +263 -0
  86. data/vendor/bundle/ruby/3.3.0/gems/debug-1.10.0/lib/debug/color.rb +123 -0
  87. data/vendor/bundle/ruby/3.3.0/gems/debug-1.10.0/lib/debug/config.rb +590 -0
  88. data/vendor/bundle/ruby/3.3.0/gems/debug-1.10.0/lib/debug/console.rb +213 -0
  89. data/vendor/bundle/ruby/3.3.0/gems/debug-1.10.0/lib/debug/dap_custom/traceInspector.rb +336 -0
  90. data/vendor/bundle/ruby/3.3.0/gems/debug-1.10.0/lib/debug/debug.bundle +0 -0
  91. data/vendor/bundle/ruby/3.3.0/gems/debug-1.10.0/lib/debug/frame_info.rb +188 -0
  92. data/vendor/bundle/ruby/3.3.0/gems/debug-1.10.0/lib/debug/irb_integration.rb +37 -0
  93. data/vendor/bundle/ruby/3.3.0/gems/debug-1.10.0/lib/debug/local.rb +115 -0
  94. data/vendor/bundle/ruby/3.3.0/gems/debug-1.10.0/lib/debug/open.rb +13 -0
  95. data/vendor/bundle/ruby/3.3.0/gems/debug-1.10.0/lib/debug/open_nonstop.rb +15 -0
  96. data/vendor/bundle/ruby/3.3.0/gems/debug-1.10.0/lib/debug/prelude.rb +50 -0
  97. data/vendor/bundle/ruby/3.3.0/gems/debug-1.10.0/lib/debug/server.rb +534 -0
  98. data/vendor/bundle/ruby/3.3.0/gems/debug-1.10.0/lib/debug/server_cdp.rb +1348 -0
  99. data/vendor/bundle/ruby/3.3.0/gems/debug-1.10.0/lib/debug/server_dap.rb +1108 -0
  100. data/vendor/bundle/ruby/3.3.0/gems/debug-1.10.0/lib/debug/session.rb +2659 -0
  101. data/vendor/bundle/ruby/3.3.0/gems/debug-1.10.0/lib/debug/source_repository.rb +150 -0
  102. data/vendor/bundle/ruby/3.3.0/gems/debug-1.10.0/lib/debug/start.rb +5 -0
  103. data/vendor/bundle/ruby/3.3.0/gems/debug-1.10.0/lib/debug/thread_client.rb +1455 -0
  104. data/vendor/bundle/ruby/3.3.0/gems/debug-1.10.0/lib/debug/tracer.rb +241 -0
  105. data/vendor/bundle/ruby/3.3.0/gems/debug-1.10.0/lib/debug/version.rb +5 -0
  106. data/vendor/bundle/ruby/3.3.0/gems/debug-1.10.0/lib/debug.rb +9 -0
  107. data/vendor/bundle/ruby/3.3.0/gems/debug-1.10.0/misc/README.md.erb +636 -0
  108. data/vendor/bundle/ruby/3.3.0/gems/io-console-0.8.0/.document +5 -0
  109. data/vendor/bundle/ruby/3.3.0/gems/io-console-0.8.0/BSDL +22 -0
  110. data/vendor/bundle/ruby/3.3.0/gems/io-console-0.8.0/COPYING +56 -0
  111. data/vendor/bundle/ruby/3.3.0/gems/io-console-0.8.0/README.md +46 -0
  112. data/vendor/bundle/ruby/3.3.0/gems/io-console-0.8.0/ext/io/console/Makefile +272 -0
  113. data/vendor/bundle/ruby/3.3.0/gems/io-console-0.8.0/ext/io/console/console.c +1969 -0
  114. data/vendor/bundle/ruby/3.3.0/gems/io-console-0.8.0/ext/io/console/extconf.rb +61 -0
  115. data/vendor/bundle/ruby/3.3.0/gems/io-console-0.8.0/ext/io/console/win32_vk.inc +1390 -0
  116. data/vendor/bundle/ruby/3.3.0/gems/io-console-0.8.0/lib/io/console/size.rb +23 -0
  117. data/vendor/bundle/ruby/3.3.0/gems/io-console-0.8.0/lib/io/console.bundle +0 -0
  118. data/vendor/bundle/ruby/3.3.0/gems/irb-1.15.1/Gemfile +29 -0
  119. data/vendor/bundle/ruby/3.3.0/gems/irb-1.15.1/LICENSE.txt +22 -0
  120. data/vendor/bundle/ruby/3.3.0/gems/irb-1.15.1/README.md +125 -0
  121. data/vendor/bundle/ruby/3.3.0/gems/irb-1.15.1/Rakefile +52 -0
  122. data/vendor/bundle/ruby/3.3.0/gems/irb-1.15.1/bin/console +6 -0
  123. data/vendor/bundle/ruby/3.3.0/gems/irb-1.15.1/bin/setup +6 -0
  124. data/vendor/bundle/ruby/3.3.0/gems/irb-1.15.1/doc/irb/irb-tools.rd.ja +184 -0
  125. data/vendor/bundle/ruby/3.3.0/gems/irb-1.15.1/doc/irb/irb.rd.ja +425 -0
  126. data/vendor/bundle/ruby/3.3.0/gems/irb-1.15.1/exe/irb +9 -0
  127. data/vendor/bundle/ruby/3.3.0/gems/irb-1.15.1/irb.gemspec +46 -0
  128. data/vendor/bundle/ruby/3.3.0/gems/irb-1.15.1/lib/irb/cmd/nop.rb +4 -0
  129. data/vendor/bundle/ruby/3.3.0/gems/irb-1.15.1/lib/irb/color.rb +263 -0
  130. data/vendor/bundle/ruby/3.3.0/gems/irb-1.15.1/lib/irb/color_printer.rb +56 -0
  131. data/vendor/bundle/ruby/3.3.0/gems/irb-1.15.1/lib/irb/command/backtrace.rb +17 -0
  132. data/vendor/bundle/ruby/3.3.0/gems/irb-1.15.1/lib/irb/command/base.rb +60 -0
  133. data/vendor/bundle/ruby/3.3.0/gems/irb-1.15.1/lib/irb/command/break.rb +17 -0
  134. data/vendor/bundle/ruby/3.3.0/gems/irb-1.15.1/lib/irb/command/catch.rb +17 -0
  135. data/vendor/bundle/ruby/3.3.0/gems/irb-1.15.1/lib/irb/command/cd.rb +51 -0
  136. data/vendor/bundle/ruby/3.3.0/gems/irb-1.15.1/lib/irb/command/chws.rb +40 -0
  137. data/vendor/bundle/ruby/3.3.0/gems/irb-1.15.1/lib/irb/command/context.rb +16 -0
  138. data/vendor/bundle/ruby/3.3.0/gems/irb-1.15.1/lib/irb/command/continue.rb +17 -0
  139. data/vendor/bundle/ruby/3.3.0/gems/irb-1.15.1/lib/irb/command/copy.rb +73 -0
  140. data/vendor/bundle/ruby/3.3.0/gems/irb-1.15.1/lib/irb/command/debug.rb +73 -0
  141. data/vendor/bundle/ruby/3.3.0/gems/irb-1.15.1/lib/irb/command/delete.rb +17 -0
  142. data/vendor/bundle/ruby/3.3.0/gems/irb-1.15.1/lib/irb/command/disable_irb.rb +19 -0
  143. data/vendor/bundle/ruby/3.3.0/gems/irb-1.15.1/lib/irb/command/edit.rb +63 -0
  144. data/vendor/bundle/ruby/3.3.0/gems/irb-1.15.1/lib/irb/command/exit.rb +18 -0
  145. data/vendor/bundle/ruby/3.3.0/gems/irb-1.15.1/lib/irb/command/finish.rb +17 -0
  146. data/vendor/bundle/ruby/3.3.0/gems/irb-1.15.1/lib/irb/command/force_exit.rb +18 -0
  147. data/vendor/bundle/ruby/3.3.0/gems/irb-1.15.1/lib/irb/command/help.rb +83 -0
  148. data/vendor/bundle/ruby/3.3.0/gems/irb-1.15.1/lib/irb/command/history.rb +45 -0
  149. data/vendor/bundle/ruby/3.3.0/gems/irb-1.15.1/lib/irb/command/info.rb +17 -0
  150. data/vendor/bundle/ruby/3.3.0/gems/irb-1.15.1/lib/irb/command/internal_helpers.rb +27 -0
  151. data/vendor/bundle/ruby/3.3.0/gems/irb-1.15.1/lib/irb/command/irb_info.rb +33 -0
  152. data/vendor/bundle/ruby/3.3.0/gems/irb-1.15.1/lib/irb/command/load.rb +91 -0
  153. data/vendor/bundle/ruby/3.3.0/gems/irb-1.15.1/lib/irb/command/ls.rb +167 -0
  154. data/vendor/bundle/ruby/3.3.0/gems/irb-1.15.1/lib/irb/command/measure.rb +49 -0
  155. data/vendor/bundle/ruby/3.3.0/gems/irb-1.15.1/lib/irb/command/next.rb +17 -0
  156. data/vendor/bundle/ruby/3.3.0/gems/irb-1.15.1/lib/irb/command/pushws.rb +65 -0
  157. data/vendor/bundle/ruby/3.3.0/gems/irb-1.15.1/lib/irb/command/show_doc.rb +51 -0
  158. data/vendor/bundle/ruby/3.3.0/gems/irb-1.15.1/lib/irb/command/show_source.rb +74 -0
  159. data/vendor/bundle/ruby/3.3.0/gems/irb-1.15.1/lib/irb/command/step.rb +17 -0
  160. data/vendor/bundle/ruby/3.3.0/gems/irb-1.15.1/lib/irb/command/subirb.rb +123 -0
  161. data/vendor/bundle/ruby/3.3.0/gems/irb-1.15.1/lib/irb/command/whereami.rb +23 -0
  162. data/vendor/bundle/ruby/3.3.0/gems/irb-1.15.1/lib/irb/command.rb +23 -0
  163. data/vendor/bundle/ruby/3.3.0/gems/irb-1.15.1/lib/irb/completion.rb +504 -0
  164. data/vendor/bundle/ruby/3.3.0/gems/irb-1.15.1/lib/irb/context.rb +751 -0
  165. data/vendor/bundle/ruby/3.3.0/gems/irb-1.15.1/lib/irb/debug/ui.rb +101 -0
  166. data/vendor/bundle/ruby/3.3.0/gems/irb-1.15.1/lib/irb/debug.rb +127 -0
  167. data/vendor/bundle/ruby/3.3.0/gems/irb-1.15.1/lib/irb/default_commands.rb +279 -0
  168. data/vendor/bundle/ruby/3.3.0/gems/irb-1.15.1/lib/irb/easter-egg.rb +152 -0
  169. data/vendor/bundle/ruby/3.3.0/gems/irb-1.15.1/lib/irb/ext/change-ws.rb +37 -0
  170. data/vendor/bundle/ruby/3.3.0/gems/irb-1.15.1/lib/irb/ext/eval_history.rb +149 -0
  171. data/vendor/bundle/ruby/3.3.0/gems/irb-1.15.1/lib/irb/ext/loader.rb +127 -0
  172. data/vendor/bundle/ruby/3.3.0/gems/irb-1.15.1/lib/irb/ext/multi-irb.rb +258 -0
  173. data/vendor/bundle/ruby/3.3.0/gems/irb-1.15.1/lib/irb/ext/tracer.rb +39 -0
  174. data/vendor/bundle/ruby/3.3.0/gems/irb-1.15.1/lib/irb/ext/use-loader.rb +67 -0
  175. data/vendor/bundle/ruby/3.3.0/gems/irb-1.15.1/lib/irb/ext/workspaces.rb +36 -0
  176. data/vendor/bundle/ruby/3.3.0/gems/irb-1.15.1/lib/irb/frame.rb +80 -0
  177. data/vendor/bundle/ruby/3.3.0/gems/irb-1.15.1/lib/irb/help.rb +28 -0
  178. data/vendor/bundle/ruby/3.3.0/gems/irb-1.15.1/lib/irb/helper_method/base.rb +16 -0
  179. data/vendor/bundle/ruby/3.3.0/gems/irb-1.15.1/lib/irb/helper_method/conf.rb +11 -0
  180. data/vendor/bundle/ruby/3.3.0/gems/irb-1.15.1/lib/irb/helper_method.rb +29 -0
  181. data/vendor/bundle/ruby/3.3.0/gems/irb-1.15.1/lib/irb/history.rb +116 -0
  182. data/vendor/bundle/ruby/3.3.0/gems/irb-1.15.1/lib/irb/init.rb +540 -0
  183. data/vendor/bundle/ruby/3.3.0/gems/irb-1.15.1/lib/irb/input-method.rb +515 -0
  184. data/vendor/bundle/ruby/3.3.0/gems/irb-1.15.1/lib/irb/inspector.rb +136 -0
  185. data/vendor/bundle/ruby/3.3.0/gems/irb-1.15.1/lib/irb/lc/error.rb +52 -0
  186. data/vendor/bundle/ruby/3.3.0/gems/irb-1.15.1/lib/irb/lc/help-message +55 -0
  187. data/vendor/bundle/ruby/3.3.0/gems/irb-1.15.1/lib/irb/lc/ja/error.rb +53 -0
  188. data/vendor/bundle/ruby/3.3.0/gems/irb-1.15.1/lib/irb/lc/ja/help-message +58 -0
  189. data/vendor/bundle/ruby/3.3.0/gems/irb-1.15.1/lib/irb/locale.rb +153 -0
  190. data/vendor/bundle/ruby/3.3.0/gems/irb-1.15.1/lib/irb/nesting_parser.rb +239 -0
  191. data/vendor/bundle/ruby/3.3.0/gems/irb-1.15.1/lib/irb/notifier.rb +230 -0
  192. data/vendor/bundle/ruby/3.3.0/gems/irb-1.15.1/lib/irb/output-method.rb +80 -0
  193. data/vendor/bundle/ruby/3.3.0/gems/irb-1.15.1/lib/irb/pager.rb +213 -0
  194. data/vendor/bundle/ruby/3.3.0/gems/irb-1.15.1/lib/irb/ruby-lex.rb +476 -0
  195. data/vendor/bundle/ruby/3.3.0/gems/irb-1.15.1/lib/irb/ruby_logo.aa +118 -0
  196. data/vendor/bundle/ruby/3.3.0/gems/irb-1.15.1/lib/irb/source_finder.rb +138 -0
  197. data/vendor/bundle/ruby/3.3.0/gems/irb-1.15.1/lib/irb/statement.rb +101 -0
  198. data/vendor/bundle/ruby/3.3.0/gems/irb-1.15.1/lib/irb/version.rb +11 -0
  199. data/vendor/bundle/ruby/3.3.0/gems/irb-1.15.1/lib/irb/workspace.rb +171 -0
  200. data/vendor/bundle/ruby/3.3.0/gems/irb-1.15.1/lib/irb/ws-for-case-2.rb +9 -0
  201. data/vendor/bundle/ruby/3.3.0/gems/irb-1.15.1/lib/irb/xmp.rb +164 -0
  202. data/vendor/bundle/ruby/3.3.0/gems/irb-1.15.1/lib/irb.rb +736 -0
  203. data/vendor/bundle/ruby/3.3.0/gems/irb-1.15.1/man/irb.1 +292 -0
  204. data/vendor/bundle/ruby/3.3.0/gems/parser-3.3.7.2/LICENSE.txt +26 -0
  205. data/vendor/bundle/ruby/3.3.0/gems/parser-3.3.7.2/bin/ruby-parse +7 -0
  206. data/vendor/bundle/ruby/3.3.0/gems/parser-3.3.7.2/bin/ruby-rewrite +7 -0
  207. data/vendor/bundle/ruby/3.3.0/gems/parser-3.3.7.2/lib/gauntlet_parser.rb +123 -0
  208. data/vendor/bundle/ruby/3.3.0/gems/parser-3.3.7.2/lib/parser/all.rb +17 -0
  209. data/vendor/bundle/ruby/3.3.0/gems/parser-3.3.7.2/lib/parser/ast/node.rb +40 -0
  210. data/vendor/bundle/ruby/3.3.0/gems/parser-3.3.7.2/lib/parser/ast/processor.rb +293 -0
  211. data/vendor/bundle/ruby/3.3.0/gems/parser-3.3.7.2/lib/parser/base.rb +291 -0
  212. data/vendor/bundle/ruby/3.3.0/gems/parser-3.3.7.2/lib/parser/builders/default.rb +2338 -0
  213. data/vendor/bundle/ruby/3.3.0/gems/parser-3.3.7.2/lib/parser/clobbering_error.rb +13 -0
  214. data/vendor/bundle/ruby/3.3.0/gems/parser-3.3.7.2/lib/parser/color.rb +32 -0
  215. data/vendor/bundle/ruby/3.3.0/gems/parser-3.3.7.2/lib/parser/context.rb +51 -0
  216. data/vendor/bundle/ruby/3.3.0/gems/parser-3.3.7.2/lib/parser/current.rb +137 -0
  217. data/vendor/bundle/ruby/3.3.0/gems/parser-3.3.7.2/lib/parser/current_arg_stack.rb +46 -0
  218. data/vendor/bundle/ruby/3.3.0/gems/parser-3.3.7.2/lib/parser/deprecation.rb +13 -0
  219. data/vendor/bundle/ruby/3.3.0/gems/parser-3.3.7.2/lib/parser/diagnostic/engine.rb +104 -0
  220. data/vendor/bundle/ruby/3.3.0/gems/parser-3.3.7.2/lib/parser/diagnostic.rb +163 -0
  221. data/vendor/bundle/ruby/3.3.0/gems/parser-3.3.7.2/lib/parser/lexer/dedenter.rb +88 -0
  222. data/vendor/bundle/ruby/3.3.0/gems/parser-3.3.7.2/lib/parser/lexer/explanation.rb +55 -0
  223. data/vendor/bundle/ruby/3.3.0/gems/parser-3.3.7.2/lib/parser/lexer/literal.rb +284 -0
  224. data/vendor/bundle/ruby/3.3.0/gems/parser-3.3.7.2/lib/parser/lexer/stack_state.rb +49 -0
  225. data/vendor/bundle/ruby/3.3.0/gems/parser-3.3.7.2/lib/parser/lexer-F0.rb +12922 -0
  226. data/vendor/bundle/ruby/3.3.0/gems/parser-3.3.7.2/lib/parser/lexer-F1.rb +14875 -0
  227. data/vendor/bundle/ruby/3.3.0/gems/parser-3.3.7.2/lib/parser/lexer-strings.rb +5424 -0
  228. data/vendor/bundle/ruby/3.3.0/gems/parser-3.3.7.2/lib/parser/macruby.rb +9634 -0
  229. data/vendor/bundle/ruby/3.3.0/gems/parser-3.3.7.2/lib/parser/max_numparam_stack.rb +56 -0
  230. data/vendor/bundle/ruby/3.3.0/gems/parser-3.3.7.2/lib/parser/messages.rb +125 -0
  231. data/vendor/bundle/ruby/3.3.0/gems/parser-3.3.7.2/lib/parser/meta.rb +48 -0
  232. data/vendor/bundle/ruby/3.3.0/gems/parser-3.3.7.2/lib/parser/rewriter.rb +105 -0
  233. data/vendor/bundle/ruby/3.3.0/gems/parser-3.3.7.2/lib/parser/ruby18.rb +9272 -0
  234. data/vendor/bundle/ruby/3.3.0/gems/parser-3.3.7.2/lib/parser/ruby19.rb +9558 -0
  235. data/vendor/bundle/ruby/3.3.0/gems/parser-3.3.7.2/lib/parser/ruby20.rb +10229 -0
  236. data/vendor/bundle/ruby/3.3.0/gems/parser-3.3.7.2/lib/parser/ruby21.rb +10203 -0
  237. data/vendor/bundle/ruby/3.3.0/gems/parser-3.3.7.2/lib/parser/ruby22.rb +10302 -0
  238. data/vendor/bundle/ruby/3.3.0/gems/parser-3.3.7.2/lib/parser/ruby23.rb +10322 -0
  239. data/vendor/bundle/ruby/3.3.0/gems/parser-3.3.7.2/lib/parser/ruby24.rb +10454 -0
  240. data/vendor/bundle/ruby/3.3.0/gems/parser-3.3.7.2/lib/parser/ruby25.rb +10374 -0
  241. data/vendor/bundle/ruby/3.3.0/gems/parser-3.3.7.2/lib/parser/ruby26.rb +10352 -0
  242. data/vendor/bundle/ruby/3.3.0/gems/parser-3.3.7.2/lib/parser/ruby27.rb +11947 -0
  243. data/vendor/bundle/ruby/3.3.0/gems/parser-3.3.7.2/lib/parser/ruby30.rb +12243 -0
  244. data/vendor/bundle/ruby/3.3.0/gems/parser-3.3.7.2/lib/parser/ruby31.rb +12716 -0
  245. data/vendor/bundle/ruby/3.3.0/gems/parser-3.3.7.2/lib/parser/ruby32.rb +12704 -0
  246. data/vendor/bundle/ruby/3.3.0/gems/parser-3.3.7.2/lib/parser/ruby33.rb +12589 -0
  247. data/vendor/bundle/ruby/3.3.0/gems/parser-3.3.7.2/lib/parser/ruby34.rb +12596 -0
  248. data/vendor/bundle/ruby/3.3.0/gems/parser-3.3.7.2/lib/parser/rubymotion.rb +9515 -0
  249. data/vendor/bundle/ruby/3.3.0/gems/parser-3.3.7.2/lib/parser/runner/ruby_parse.rb +157 -0
  250. data/vendor/bundle/ruby/3.3.0/gems/parser-3.3.7.2/lib/parser/runner/ruby_rewrite.rb +101 -0
  251. data/vendor/bundle/ruby/3.3.0/gems/parser-3.3.7.2/lib/parser/runner.rb +299 -0
  252. data/vendor/bundle/ruby/3.3.0/gems/parser-3.3.7.2/lib/parser/source/buffer.rb +369 -0
  253. data/vendor/bundle/ruby/3.3.0/gems/parser-3.3.7.2/lib/parser/source/comment/associator.rb +233 -0
  254. data/vendor/bundle/ruby/3.3.0/gems/parser-3.3.7.2/lib/parser/source/comment.rb +134 -0
  255. data/vendor/bundle/ruby/3.3.0/gems/parser-3.3.7.2/lib/parser/source/map/collection.rb +18 -0
  256. data/vendor/bundle/ruby/3.3.0/gems/parser-3.3.7.2/lib/parser/source/map/condition.rb +21 -0
  257. data/vendor/bundle/ruby/3.3.0/gems/parser-3.3.7.2/lib/parser/source/map/constant.rb +32 -0
  258. data/vendor/bundle/ruby/3.3.0/gems/parser-3.3.7.2/lib/parser/source/map/definition.rb +23 -0
  259. data/vendor/bundle/ruby/3.3.0/gems/parser-3.3.7.2/lib/parser/source/map/for.rb +19 -0
  260. data/vendor/bundle/ruby/3.3.0/gems/parser-3.3.7.2/lib/parser/source/map/heredoc.rb +19 -0
  261. data/vendor/bundle/ruby/3.3.0/gems/parser-3.3.7.2/lib/parser/source/map/index.rb +33 -0
  262. data/vendor/bundle/ruby/3.3.0/gems/parser-3.3.7.2/lib/parser/source/map/keyword.rb +20 -0
  263. data/vendor/bundle/ruby/3.3.0/gems/parser-3.3.7.2/lib/parser/source/map/method_definition.rb +25 -0
  264. data/vendor/bundle/ruby/3.3.0/gems/parser-3.3.7.2/lib/parser/source/map/objc_kwarg.rb +19 -0
  265. data/vendor/bundle/ruby/3.3.0/gems/parser-3.3.7.2/lib/parser/source/map/operator.rb +17 -0
  266. data/vendor/bundle/ruby/3.3.0/gems/parser-3.3.7.2/lib/parser/source/map/rescue_body.rb +21 -0
  267. data/vendor/bundle/ruby/3.3.0/gems/parser-3.3.7.2/lib/parser/source/map/send.rb +36 -0
  268. data/vendor/bundle/ruby/3.3.0/gems/parser-3.3.7.2/lib/parser/source/map/ternary.rb +18 -0
  269. data/vendor/bundle/ruby/3.3.0/gems/parser-3.3.7.2/lib/parser/source/map/variable.rb +31 -0
  270. data/vendor/bundle/ruby/3.3.0/gems/parser-3.3.7.2/lib/parser/source/map.rb +186 -0
  271. data/vendor/bundle/ruby/3.3.0/gems/parser-3.3.7.2/lib/parser/source/range.rb +326 -0
  272. data/vendor/bundle/ruby/3.3.0/gems/parser-3.3.7.2/lib/parser/source/rewriter/action.rb +44 -0
  273. data/vendor/bundle/ruby/3.3.0/gems/parser-3.3.7.2/lib/parser/source/rewriter.rb +513 -0
  274. data/vendor/bundle/ruby/3.3.0/gems/parser-3.3.7.2/lib/parser/source/tree_rewriter/action.rb +243 -0
  275. data/vendor/bundle/ruby/3.3.0/gems/parser-3.3.7.2/lib/parser/source/tree_rewriter.rb +431 -0
  276. data/vendor/bundle/ruby/3.3.0/gems/parser-3.3.7.2/lib/parser/static_environment.rb +134 -0
  277. data/vendor/bundle/ruby/3.3.0/gems/parser-3.3.7.2/lib/parser/syntax_error.rb +21 -0
  278. data/vendor/bundle/ruby/3.3.0/gems/parser-3.3.7.2/lib/parser/tree_rewriter.rb +133 -0
  279. data/vendor/bundle/ruby/3.3.0/gems/parser-3.3.7.2/lib/parser/unknown_encoding_in_magic_comment_error.rb +15 -0
  280. data/vendor/bundle/ruby/3.3.0/gems/parser-3.3.7.2/lib/parser/variables_stack.rb +36 -0
  281. data/vendor/bundle/ruby/3.3.0/gems/parser-3.3.7.2/lib/parser/version.rb +5 -0
  282. data/vendor/bundle/ruby/3.3.0/gems/parser-3.3.7.2/lib/parser.rb +91 -0
  283. data/vendor/bundle/ruby/3.3.0/gems/parser-3.3.7.2/parser.gemspec +43 -0
  284. data/vendor/bundle/ruby/3.3.0/gems/pp-0.6.2/BSDL +22 -0
  285. data/vendor/bundle/ruby/3.3.0/gems/pp-0.6.2/COPYING +56 -0
  286. data/vendor/bundle/ruby/3.3.0/gems/pp-0.6.2/lib/pp.rb +699 -0
  287. data/vendor/bundle/ruby/3.3.0/gems/pp-0.6.2/pp.gemspec +35 -0
  288. data/vendor/bundle/ruby/3.3.0/gems/prettyprint-0.2.0/.github/dependabot.yml +6 -0
  289. data/vendor/bundle/ruby/3.3.0/gems/prettyprint-0.2.0/.github/workflows/test.yml +41 -0
  290. data/vendor/bundle/ruby/3.3.0/gems/prettyprint-0.2.0/.gitignore +8 -0
  291. data/vendor/bundle/ruby/3.3.0/gems/prettyprint-0.2.0/Gemfile +4 -0
  292. data/vendor/bundle/ruby/3.3.0/gems/prettyprint-0.2.0/LICENSE.txt +22 -0
  293. data/vendor/bundle/ruby/3.3.0/gems/prettyprint-0.2.0/README.md +43 -0
  294. data/vendor/bundle/ruby/3.3.0/gems/prettyprint-0.2.0/Rakefile +10 -0
  295. data/vendor/bundle/ruby/3.3.0/gems/prettyprint-0.2.0/bin/console +14 -0
  296. data/vendor/bundle/ruby/3.3.0/gems/prettyprint-0.2.0/bin/setup +8 -0
  297. data/vendor/bundle/ruby/3.3.0/gems/prettyprint-0.2.0/lib/prettyprint.rb +558 -0
  298. data/vendor/bundle/ruby/3.3.0/gems/prettyprint-0.2.0/prettyprint.gemspec +29 -0
  299. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/CONTRIBUTING.rdoc +219 -0
  300. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/CVE-2013-0256.rdoc +49 -0
  301. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/ExampleMarkdown.md +39 -0
  302. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/ExampleRDoc.rdoc +210 -0
  303. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/History.rdoc +1668 -0
  304. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/LEGAL.rdoc +50 -0
  305. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/LICENSE.rdoc +59 -0
  306. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/README.rdoc +142 -0
  307. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/RI.md +842 -0
  308. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/TODO.rdoc +60 -0
  309. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/exe/rdoc +43 -0
  310. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/exe/ri +12 -0
  311. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/code_object/alias.rb +111 -0
  312. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/code_object/anon_class.rb +10 -0
  313. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/code_object/any_method.rb +379 -0
  314. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/code_object/attr.rb +175 -0
  315. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/code_object/class_module.rb +871 -0
  316. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/code_object/constant.rb +186 -0
  317. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/code_object/context/section.rb +175 -0
  318. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/code_object/context.rb +1264 -0
  319. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/code_object/extend.rb +9 -0
  320. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/code_object/ghost_method.rb +6 -0
  321. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/code_object/include.rb +9 -0
  322. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/code_object/meta_method.rb +6 -0
  323. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/code_object/method_attr.rb +430 -0
  324. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/code_object/mixin.rb +120 -0
  325. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/code_object/normal_class.rb +92 -0
  326. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/code_object/normal_module.rb +73 -0
  327. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/code_object/require.rb +51 -0
  328. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/code_object/single_class.rb +30 -0
  329. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/code_object/top_level.rb +291 -0
  330. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/code_object.rb +426 -0
  331. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/code_objects.rb +5 -0
  332. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/comment.rb +239 -0
  333. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/cross_reference.rb +228 -0
  334. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/encoding.rb +120 -0
  335. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/erb_partial.rb +18 -0
  336. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/erbio.rb +37 -0
  337. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/generator/darkfish.rb +824 -0
  338. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/generator/json_index.rb +300 -0
  339. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/generator/markup.rb +159 -0
  340. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/generator/pot/message_extractor.rb +68 -0
  341. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/generator/pot/po.rb +84 -0
  342. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/generator/pot/po_entry.rb +141 -0
  343. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/generator/pot.rb +99 -0
  344. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/generator/ri.rb +30 -0
  345. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/generator/template/darkfish/_footer.rhtml +5 -0
  346. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/generator/template/darkfish/_head.rhtml +43 -0
  347. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/generator/template/darkfish/_sidebar_VCS_info.rhtml +19 -0
  348. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/generator/template/darkfish/_sidebar_classes.rhtml +34 -0
  349. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/generator/template/darkfish/_sidebar_extends.rhtml +15 -0
  350. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/generator/template/darkfish/_sidebar_in_files.rhtml +9 -0
  351. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/generator/template/darkfish/_sidebar_includes.rhtml +15 -0
  352. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/generator/template/darkfish/_sidebar_installed.rhtml +15 -0
  353. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/generator/template/darkfish/_sidebar_methods.rhtml +21 -0
  354. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/generator/template/darkfish/_sidebar_navigation.rhtml +11 -0
  355. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/generator/template/darkfish/_sidebar_pages.rhtml +32 -0
  356. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/generator/template/darkfish/_sidebar_parent.rhtml +6 -0
  357. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/generator/template/darkfish/_sidebar_search.rhtml +14 -0
  358. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/generator/template/darkfish/_sidebar_sections.rhtml +11 -0
  359. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/generator/template/darkfish/_sidebar_table_of_contents.rhtml +39 -0
  360. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/generator/template/darkfish/_sidebar_toggle.rhtml +3 -0
  361. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/generator/template/darkfish/class.rhtml +206 -0
  362. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/generator/template/darkfish/css/fonts.css +167 -0
  363. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/generator/template/darkfish/css/rdoc.css +668 -0
  364. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/generator/template/darkfish/fonts/Lato-Light.ttf +0 -0
  365. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/generator/template/darkfish/fonts/Lato-LightItalic.ttf +0 -0
  366. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/generator/template/darkfish/fonts/Lato-Regular.ttf +0 -0
  367. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/generator/template/darkfish/fonts/Lato-RegularItalic.ttf +0 -0
  368. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/generator/template/darkfish/fonts/SourceCodePro-Bold.ttf +0 -0
  369. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/generator/template/darkfish/fonts/SourceCodePro-Regular.ttf +0 -0
  370. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/generator/template/darkfish/images/add.png +0 -0
  371. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/generator/template/darkfish/images/arrow_up.png +0 -0
  372. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/generator/template/darkfish/images/brick.png +0 -0
  373. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/generator/template/darkfish/images/brick_link.png +0 -0
  374. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/generator/template/darkfish/images/bug.png +0 -0
  375. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/generator/template/darkfish/images/bullet_black.png +0 -0
  376. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/generator/template/darkfish/images/bullet_toggle_minus.png +0 -0
  377. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/generator/template/darkfish/images/bullet_toggle_plus.png +0 -0
  378. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/generator/template/darkfish/images/date.png +0 -0
  379. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/generator/template/darkfish/images/delete.png +0 -0
  380. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/generator/template/darkfish/images/find.png +0 -0
  381. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/generator/template/darkfish/images/loadingAnimation.gif +0 -0
  382. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/generator/template/darkfish/images/macFFBgHack.png +0 -0
  383. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/generator/template/darkfish/images/package.png +0 -0
  384. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/generator/template/darkfish/images/page_green.png +0 -0
  385. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/generator/template/darkfish/images/page_white_text.png +0 -0
  386. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/generator/template/darkfish/images/page_white_width.png +0 -0
  387. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/generator/template/darkfish/images/plugin.png +0 -0
  388. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/generator/template/darkfish/images/ruby.png +0 -0
  389. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/generator/template/darkfish/images/tag_blue.png +0 -0
  390. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/generator/template/darkfish/images/tag_green.png +0 -0
  391. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/generator/template/darkfish/images/transparent.png +0 -0
  392. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/generator/template/darkfish/images/wrench.png +0 -0
  393. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/generator/template/darkfish/images/wrench_orange.png +0 -0
  394. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/generator/template/darkfish/images/zoom.png +0 -0
  395. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/generator/template/darkfish/index.rhtml +23 -0
  396. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/generator/template/darkfish/js/darkfish.js +120 -0
  397. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/generator/template/darkfish/js/search.js +110 -0
  398. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/generator/template/darkfish/page.rhtml +18 -0
  399. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/generator/template/darkfish/servlet_not_found.rhtml +20 -0
  400. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/generator/template/darkfish/servlet_root.rhtml +65 -0
  401. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/generator/template/darkfish/table_of_contents.rhtml +70 -0
  402. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/generator/template/json_index/js/navigation.js +105 -0
  403. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/generator/template/json_index/js/searcher.js +229 -0
  404. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/generator.rb +51 -0
  405. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/i18n/locale.rb +102 -0
  406. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/i18n/text.rb +126 -0
  407. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/i18n.rb +10 -0
  408. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/known_classes.rb +74 -0
  409. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/markdown/entities.rb +2131 -0
  410. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/markdown/literals.kpeg +21 -0
  411. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/markdown/literals.rb +454 -0
  412. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/markdown.kpeg +1244 -0
  413. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/markdown.rb +16793 -0
  414. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/markup/attr_changer.rb +22 -0
  415. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/markup/attr_span.rb +35 -0
  416. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/markup/attribute_manager.rb +405 -0
  417. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/markup/attributes.rb +70 -0
  418. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/markup/blank_line.rb +27 -0
  419. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/markup/block_quote.rb +14 -0
  420. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/markup/document.rb +164 -0
  421. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/markup/formatter.rb +272 -0
  422. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/markup/hard_break.rb +31 -0
  423. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/markup/heading.rb +78 -0
  424. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/markup/include.rb +42 -0
  425. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/markup/indented_paragraph.rb +47 -0
  426. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/markup/list.rb +101 -0
  427. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/markup/list_item.rb +99 -0
  428. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/markup/paragraph.rb +28 -0
  429. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/markup/parser.rb +585 -0
  430. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/markup/pre_process.rb +318 -0
  431. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/markup/raw.rb +69 -0
  432. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/markup/regexp_handling.rb +40 -0
  433. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/markup/rule.rb +20 -0
  434. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/markup/table.rb +56 -0
  435. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/markup/to_ansi.rb +93 -0
  436. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/markup/to_bs.rb +102 -0
  437. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/markup/to_html.rb +452 -0
  438. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/markup/to_html_crossref.rb +226 -0
  439. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/markup/to_html_snippet.rb +287 -0
  440. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/markup/to_joined_paragraph.rb +46 -0
  441. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/markup/to_label.rb +74 -0
  442. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/markup/to_markdown.rb +191 -0
  443. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/markup/to_rdoc.rb +352 -0
  444. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/markup/to_table_of_contents.rb +88 -0
  445. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/markup/to_test.rb +69 -0
  446. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/markup/to_tt_only.rb +120 -0
  447. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/markup/verbatim.rb +83 -0
  448. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/markup.rb +240 -0
  449. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/options.rb +1397 -0
  450. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/parser/c.rb +1260 -0
  451. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/parser/changelog.rb +350 -0
  452. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/parser/markdown.rb +22 -0
  453. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/parser/prism_ruby.rb +1099 -0
  454. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/parser/rd.rb +22 -0
  455. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/parser/ripper_state_lex.rb +302 -0
  456. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/parser/ruby.rb +2381 -0
  457. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/parser/ruby_tools.rb +165 -0
  458. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/parser/simple.rb +61 -0
  459. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/parser/text.rb +11 -0
  460. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/parser.rb +297 -0
  461. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/rd/block_parser.rb +1706 -0
  462. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/rd/block_parser.ry +643 -0
  463. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/rd/inline.rb +71 -0
  464. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/rd/inline_parser.rb +1854 -0
  465. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/rd/inline_parser.ry +593 -0
  466. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/rd.rb +99 -0
  467. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/rdoc.rb +566 -0
  468. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/ri/driver.rb +1558 -0
  469. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/ri/formatter.rb +6 -0
  470. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/ri/paths.rb +171 -0
  471. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/ri/store.rb +6 -0
  472. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/ri/task.rb +71 -0
  473. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/ri.rb +20 -0
  474. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/rubygems_hook.rb +330 -0
  475. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/servlet.rb +451 -0
  476. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/stats/normal.rb +58 -0
  477. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/stats/quiet.rb +59 -0
  478. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/stats/verbose.rb +44 -0
  479. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/stats.rb +461 -0
  480. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/store.rb +1001 -0
  481. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/task.rb +354 -0
  482. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/text.rb +322 -0
  483. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/token_stream.rb +118 -0
  484. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/tom_doc.rb +257 -0
  485. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc/version.rb +10 -0
  486. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rdoc.rb +211 -0
  487. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/lib/rubygems_plugin.rb +23 -0
  488. data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.12.0/man/ri.1 +247 -0
  489. data/vendor/bundle/ruby/3.3.0/gems/reline-0.6.0/BSDL +22 -0
  490. data/vendor/bundle/ruby/3.3.0/gems/reline-0.6.0/COPYING +56 -0
  491. data/vendor/bundle/ruby/3.3.0/gems/reline-0.6.0/README.md +94 -0
  492. data/vendor/bundle/ruby/3.3.0/gems/reline-0.6.0/lib/reline/config.rb +373 -0
  493. data/vendor/bundle/ruby/3.3.0/gems/reline-0.6.0/lib/reline/face.rb +199 -0
  494. data/vendor/bundle/ruby/3.3.0/gems/reline-0.6.0/lib/reline/history.rb +76 -0
  495. data/vendor/bundle/ruby/3.3.0/gems/reline-0.6.0/lib/reline/io/ansi.rb +325 -0
  496. data/vendor/bundle/ruby/3.3.0/gems/reline-0.6.0/lib/reline/io/dumb.rb +120 -0
  497. data/vendor/bundle/ruby/3.3.0/gems/reline-0.6.0/lib/reline/io/windows.rb +530 -0
  498. data/vendor/bundle/ruby/3.3.0/gems/reline-0.6.0/lib/reline/io.rb +55 -0
  499. data/vendor/bundle/ruby/3.3.0/gems/reline-0.6.0/lib/reline/key_actor/base.rb +37 -0
  500. data/vendor/bundle/ruby/3.3.0/gems/reline-0.6.0/lib/reline/key_actor/composite.rb +17 -0
  501. data/vendor/bundle/ruby/3.3.0/gems/reline-0.6.0/lib/reline/key_actor/emacs.rb +517 -0
  502. data/vendor/bundle/ruby/3.3.0/gems/reline-0.6.0/lib/reline/key_actor/vi_command.rb +518 -0
  503. data/vendor/bundle/ruby/3.3.0/gems/reline-0.6.0/lib/reline/key_actor/vi_insert.rb +517 -0
  504. data/vendor/bundle/ruby/3.3.0/gems/reline-0.6.0/lib/reline/key_actor.rb +8 -0
  505. data/vendor/bundle/ruby/3.3.0/gems/reline-0.6.0/lib/reline/key_stroke.rb +119 -0
  506. data/vendor/bundle/ruby/3.3.0/gems/reline-0.6.0/lib/reline/kill_ring.rb +125 -0
  507. data/vendor/bundle/ruby/3.3.0/gems/reline-0.6.0/lib/reline/line_editor.rb +2382 -0
  508. data/vendor/bundle/ruby/3.3.0/gems/reline-0.6.0/lib/reline/unicode/east_asian_width.rb +1267 -0
  509. data/vendor/bundle/ruby/3.3.0/gems/reline-0.6.0/lib/reline/unicode.rb +415 -0
  510. data/vendor/bundle/ruby/3.3.0/gems/reline-0.6.0/lib/reline/version.rb +3 -0
  511. data/vendor/bundle/ruby/3.3.0/gems/reline-0.6.0/lib/reline.rb +519 -0
  512. data/vendor/bundle/ruby/3.3.0/gems/reline-0.6.0/license_of_rb-readline +25 -0
  513. data/vendor/bundle/ruby/3.3.0/plugins/rdoc_plugin.rb +1 -0
  514. data/vendor/bundle/ruby/3.3.0/specifications/ast-2.4.3.gemspec +29 -0
  515. data/vendor/bundle/ruby/3.3.0/specifications/debug-1.10.0.gemspec +32 -0
  516. data/vendor/bundle/ruby/3.3.0/specifications/io-console-0.8.0.gemspec +25 -0
  517. data/vendor/bundle/ruby/3.3.0/specifications/irb-1.15.1.gemspec +31 -0
  518. data/vendor/bundle/ruby/3.3.0/specifications/parser-3.3.7.2.gemspec +37 -0
  519. data/vendor/bundle/ruby/3.3.0/specifications/pp-0.6.2.gemspec +27 -0
  520. data/vendor/bundle/ruby/3.3.0/specifications/prettyprint-0.2.0.gemspec +23 -0
  521. data/vendor/bundle/ruby/3.3.0/specifications/rdoc-6.12.0.gemspec +31 -0
  522. data/vendor/bundle/ruby/3.3.0/specifications/reline-0.6.0.gemspec +26 -0
  523. metadata +499 -3
@@ -0,0 +1,1001 @@
1
+ # frozen_string_literal: true
2
+ require 'fileutils'
3
+
4
+ ##
5
+ # A set of rdoc data for a single project (gem, path, etc.).
6
+ #
7
+ # The store manages reading and writing ri data for a project and maintains a
8
+ # cache of methods, classes and ancestors in the store.
9
+ #
10
+ # The store maintains a #cache of its contents for faster lookup. After
11
+ # adding items to the store it must be flushed using #save_cache. The cache
12
+ # contains the following structures:
13
+ #
14
+ # @cache = {
15
+ # :ancestors => {}, # class name => ancestor names
16
+ # :attributes => {}, # class name => attributes
17
+ # :class_methods => {}, # class name => class methods
18
+ # :instance_methods => {}, # class name => instance methods
19
+ # :modules => [], # classes and modules in this store
20
+ # :pages => [], # page names
21
+ # }
22
+ #--
23
+ # TODO need to prune classes
24
+
25
+ class RDoc::Store
26
+
27
+ ##
28
+ # Errors raised from loading or saving the store
29
+
30
+ class Error < RDoc::Error
31
+ end
32
+
33
+ ##
34
+ # Raised when a stored file for a class, module, page or method is missing.
35
+
36
+ class MissingFileError < Error
37
+
38
+ ##
39
+ # The store the file should exist in
40
+
41
+ attr_reader :store
42
+
43
+ ##
44
+ # The file the #name should be saved as
45
+
46
+ attr_reader :file
47
+
48
+ ##
49
+ # The name of the object the #file would be loaded from
50
+
51
+ attr_reader :name
52
+
53
+ ##
54
+ # Creates a new MissingFileError for the missing +file+ for the given
55
+ # +name+ that should have been in the +store+.
56
+
57
+ def initialize store, file, name
58
+ @store = store
59
+ @file = file
60
+ @name = name
61
+ end
62
+
63
+ def message # :nodoc:
64
+ "store at #{@store.path} missing file #{@file} for #{@name}"
65
+ end
66
+
67
+ end
68
+
69
+ ##
70
+ # Stores the name of the C variable a class belongs to. This helps wire up
71
+ # classes defined from C across files.
72
+
73
+ attr_reader :c_enclosure_classes # :nodoc:
74
+
75
+ attr_reader :c_enclosure_names # :nodoc:
76
+
77
+ ##
78
+ # Maps C variables to class or module names for each parsed C file.
79
+
80
+ attr_reader :c_class_variables
81
+
82
+ ##
83
+ # Maps C variables to singleton class names for each parsed C file.
84
+
85
+ attr_reader :c_singleton_class_variables
86
+
87
+ ##
88
+ # If true this Store will not write any files
89
+
90
+ attr_accessor :dry_run
91
+
92
+ ##
93
+ # Path this store reads or writes
94
+
95
+ attr_accessor :path
96
+
97
+ ##
98
+ # The RDoc::RDoc driver for this parse tree. This allows classes consulting
99
+ # the documentation tree to access user-set options, for example.
100
+
101
+ attr_accessor :rdoc
102
+
103
+ ##
104
+ # Type of ri datastore this was loaded from. See RDoc::RI::Driver,
105
+ # RDoc::RI::Paths.
106
+
107
+ attr_accessor :type
108
+
109
+ ##
110
+ # The contents of the Store
111
+
112
+ attr_reader :cache
113
+
114
+ ##
115
+ # The encoding of the contents in the Store
116
+
117
+ attr_accessor :encoding
118
+
119
+ ##
120
+ # The lazy constants alias will be discovered in passing
121
+
122
+ attr_reader :unmatched_constant_alias
123
+
124
+ ##
125
+ # Creates a new Store of +type+ that will load or save to +path+
126
+
127
+ def initialize path = nil, type = nil
128
+ @dry_run = false
129
+ @encoding = nil
130
+ @path = path
131
+ @rdoc = nil
132
+ @type = type
133
+
134
+ @cache = {
135
+ :ancestors => {},
136
+ :attributes => {},
137
+ :class_methods => {},
138
+ :c_class_variables => {},
139
+ :c_singleton_class_variables => {},
140
+ :encoding => @encoding,
141
+ :instance_methods => {},
142
+ :main => nil,
143
+ :modules => [],
144
+ :pages => [],
145
+ :title => nil,
146
+ }
147
+
148
+ @classes_hash = {}
149
+ @modules_hash = {}
150
+ @files_hash = {}
151
+ @text_files_hash = {}
152
+
153
+ @c_enclosure_classes = {}
154
+ @c_enclosure_names = {}
155
+
156
+ @c_class_variables = {}
157
+ @c_singleton_class_variables = {}
158
+
159
+ @unique_classes = nil
160
+ @unique_modules = nil
161
+
162
+ @unmatched_constant_alias = {}
163
+ end
164
+
165
+ ##
166
+ # Adds +module+ as an enclosure (namespace) for the given +variable+ for C
167
+ # files.
168
+
169
+ def add_c_enclosure variable, namespace
170
+ @c_enclosure_classes[variable] = namespace
171
+ end
172
+
173
+ ##
174
+ # Adds C variables from an RDoc::Parser::C
175
+
176
+ def add_c_variables c_parser
177
+ filename = c_parser.top_level.relative_name
178
+
179
+ @c_class_variables[filename] = make_variable_map c_parser.classes
180
+
181
+ @c_singleton_class_variables[filename] = c_parser.singleton_classes
182
+ end
183
+
184
+ ##
185
+ # Adds the file with +name+ as an RDoc::TopLevel to the store. Returns the
186
+ # created RDoc::TopLevel.
187
+
188
+ def add_file absolute_name, relative_name: absolute_name, parser: nil
189
+ unless top_level = @files_hash[relative_name] then
190
+ top_level = RDoc::TopLevel.new absolute_name, relative_name
191
+ top_level.parser = parser if parser
192
+ top_level.store = self
193
+ @files_hash[relative_name] = top_level
194
+ @text_files_hash[relative_name] = top_level if top_level.text?
195
+ end
196
+
197
+ top_level
198
+ end
199
+
200
+ ##
201
+ # Make sure any references to C variable names are resolved to the corresponding class.
202
+ #
203
+
204
+ def resolve_c_superclasses
205
+ @classes_hash.each_value do |klass|
206
+ if klass.superclass.is_a?(String) && (candidate = find_c_enclosure(klass.superclass))
207
+ klass.superclass = candidate
208
+ end
209
+ end
210
+ end
211
+
212
+ ##
213
+ # Sets the parser of +absolute_name+, unless it from a source code file.
214
+
215
+ def update_parser_of_file(absolute_name, parser)
216
+ if top_level = @files_hash[absolute_name] then
217
+ @text_files_hash[absolute_name] = top_level if top_level.text?
218
+ end
219
+ end
220
+
221
+ ##
222
+ # Returns all classes discovered by RDoc
223
+
224
+ def all_classes
225
+ @classes_hash.values
226
+ end
227
+
228
+ ##
229
+ # Returns all classes and modules discovered by RDoc
230
+
231
+ def all_classes_and_modules
232
+ @classes_hash.values + @modules_hash.values
233
+ end
234
+
235
+ ##
236
+ # All TopLevels known to RDoc
237
+
238
+ def all_files
239
+ @files_hash.values
240
+ end
241
+
242
+ ##
243
+ # Returns all modules discovered by RDoc
244
+
245
+ def all_modules
246
+ modules_hash.values
247
+ end
248
+
249
+ ##
250
+ # Ancestors cache accessor. Maps a klass name to an Array of its ancestors
251
+ # in this store. If Foo in this store inherits from Object, Kernel won't be
252
+ # listed (it will be included from ruby's ri store).
253
+
254
+ def ancestors
255
+ @cache[:ancestors]
256
+ end
257
+
258
+ ##
259
+ # Attributes cache accessor. Maps a class to an Array of its attributes.
260
+
261
+ def attributes
262
+ @cache[:attributes]
263
+ end
264
+
265
+ ##
266
+ # Path to the cache file
267
+
268
+ def cache_path
269
+ File.join @path, 'cache.ri'
270
+ end
271
+
272
+ ##
273
+ # Path to the ri data for +klass_name+
274
+
275
+ def class_file klass_name
276
+ name = klass_name.split('::').last
277
+ File.join class_path(klass_name), "cdesc-#{name}.ri"
278
+ end
279
+
280
+ ##
281
+ # Class methods cache accessor. Maps a class to an Array of its class
282
+ # methods (not full name).
283
+
284
+ def class_methods
285
+ @cache[:class_methods]
286
+ end
287
+
288
+ ##
289
+ # Path where data for +klass_name+ will be stored (methods or class data)
290
+
291
+ def class_path klass_name
292
+ File.join @path, *klass_name.split('::')
293
+ end
294
+
295
+ ##
296
+ # Hash of all classes known to RDoc
297
+
298
+ def classes_hash
299
+ @classes_hash
300
+ end
301
+
302
+ ##
303
+ # Removes empty items and ensures item in each collection are unique and
304
+ # sorted
305
+
306
+ def clean_cache_collection collection # :nodoc:
307
+ collection.each do |name, item|
308
+ if item.empty? then
309
+ collection.delete name
310
+ else
311
+ # HACK mongrel-1.1.5 documents its files twice
312
+ item.uniq!
313
+ item.sort!
314
+ end
315
+ end
316
+ end
317
+
318
+ ##
319
+ # Prepares the RDoc code object tree for use by a generator.
320
+ #
321
+ # It finds unique classes/modules defined, and replaces classes/modules that
322
+ # are aliases for another one by a copy with RDoc::ClassModule#is_alias_for
323
+ # set.
324
+ #
325
+ # It updates the RDoc::ClassModule#constant_aliases attribute of "real"
326
+ # classes or modules.
327
+ #
328
+ # It also completely removes the classes and modules that should be removed
329
+ # from the documentation and the methods that have a visibility below
330
+ # +min_visibility+, which is the <tt>--visibility</tt> option.
331
+ #
332
+ # See also RDoc::Context#remove_from_documentation?
333
+
334
+ def complete min_visibility
335
+ fix_basic_object_inheritance
336
+
337
+ # cache included modules before they are removed from the documentation
338
+ all_classes_and_modules.each { |cm| cm.ancestors }
339
+
340
+ unless min_visibility == :nodoc then
341
+ remove_nodoc @classes_hash
342
+ remove_nodoc @modules_hash
343
+ end
344
+
345
+ @unique_classes = find_unique @classes_hash
346
+ @unique_modules = find_unique @modules_hash
347
+
348
+ unique_classes_and_modules.each do |cm|
349
+ cm.complete min_visibility
350
+ end
351
+
352
+ @files_hash.each_key do |file_name|
353
+ tl = @files_hash[file_name]
354
+
355
+ unless tl.text? then
356
+ tl.modules_hash.clear
357
+ tl.classes_hash.clear
358
+
359
+ tl.classes_or_modules.each do |cm|
360
+ name = cm.full_name
361
+ if cm.type == 'class' then
362
+ tl.classes_hash[name] = cm if @classes_hash[name]
363
+ else
364
+ tl.modules_hash[name] = cm if @modules_hash[name]
365
+ end
366
+ end
367
+ end
368
+ end
369
+ end
370
+
371
+ ##
372
+ # Hash of all files known to RDoc
373
+
374
+ def files_hash
375
+ @files_hash
376
+ end
377
+
378
+ ##
379
+ # Finds the enclosure (namespace) for the given C +variable+.
380
+
381
+ def find_c_enclosure variable
382
+ @c_enclosure_classes.fetch variable do
383
+ break unless name = @c_enclosure_names[variable]
384
+
385
+ mod = find_class_or_module name
386
+
387
+ unless mod then
388
+ loaded_mod = load_class_data name
389
+
390
+ file = loaded_mod.in_files.first
391
+
392
+ return unless file # legacy data source
393
+
394
+ file.store = self
395
+
396
+ mod = file.add_module RDoc::NormalModule, name
397
+ end
398
+
399
+ @c_enclosure_classes[variable] = mod
400
+ end
401
+ end
402
+
403
+ ##
404
+ # Finds the class with +name+ in all discovered classes
405
+
406
+ def find_class_named name
407
+ @classes_hash[name]
408
+ end
409
+
410
+ ##
411
+ # Finds the class with +name+ starting in namespace +from+
412
+
413
+ def find_class_named_from name, from
414
+ from = find_class_named from unless RDoc::Context === from
415
+
416
+ until RDoc::TopLevel === from do
417
+ return nil unless from
418
+
419
+ klass = from.find_class_named name
420
+ return klass if klass
421
+
422
+ from = from.parent
423
+ end
424
+
425
+ find_class_named name
426
+ end
427
+
428
+ ##
429
+ # Finds the class or module with +name+
430
+
431
+ def find_class_or_module name
432
+ name = $' if name =~ /^::/
433
+ @classes_hash[name] || @modules_hash[name]
434
+ end
435
+
436
+ ##
437
+ # Finds the file with +name+ in all discovered files
438
+
439
+ def find_file_named name
440
+ @files_hash[name]
441
+ end
442
+
443
+ ##
444
+ # Finds the module with +name+ in all discovered modules
445
+
446
+ def find_module_named name
447
+ @modules_hash[name]
448
+ end
449
+
450
+ ##
451
+ # Returns the RDoc::TopLevel that is a text file and has the given
452
+ # +file_name+
453
+
454
+ def find_text_page file_name
455
+ @text_files_hash.each_value.find do |file|
456
+ file.full_name == file_name
457
+ end
458
+ end
459
+
460
+ ##
461
+ # Finds unique classes/modules defined in +all_hash+,
462
+ # and returns them as an array. Performs the alias
463
+ # updates in +all_hash+: see ::complete.
464
+ #--
465
+ # TODO aliases should be registered by Context#add_module_alias
466
+
467
+ def find_unique all_hash
468
+ unique = []
469
+
470
+ all_hash.each_pair do |full_name, cm|
471
+ unique << cm if full_name == cm.full_name
472
+ end
473
+
474
+ unique
475
+ end
476
+
477
+ ##
478
+ # Fixes the erroneous <tt>BasicObject < Object</tt> in 1.9.
479
+ #
480
+ # Because we assumed all classes without a stated superclass
481
+ # inherit from Object, we have the above wrong inheritance.
482
+ #
483
+ # We fix BasicObject right away if we are running in a Ruby
484
+ # version >= 1.9.
485
+
486
+ def fix_basic_object_inheritance
487
+ basic = classes_hash['BasicObject']
488
+ return unless basic
489
+ basic.superclass = nil
490
+ end
491
+
492
+ ##
493
+ # Friendly rendition of #path
494
+
495
+ def friendly_path
496
+ case type
497
+ when :gem then
498
+ parent = File.expand_path '..', @path
499
+ "gem #{File.basename parent}"
500
+ when :home then RDoc.home
501
+ when :site then 'ruby site'
502
+ when :system then 'ruby core'
503
+ else @path
504
+ end
505
+ end
506
+
507
+ def inspect # :nodoc:
508
+ "#<%s:0x%x %s %p>" % [self.class, object_id, @path, module_names.sort]
509
+ end
510
+
511
+ ##
512
+ # Instance methods cache accessor. Maps a class to an Array of its
513
+ # instance methods (not full name).
514
+
515
+ def instance_methods
516
+ @cache[:instance_methods]
517
+ end
518
+
519
+ ##
520
+ # Loads all items from this store into memory. This recreates a
521
+ # documentation tree for use by a generator
522
+
523
+ def load_all
524
+ load_cache
525
+
526
+ module_names.each do |module_name|
527
+ mod = find_class_or_module(module_name) || load_class(module_name)
528
+
529
+ # load method documentation since the loaded class/module does not have
530
+ # it
531
+ loaded_methods = mod.method_list.map do |method|
532
+ load_method module_name, method.full_name
533
+ end
534
+
535
+ mod.method_list.replace loaded_methods
536
+
537
+ loaded_attributes = mod.attributes.map do |attribute|
538
+ load_method module_name, attribute.full_name
539
+ end
540
+
541
+ mod.attributes.replace loaded_attributes
542
+ end
543
+
544
+ all_classes_and_modules.each do |mod|
545
+ descendent_re = /^#{mod.full_name}::[^:]+$/
546
+
547
+ module_names.each do |name|
548
+ next unless name =~ descendent_re
549
+
550
+ descendent = find_class_or_module name
551
+
552
+ case descendent
553
+ when RDoc::NormalClass then
554
+ mod.classes_hash[name] = descendent
555
+ when RDoc::NormalModule then
556
+ mod.modules_hash[name] = descendent
557
+ end
558
+ end
559
+ end
560
+
561
+ @cache[:pages].each do |page_name|
562
+ page = load_page page_name
563
+ @files_hash[page_name] = page
564
+ @text_files_hash[page_name] = page if page.text?
565
+ end
566
+ end
567
+
568
+ ##
569
+ # Loads cache file for this store
570
+
571
+ def load_cache
572
+ #orig_enc = @encoding
573
+
574
+ @cache = marshal_load(cache_path)
575
+
576
+ load_enc = @cache[:encoding]
577
+
578
+ # TODO this feature will be time-consuming to add:
579
+ # a) Encodings may be incompatible but transcodeable
580
+ # b) Need to warn in the appropriate spots, wherever they may be
581
+ # c) Need to handle cross-cache differences in encodings
582
+ # d) Need to warn when generating into a cache with different encodings
583
+ #
584
+ #if orig_enc and load_enc != orig_enc then
585
+ # warn "Cached encoding #{load_enc} is incompatible with #{orig_enc}\n" \
586
+ # "from #{path}/cache.ri" unless
587
+ # Encoding.compatible? orig_enc, load_enc
588
+ #end
589
+
590
+ @encoding = load_enc unless @encoding
591
+
592
+ @cache[:pages] ||= []
593
+ @cache[:main] ||= nil
594
+ @cache[:c_class_variables] ||= {}
595
+ @cache[:c_singleton_class_variables] ||= {}
596
+
597
+ @cache[:c_class_variables].each do |_, map|
598
+ map.each do |variable, name|
599
+ @c_enclosure_names[variable] = name
600
+ end
601
+ end
602
+
603
+ @cache
604
+ rescue Errno::ENOENT
605
+ end
606
+
607
+ ##
608
+ # Loads ri data for +klass_name+ and hooks it up to this store.
609
+
610
+ def load_class klass_name
611
+ obj = load_class_data klass_name
612
+
613
+ obj.store = self
614
+
615
+ case obj
616
+ when RDoc::NormalClass then
617
+ @classes_hash[klass_name] = obj
618
+ when RDoc::SingleClass then
619
+ @classes_hash[klass_name] = obj
620
+ when RDoc::NormalModule then
621
+ @modules_hash[klass_name] = obj
622
+ end
623
+ end
624
+
625
+ ##
626
+ # Loads ri data for +klass_name+
627
+
628
+ def load_class_data klass_name
629
+ file = class_file klass_name
630
+
631
+ marshal_load(file)
632
+ rescue Errno::ENOENT => e
633
+ error = MissingFileError.new(self, file, klass_name)
634
+ error.set_backtrace e.backtrace
635
+ raise error
636
+ end
637
+
638
+ ##
639
+ # Loads ri data for +method_name+ in +klass_name+
640
+
641
+ def load_method klass_name, method_name
642
+ file = method_file klass_name, method_name
643
+
644
+ obj = marshal_load(file)
645
+ obj.store = self
646
+ obj.parent ||= find_class_or_module(klass_name) || load_class(klass_name)
647
+ obj
648
+ rescue Errno::ENOENT => e
649
+ error = MissingFileError.new(self, file, klass_name + method_name)
650
+ error.set_backtrace e.backtrace
651
+ raise error
652
+ end
653
+
654
+ ##
655
+ # Loads ri data for +page_name+
656
+
657
+ def load_page page_name
658
+ file = page_file page_name
659
+
660
+ obj = marshal_load(file)
661
+ obj.store = self
662
+ obj
663
+ rescue Errno::ENOENT => e
664
+ error = MissingFileError.new(self, file, page_name)
665
+ error.set_backtrace e.backtrace
666
+ raise error
667
+ end
668
+
669
+ ##
670
+ # Gets the main page for this RDoc store. This page is used as the root of
671
+ # the RDoc server.
672
+
673
+ def main
674
+ @cache[:main]
675
+ end
676
+
677
+ ##
678
+ # Sets the main page for this RDoc store.
679
+
680
+ def main= page
681
+ @cache[:main] = page
682
+ end
683
+
684
+ ##
685
+ # Converts the variable => ClassModule map +variables+ from a C parser into
686
+ # a variable => class name map.
687
+
688
+ def make_variable_map variables
689
+ map = {}
690
+
691
+ variables.each { |variable, class_module|
692
+ map[variable] = class_module.full_name
693
+ }
694
+
695
+ map
696
+ end
697
+
698
+ ##
699
+ # Path to the ri data for +method_name+ in +klass_name+
700
+
701
+ def method_file klass_name, method_name
702
+ method_name = method_name.split('::').last
703
+ method_name =~ /#(.*)/
704
+ method_type = $1 ? 'i' : 'c'
705
+ method_name = $1 if $1
706
+ method_name = method_name.gsub(/\W/) { "%%%02x" % $&[0].ord }
707
+
708
+ File.join class_path(klass_name), "#{method_name}-#{method_type}.ri"
709
+ end
710
+
711
+ ##
712
+ # Modules cache accessor. An Array of all the module (and class) names in
713
+ # the store.
714
+
715
+ def module_names
716
+ @cache[:modules]
717
+ end
718
+
719
+ ##
720
+ # Hash of all modules known to RDoc
721
+
722
+ def modules_hash
723
+ @modules_hash
724
+ end
725
+
726
+ ##
727
+ # Returns the RDoc::TopLevel that is a text file and has the given +name+
728
+
729
+ def page name
730
+ @text_files_hash.each_value.find do |file|
731
+ file.page_name == name or file.base_name == name
732
+ end
733
+ end
734
+
735
+ ##
736
+ # Path to the ri data for +page_name+
737
+
738
+ def page_file page_name
739
+ file_name = File.basename(page_name).gsub('.', '_')
740
+
741
+ File.join @path, File.dirname(page_name), "page-#{file_name}.ri"
742
+ end
743
+
744
+ ##
745
+ # Removes from +all_hash+ the contexts that are nodoc or have no content.
746
+ #
747
+ # See RDoc::Context#remove_from_documentation?
748
+
749
+ def remove_nodoc all_hash
750
+ all_hash.keys.each do |name|
751
+ context = all_hash[name]
752
+ all_hash.delete(name) if context.remove_from_documentation?
753
+ end
754
+ end
755
+
756
+ ##
757
+ # Saves all entries in the store
758
+
759
+ def save
760
+ load_cache
761
+
762
+ all_classes_and_modules.each do |klass|
763
+ save_class klass
764
+
765
+ klass.each_method do |method|
766
+ save_method klass, method
767
+ end
768
+
769
+ klass.each_attribute do |attribute|
770
+ save_method klass, attribute
771
+ end
772
+ end
773
+
774
+ all_files.each do |file|
775
+ save_page file
776
+ end
777
+
778
+ save_cache
779
+ end
780
+
781
+ ##
782
+ # Writes the cache file for this store
783
+
784
+ def save_cache
785
+ clean_cache_collection @cache[:ancestors]
786
+ clean_cache_collection @cache[:attributes]
787
+ clean_cache_collection @cache[:class_methods]
788
+ clean_cache_collection @cache[:instance_methods]
789
+
790
+ @cache[:modules].uniq!
791
+ @cache[:modules].sort!
792
+
793
+ @cache[:pages].uniq!
794
+ @cache[:pages].sort!
795
+
796
+ @cache[:encoding] = @encoding # this gets set twice due to assert_cache
797
+
798
+ @cache[:c_class_variables].merge! @c_class_variables
799
+ @cache[:c_singleton_class_variables].merge! @c_singleton_class_variables
800
+
801
+ return if @dry_run
802
+
803
+ File.open cache_path, 'wb' do |io|
804
+ Marshal.dump @cache, io
805
+ end
806
+ end
807
+
808
+ ##
809
+ # Writes the ri data for +klass+ (or module)
810
+
811
+ def save_class klass
812
+ full_name = klass.full_name
813
+
814
+ FileUtils.mkdir_p class_path(full_name) unless @dry_run
815
+
816
+ @cache[:modules] << full_name
817
+
818
+ path = class_file full_name
819
+
820
+ begin
821
+ disk_klass = load_class full_name
822
+
823
+ klass = disk_klass.merge klass
824
+ rescue MissingFileError
825
+ end
826
+
827
+ # BasicObject has no ancestors
828
+ ancestors = klass.direct_ancestors.compact.map do |ancestor|
829
+ # HACK for classes we don't know about (class X < RuntimeError)
830
+ String === ancestor ? ancestor : ancestor.full_name
831
+ end
832
+
833
+ @cache[:ancestors][full_name] ||= []
834
+ @cache[:ancestors][full_name].concat ancestors
835
+
836
+ attribute_definitions = klass.attributes.map do |attribute|
837
+ "#{attribute.definition} #{attribute.name}"
838
+ end
839
+
840
+ unless attribute_definitions.empty? then
841
+ @cache[:attributes][full_name] ||= []
842
+ @cache[:attributes][full_name].concat attribute_definitions
843
+ end
844
+
845
+ to_delete = []
846
+
847
+ unless klass.method_list.empty? then
848
+ @cache[:class_methods][full_name] ||= []
849
+ @cache[:instance_methods][full_name] ||= []
850
+
851
+ class_methods, instance_methods =
852
+ klass.method_list.partition { |meth| meth.singleton }
853
+
854
+ class_methods = class_methods. map { |method| method.name }
855
+ instance_methods = instance_methods.map { |method| method.name }
856
+ attribute_names = klass.attributes.map { |attr| attr.name }
857
+
858
+ old = @cache[:class_methods][full_name] - class_methods
859
+ to_delete.concat old.map { |method|
860
+ method_file full_name, "#{full_name}::#{method}"
861
+ }
862
+
863
+ old = @cache[:instance_methods][full_name] -
864
+ instance_methods - attribute_names
865
+ to_delete.concat old.map { |method|
866
+ method_file full_name, "#{full_name}##{method}"
867
+ }
868
+
869
+ @cache[:class_methods][full_name] = class_methods
870
+ @cache[:instance_methods][full_name] = instance_methods
871
+ end
872
+
873
+ return if @dry_run
874
+
875
+ FileUtils.rm_f to_delete
876
+
877
+ File.open path, 'wb' do |io|
878
+ Marshal.dump klass, io
879
+ end
880
+ end
881
+
882
+ ##
883
+ # Writes the ri data for +method+ on +klass+
884
+
885
+ def save_method klass, method
886
+ full_name = klass.full_name
887
+
888
+ FileUtils.mkdir_p class_path(full_name) unless @dry_run
889
+
890
+ cache = if method.singleton then
891
+ @cache[:class_methods]
892
+ else
893
+ @cache[:instance_methods]
894
+ end
895
+ cache[full_name] ||= []
896
+ cache[full_name] << method.name
897
+
898
+ return if @dry_run
899
+
900
+ File.open method_file(full_name, method.full_name), 'wb' do |io|
901
+ Marshal.dump method, io
902
+ end
903
+ end
904
+
905
+ ##
906
+ # Writes the ri data for +page+
907
+
908
+ def save_page page
909
+ return unless page.text?
910
+
911
+ path = page_file page.full_name
912
+
913
+ FileUtils.mkdir_p File.dirname(path) unless @dry_run
914
+
915
+ cache[:pages] ||= []
916
+ cache[:pages] << page.full_name
917
+
918
+ return if @dry_run
919
+
920
+ File.open path, 'wb' do |io|
921
+ Marshal.dump page, io
922
+ end
923
+ end
924
+
925
+ ##
926
+ # Source of the contents of this store.
927
+ #
928
+ # For a store from a gem the source is the gem name. For a store from the
929
+ # home directory the source is "home". For system ri store (the standard
930
+ # library documentation) the source is"ruby". For a store from the site
931
+ # ri directory the store is "site". For other stores the source is the
932
+ # #path.
933
+
934
+ def source
935
+ case type
936
+ when :gem then File.basename File.expand_path '..', @path
937
+ when :home then 'home'
938
+ when :site then 'site'
939
+ when :system then 'ruby'
940
+ else @path
941
+ end
942
+ end
943
+
944
+ ##
945
+ # Gets the title for this RDoc store. This is used as the title in each
946
+ # page on the RDoc server
947
+
948
+ def title
949
+ @cache[:title]
950
+ end
951
+
952
+ ##
953
+ # Sets the title page for this RDoc store.
954
+
955
+ def title= title
956
+ @cache[:title] = title
957
+ end
958
+
959
+ ##
960
+ # Returns the unique classes discovered by RDoc.
961
+ #
962
+ # ::complete must have been called prior to using this method.
963
+
964
+ def unique_classes
965
+ @unique_classes
966
+ end
967
+
968
+ ##
969
+ # Returns the unique classes and modules discovered by RDoc.
970
+ # ::complete must have been called prior to using this method.
971
+
972
+ def unique_classes_and_modules
973
+ @unique_classes + @unique_modules
974
+ end
975
+
976
+ ##
977
+ # Returns the unique modules discovered by RDoc.
978
+ # ::complete must have been called prior to using this method.
979
+
980
+ def unique_modules
981
+ @unique_modules
982
+ end
983
+
984
+ private
985
+ def marshal_load(file)
986
+ File.open(file, 'rb') {|io| Marshal.load(io, MarshalFilter)}
987
+ end
988
+
989
+ MarshalFilter = proc do |obj|
990
+ case obj
991
+ when true, false, nil, Array, Class, Encoding, Hash, Integer, String, Symbol, RDoc::Text
992
+ else
993
+ unless obj.class.name.start_with?("RDoc::")
994
+ raise TypeError, "not permitted class: #{obj.class.name}"
995
+ end
996
+ end
997
+ obj
998
+ end
999
+ private_constant :MarshalFilter
1000
+
1001
+ end