hyper-pro-gem 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 (380) hide show
  1. checksums.yaml +7 -0
  2. data/hyper-pro-gem.gemspec +12 -0
  3. data/yard-0.9.44/CHANGELOG.md +983 -0
  4. data/yard-0.9.44/LEGAL +94 -0
  5. data/yard-0.9.44/LICENSE +22 -0
  6. data/yard-0.9.44/README.md +329 -0
  7. data/yard-0.9.44/bin/yard +13 -0
  8. data/yard-0.9.44/bin/yardoc +13 -0
  9. data/yard-0.9.44/bin/yri +13 -0
  10. data/yard-0.9.44/docs/CodeObjects.md +115 -0
  11. data/yard-0.9.44/docs/GettingStarted.md +705 -0
  12. data/yard-0.9.44/docs/Handlers.md +152 -0
  13. data/yard-0.9.44/docs/Overview.md +61 -0
  14. data/yard-0.9.44/docs/Parser.md +166 -0
  15. data/yard-0.9.44/docs/Tags.md +304 -0
  16. data/yard-0.9.44/docs/TagsArch.md +123 -0
  17. data/yard-0.9.44/docs/Templates.md +497 -0
  18. data/yard-0.9.44/docs/WhatsNew.md +1297 -0
  19. data/yard-0.9.44/docs/images/code-objects-class-diagram.png +0 -0
  20. data/yard-0.9.44/docs/images/handlers-class-diagram.png +0 -0
  21. data/yard-0.9.44/docs/images/overview-class-diagram.png +0 -0
  22. data/yard-0.9.44/docs/images/parser-class-diagram.png +0 -0
  23. data/yard-0.9.44/docs/images/tags-class-diagram.png +0 -0
  24. data/yard-0.9.44/docs/templates/default/fulldoc/html/full_list_tag.erb +9 -0
  25. data/yard-0.9.44/docs/templates/default/fulldoc/html/setup.rb +6 -0
  26. data/yard-0.9.44/docs/templates/default/layout/html/setup.rb +9 -0
  27. data/yard-0.9.44/docs/templates/default/layout/html/tag_list.erb +11 -0
  28. data/yard-0.9.44/docs/templates/default/yard_tags/html/list.erb +18 -0
  29. data/yard-0.9.44/docs/templates/default/yard_tags/html/setup.rb +26 -0
  30. data/yard-0.9.44/docs/templates/plugin.rb +70 -0
  31. data/yard-0.9.44/lib/rubygems_plugin.rb +9 -0
  32. data/yard-0.9.44/lib/yard/autoload.rb +328 -0
  33. data/yard-0.9.44/lib/yard/cli/command.rb +85 -0
  34. data/yard-0.9.44/lib/yard/cli/command_parser.rb +93 -0
  35. data/yard-0.9.44/lib/yard/cli/config.rb +198 -0
  36. data/yard-0.9.44/lib/yard/cli/diff.rb +278 -0
  37. data/yard-0.9.44/lib/yard/cli/display.rb +69 -0
  38. data/yard-0.9.44/lib/yard/cli/gems.rb +84 -0
  39. data/yard-0.9.44/lib/yard/cli/graph.rb +125 -0
  40. data/yard-0.9.44/lib/yard/cli/help.rb +20 -0
  41. data/yard-0.9.44/lib/yard/cli/i18n.rb +70 -0
  42. data/yard-0.9.44/lib/yard/cli/list.rb +23 -0
  43. data/yard-0.9.44/lib/yard/cli/markup_types.rb +32 -0
  44. data/yard-0.9.44/lib/yard/cli/server.rb +266 -0
  45. data/yard-0.9.44/lib/yard/cli/stats.rb +234 -0
  46. data/yard-0.9.44/lib/yard/cli/yardoc.rb +791 -0
  47. data/yard-0.9.44/lib/yard/cli/yardopts_command.rb +110 -0
  48. data/yard-0.9.44/lib/yard/cli/yri.rb +215 -0
  49. data/yard-0.9.44/lib/yard/code_objects/base.rb +626 -0
  50. data/yard-0.9.44/lib/yard/code_objects/class_object.rb +146 -0
  51. data/yard-0.9.44/lib/yard/code_objects/class_variable_object.rb +11 -0
  52. data/yard-0.9.44/lib/yard/code_objects/constant_object.rb +16 -0
  53. data/yard-0.9.44/lib/yard/code_objects/extended_method_object.rb +24 -0
  54. data/yard-0.9.44/lib/yard/code_objects/extra_file_object.rb +135 -0
  55. data/yard-0.9.44/lib/yard/code_objects/macro_object.rb +171 -0
  56. data/yard-0.9.44/lib/yard/code_objects/method_object.rb +196 -0
  57. data/yard-0.9.44/lib/yard/code_objects/module_object.rb +21 -0
  58. data/yard-0.9.44/lib/yard/code_objects/namespace_mapper.rb +141 -0
  59. data/yard-0.9.44/lib/yard/code_objects/namespace_object.rb +200 -0
  60. data/yard-0.9.44/lib/yard/code_objects/proxy.rb +245 -0
  61. data/yard-0.9.44/lib/yard/code_objects/root_object.rb +19 -0
  62. data/yard-0.9.44/lib/yard/config.rb +274 -0
  63. data/yard-0.9.44/lib/yard/core_ext/array.rb +16 -0
  64. data/yard-0.9.44/lib/yard/core_ext/file.rb +69 -0
  65. data/yard-0.9.44/lib/yard/core_ext/hash.rb +16 -0
  66. data/yard-0.9.44/lib/yard/core_ext/insertion.rb +63 -0
  67. data/yard-0.9.44/lib/yard/core_ext/module.rb +11 -0
  68. data/yard-0.9.44/lib/yard/core_ext/string.rb +68 -0
  69. data/yard-0.9.44/lib/yard/core_ext/symbol_hash.rb +75 -0
  70. data/yard-0.9.44/lib/yard/docstring.rb +386 -0
  71. data/yard-0.9.44/lib/yard/docstring_parser.rb +344 -0
  72. data/yard-0.9.44/lib/yard/gem_index.rb +29 -0
  73. data/yard-0.9.44/lib/yard/globals.rb +22 -0
  74. data/yard-0.9.44/lib/yard/handlers/base.rb +617 -0
  75. data/yard-0.9.44/lib/yard/handlers/c/alias_handler.rb +16 -0
  76. data/yard-0.9.44/lib/yard/handlers/c/attribute_handler.rb +13 -0
  77. data/yard-0.9.44/lib/yard/handlers/c/base.rb +164 -0
  78. data/yard-0.9.44/lib/yard/handlers/c/class_handler.rb +27 -0
  79. data/yard-0.9.44/lib/yard/handlers/c/constant_handler.rb +13 -0
  80. data/yard-0.9.44/lib/yard/handlers/c/handler_methods.rb +212 -0
  81. data/yard-0.9.44/lib/yard/handlers/c/init_handler.rb +20 -0
  82. data/yard-0.9.44/lib/yard/handlers/c/method_handler.rb +45 -0
  83. data/yard-0.9.44/lib/yard/handlers/c/mixin_handler.rb +21 -0
  84. data/yard-0.9.44/lib/yard/handlers/c/module_handler.rb +17 -0
  85. data/yard-0.9.44/lib/yard/handlers/c/override_comment_handler.rb +31 -0
  86. data/yard-0.9.44/lib/yard/handlers/c/path_handler.rb +11 -0
  87. data/yard-0.9.44/lib/yard/handlers/c/struct_handler.rb +13 -0
  88. data/yard-0.9.44/lib/yard/handlers/c/symbol_handler.rb +8 -0
  89. data/yard-0.9.44/lib/yard/handlers/common/method_handler.rb +19 -0
  90. data/yard-0.9.44/lib/yard/handlers/processor.rb +200 -0
  91. data/yard-0.9.44/lib/yard/handlers/rbs/attribute_handler.rb +79 -0
  92. data/yard-0.9.44/lib/yard/handlers/rbs/base.rb +38 -0
  93. data/yard-0.9.44/lib/yard/handlers/rbs/constant_handler.rb +18 -0
  94. data/yard-0.9.44/lib/yard/handlers/rbs/method_handler.rb +327 -0
  95. data/yard-0.9.44/lib/yard/handlers/rbs/mixin_handler.rb +20 -0
  96. data/yard-0.9.44/lib/yard/handlers/rbs/namespace_handler.rb +26 -0
  97. data/yard-0.9.44/lib/yard/handlers/ruby/alias_handler.rb +45 -0
  98. data/yard-0.9.44/lib/yard/handlers/ruby/attribute_handler.rb +90 -0
  99. data/yard-0.9.44/lib/yard/handlers/ruby/base.rb +165 -0
  100. data/yard-0.9.44/lib/yard/handlers/ruby/class_condition_handler.rb +92 -0
  101. data/yard-0.9.44/lib/yard/handlers/ruby/class_handler.rb +119 -0
  102. data/yard-0.9.44/lib/yard/handlers/ruby/class_variable_handler.rb +17 -0
  103. data/yard-0.9.44/lib/yard/handlers/ruby/comment_handler.rb +10 -0
  104. data/yard-0.9.44/lib/yard/handlers/ruby/constant_handler.rb +73 -0
  105. data/yard-0.9.44/lib/yard/handlers/ruby/decorator_handler_methods.rb +123 -0
  106. data/yard-0.9.44/lib/yard/handlers/ruby/dsl_handler.rb +15 -0
  107. data/yard-0.9.44/lib/yard/handlers/ruby/dsl_handler_methods.rb +96 -0
  108. data/yard-0.9.44/lib/yard/handlers/ruby/exception_handler.rb +27 -0
  109. data/yard-0.9.44/lib/yard/handlers/ruby/extend_handler.rb +22 -0
  110. data/yard-0.9.44/lib/yard/handlers/ruby/legacy/alias_handler.rb +37 -0
  111. data/yard-0.9.44/lib/yard/handlers/ruby/legacy/attribute_handler.rb +65 -0
  112. data/yard-0.9.44/lib/yard/handlers/ruby/legacy/base.rb +245 -0
  113. data/yard-0.9.44/lib/yard/handlers/ruby/legacy/class_condition_handler.rb +83 -0
  114. data/yard-0.9.44/lib/yard/handlers/ruby/legacy/class_handler.rb +113 -0
  115. data/yard-0.9.44/lib/yard/handlers/ruby/legacy/class_variable_handler.rb +15 -0
  116. data/yard-0.9.44/lib/yard/handlers/ruby/legacy/comment_handler.rb +10 -0
  117. data/yard-0.9.44/lib/yard/handlers/ruby/legacy/constant_handler.rb +29 -0
  118. data/yard-0.9.44/lib/yard/handlers/ruby/legacy/dsl_handler.rb +17 -0
  119. data/yard-0.9.44/lib/yard/handlers/ruby/legacy/exception_handler.rb +13 -0
  120. data/yard-0.9.44/lib/yard/handlers/ruby/legacy/extend_handler.rb +21 -0
  121. data/yard-0.9.44/lib/yard/handlers/ruby/legacy/method_handler.rb +90 -0
  122. data/yard-0.9.44/lib/yard/handlers/ruby/legacy/mixin_handler.rb +39 -0
  123. data/yard-0.9.44/lib/yard/handlers/ruby/legacy/module_function_handler.rb +19 -0
  124. data/yard-0.9.44/lib/yard/handlers/ruby/legacy/module_handler.rb +12 -0
  125. data/yard-0.9.44/lib/yard/handlers/ruby/legacy/private_class_method_handler.rb +22 -0
  126. data/yard-0.9.44/lib/yard/handlers/ruby/legacy/private_constant_handler.rb +22 -0
  127. data/yard-0.9.44/lib/yard/handlers/ruby/legacy/visibility_handler.rb +18 -0
  128. data/yard-0.9.44/lib/yard/handlers/ruby/legacy/yield_handler.rb +29 -0
  129. data/yard-0.9.44/lib/yard/handlers/ruby/method_condition_handler.rb +9 -0
  130. data/yard-0.9.44/lib/yard/handlers/ruby/method_handler.rb +104 -0
  131. data/yard-0.9.44/lib/yard/handlers/ruby/mixin_handler.rb +61 -0
  132. data/yard-0.9.44/lib/yard/handlers/ruby/module_function_handler.rb +39 -0
  133. data/yard-0.9.44/lib/yard/handlers/ruby/module_handler.rb +12 -0
  134. data/yard-0.9.44/lib/yard/handlers/ruby/private_class_method_handler.rb +14 -0
  135. data/yard-0.9.44/lib/yard/handlers/ruby/private_constant_handler.rb +43 -0
  136. data/yard-0.9.44/lib/yard/handlers/ruby/public_class_method_handler.rb +14 -0
  137. data/yard-0.9.44/lib/yard/handlers/ruby/struct_handler_methods.rb +143 -0
  138. data/yard-0.9.44/lib/yard/handlers/ruby/visibility_handler.rb +35 -0
  139. data/yard-0.9.44/lib/yard/handlers/ruby/yield_handler.rb +31 -0
  140. data/yard-0.9.44/lib/yard/i18n/locale.rb +67 -0
  141. data/yard-0.9.44/lib/yard/i18n/message.rb +57 -0
  142. data/yard-0.9.44/lib/yard/i18n/messages.rb +56 -0
  143. data/yard-0.9.44/lib/yard/i18n/po_parser.rb +61 -0
  144. data/yard-0.9.44/lib/yard/i18n/pot_generator.rb +290 -0
  145. data/yard-0.9.44/lib/yard/i18n/text.rb +173 -0
  146. data/yard-0.9.44/lib/yard/logging.rb +260 -0
  147. data/yard-0.9.44/lib/yard/open_struct.rb +67 -0
  148. data/yard-0.9.44/lib/yard/options.rb +217 -0
  149. data/yard-0.9.44/lib/yard/parser/base.rb +57 -0
  150. data/yard-0.9.44/lib/yard/parser/c/c_parser.rb +235 -0
  151. data/yard-0.9.44/lib/yard/parser/c/comment_parser.rb +134 -0
  152. data/yard-0.9.44/lib/yard/parser/c/statement.rb +66 -0
  153. data/yard-0.9.44/lib/yard/parser/rbs/rbs_parser.rb +325 -0
  154. data/yard-0.9.44/lib/yard/parser/rbs/statement.rb +75 -0
  155. data/yard-0.9.44/lib/yard/parser/ruby/ast_node.rb +559 -0
  156. data/yard-0.9.44/lib/yard/parser/ruby/legacy/irb/slex.rb +294 -0
  157. data/yard-0.9.44/lib/yard/parser/ruby/legacy/ruby_lex.rb +1360 -0
  158. data/yard-0.9.44/lib/yard/parser/ruby/legacy/ruby_parser.rb +32 -0
  159. data/yard-0.9.44/lib/yard/parser/ruby/legacy/statement.rb +68 -0
  160. data/yard-0.9.44/lib/yard/parser/ruby/legacy/statement_list.rb +394 -0
  161. data/yard-0.9.44/lib/yard/parser/ruby/legacy/token_list.rb +74 -0
  162. data/yard-0.9.44/lib/yard/parser/ruby/ruby_parser.rb +792 -0
  163. data/yard-0.9.44/lib/yard/parser/ruby/token_resolver.rb +158 -0
  164. data/yard-0.9.44/lib/yard/parser/source_parser.rb +526 -0
  165. data/yard-0.9.44/lib/yard/rake/yardoc_task.rb +81 -0
  166. data/yard-0.9.44/lib/yard/registry.rb +439 -0
  167. data/yard-0.9.44/lib/yard/registry_resolver.rb +225 -0
  168. data/yard-0.9.44/lib/yard/registry_store.rb +342 -0
  169. data/yard-0.9.44/lib/yard/rubygems/backports/LICENSE.txt +57 -0
  170. data/yard-0.9.44/lib/yard/rubygems/backports/MIT.txt +20 -0
  171. data/yard-0.9.44/lib/yard/rubygems/backports/gem.rb +10 -0
  172. data/yard-0.9.44/lib/yard/rubygems/backports/source_index.rb +365 -0
  173. data/yard-0.9.44/lib/yard/rubygems/backports.rb +10 -0
  174. data/yard-0.9.44/lib/yard/rubygems/doc_manager.rb +90 -0
  175. data/yard-0.9.44/lib/yard/rubygems/hook.rb +197 -0
  176. data/yard-0.9.44/lib/yard/rubygems/specification.rb +50 -0
  177. data/yard-0.9.44/lib/yard/serializers/base.rb +83 -0
  178. data/yard-0.9.44/lib/yard/serializers/file_system_serializer.rb +123 -0
  179. data/yard-0.9.44/lib/yard/serializers/process_serializer.rb +24 -0
  180. data/yard-0.9.44/lib/yard/serializers/stdout_serializer.rb +34 -0
  181. data/yard-0.9.44/lib/yard/serializers/yardoc_serializer.rb +152 -0
  182. data/yard-0.9.44/lib/yard/server/adapter.rb +100 -0
  183. data/yard-0.9.44/lib/yard/server/commands/base.rb +203 -0
  184. data/yard-0.9.44/lib/yard/server/commands/display_file_command.rb +29 -0
  185. data/yard-0.9.44/lib/yard/server/commands/display_object_command.rb +65 -0
  186. data/yard-0.9.44/lib/yard/server/commands/frames_command.rb +16 -0
  187. data/yard-0.9.44/lib/yard/server/commands/library_command.rb +187 -0
  188. data/yard-0.9.44/lib/yard/server/commands/library_index_command.rb +28 -0
  189. data/yard-0.9.44/lib/yard/server/commands/list_command.rb +25 -0
  190. data/yard-0.9.44/lib/yard/server/commands/root_request_command.rb +15 -0
  191. data/yard-0.9.44/lib/yard/server/commands/search_command.rb +79 -0
  192. data/yard-0.9.44/lib/yard/server/commands/static_file_command.rb +23 -0
  193. data/yard-0.9.44/lib/yard/server/commands/static_file_helpers.rb +60 -0
  194. data/yard-0.9.44/lib/yard/server/doc_server_helper.rb +91 -0
  195. data/yard-0.9.44/lib/yard/server/doc_server_serializer.rb +39 -0
  196. data/yard-0.9.44/lib/yard/server/http_utils.rb +512 -0
  197. data/yard-0.9.44/lib/yard/server/library_version.rb +277 -0
  198. data/yard-0.9.44/lib/yard/server/rack_adapter.rb +97 -0
  199. data/yard-0.9.44/lib/yard/server/router.rb +187 -0
  200. data/yard-0.9.44/lib/yard/server/static_caching.rb +77 -0
  201. data/yard-0.9.44/lib/yard/server/templates/default/fulldoc/html/css/custom.css +207 -0
  202. data/yard-0.9.44/lib/yard/server/templates/default/fulldoc/html/images/processing.gif +0 -0
  203. data/yard-0.9.44/lib/yard/server/templates/default/fulldoc/html/js/autocomplete.js +203 -0
  204. data/yard-0.9.44/lib/yard/server/templates/default/layout/html/breadcrumb.erb +21 -0
  205. data/yard-0.9.44/lib/yard/server/templates/default/layout/html/script_setup.erb +7 -0
  206. data/yard-0.9.44/lib/yard/server/templates/default/layout/html/setup.rb +8 -0
  207. data/yard-0.9.44/lib/yard/server/templates/default/method_details/html/permalink.erb +6 -0
  208. data/yard-0.9.44/lib/yard/server/templates/default/method_details/html/setup.rb +5 -0
  209. data/yard-0.9.44/lib/yard/server/templates/doc_server/library_list/html/headers.erb +8 -0
  210. data/yard-0.9.44/lib/yard/server/templates/doc_server/library_list/html/library_list.erb +13 -0
  211. data/yard-0.9.44/lib/yard/server/templates/doc_server/library_list/html/listing.erb +13 -0
  212. data/yard-0.9.44/lib/yard/server/templates/doc_server/library_list/html/setup.rb +6 -0
  213. data/yard-0.9.44/lib/yard/server/templates/doc_server/library_list/html/title.erb +2 -0
  214. data/yard-0.9.44/lib/yard/server/templates/doc_server/processing/html/processing.erb +58 -0
  215. data/yard-0.9.44/lib/yard/server/templates/doc_server/processing/html/setup.rb +4 -0
  216. data/yard-0.9.44/lib/yard/server/templates/doc_server/search/html/search.erb +18 -0
  217. data/yard-0.9.44/lib/yard/server/templates/doc_server/search/html/setup.rb +9 -0
  218. data/yard-0.9.44/lib/yard/server/webrick_adapter.rb +45 -0
  219. data/yard-0.9.44/lib/yard/server.rb +13 -0
  220. data/yard-0.9.44/lib/yard/tags/default_factory.rb +192 -0
  221. data/yard-0.9.44/lib/yard/tags/default_tag.rb +13 -0
  222. data/yard-0.9.44/lib/yard/tags/directives.rb +631 -0
  223. data/yard-0.9.44/lib/yard/tags/library.rb +633 -0
  224. data/yard-0.9.44/lib/yard/tags/option_tag.rb +13 -0
  225. data/yard-0.9.44/lib/yard/tags/overload_tag.rb +72 -0
  226. data/yard-0.9.44/lib/yard/tags/ref_tag.rb +8 -0
  227. data/yard-0.9.44/lib/yard/tags/ref_tag_list.rb +28 -0
  228. data/yard-0.9.44/lib/yard/tags/tag.rb +72 -0
  229. data/yard-0.9.44/lib/yard/tags/tag_format_error.rb +7 -0
  230. data/yard-0.9.44/lib/yard/tags/types_explainer.rb +288 -0
  231. data/yard-0.9.44/lib/yard/templates/engine.rb +185 -0
  232. data/yard-0.9.44/lib/yard/templates/erb_cache.rb +23 -0
  233. data/yard-0.9.44/lib/yard/templates/helpers/base_helper.rb +215 -0
  234. data/yard-0.9.44/lib/yard/templates/helpers/filter_helper.rb +27 -0
  235. data/yard-0.9.44/lib/yard/templates/helpers/html_helper.rb +688 -0
  236. data/yard-0.9.44/lib/yard/templates/helpers/html_syntax_highlight_helper.rb +83 -0
  237. data/yard-0.9.44/lib/yard/templates/helpers/markup/html_entities.rb +2140 -0
  238. data/yard-0.9.44/lib/yard/templates/helpers/markup/hybrid_markdown.rb +2131 -0
  239. data/yard-0.9.44/lib/yard/templates/helpers/markup/rdoc_markdown.rb +23 -0
  240. data/yard-0.9.44/lib/yard/templates/helpers/markup/rdoc_markup.rb +112 -0
  241. data/yard-0.9.44/lib/yard/templates/helpers/markup_helper.rb +175 -0
  242. data/yard-0.9.44/lib/yard/templates/helpers/method_helper.rb +77 -0
  243. data/yard-0.9.44/lib/yard/templates/helpers/module_helper.rb +21 -0
  244. data/yard-0.9.44/lib/yard/templates/helpers/text_helper.rb +112 -0
  245. data/yard-0.9.44/lib/yard/templates/helpers/uml_helper.rb +47 -0
  246. data/yard-0.9.44/lib/yard/templates/section.rb +103 -0
  247. data/yard-0.9.44/lib/yard/templates/template.rb +420 -0
  248. data/yard-0.9.44/lib/yard/templates/template_options.rb +91 -0
  249. data/yard-0.9.44/lib/yard/verifier.rb +151 -0
  250. data/yard-0.9.44/lib/yard/version.rb +6 -0
  251. data/yard-0.9.44/lib/yard.rb +75 -0
  252. data/yard-0.9.44/po/ja.po +31108 -0
  253. data/yard-0.9.44/templates/default/class/dot/setup.rb +7 -0
  254. data/yard-0.9.44/templates/default/class/dot/superklass.erb +3 -0
  255. data/yard-0.9.44/templates/default/class/html/constructor_details.erb +8 -0
  256. data/yard-0.9.44/templates/default/class/html/setup.rb +2 -0
  257. data/yard-0.9.44/templates/default/class/html/subclasses.erb +4 -0
  258. data/yard-0.9.44/templates/default/class/setup.rb +36 -0
  259. data/yard-0.9.44/templates/default/class/text/setup.rb +12 -0
  260. data/yard-0.9.44/templates/default/class/text/subclasses.erb +5 -0
  261. data/yard-0.9.44/templates/default/constant/text/header.erb +11 -0
  262. data/yard-0.9.44/templates/default/constant/text/setup.rb +4 -0
  263. data/yard-0.9.44/templates/default/docstring/html/abstract.erb +4 -0
  264. data/yard-0.9.44/templates/default/docstring/html/deprecated.erb +1 -0
  265. data/yard-0.9.44/templates/default/docstring/html/index.erb +5 -0
  266. data/yard-0.9.44/templates/default/docstring/html/note.erb +6 -0
  267. data/yard-0.9.44/templates/default/docstring/html/private.erb +4 -0
  268. data/yard-0.9.44/templates/default/docstring/html/returns_void.erb +1 -0
  269. data/yard-0.9.44/templates/default/docstring/html/text.erb +1 -0
  270. data/yard-0.9.44/templates/default/docstring/html/todo.erb +6 -0
  271. data/yard-0.9.44/templates/default/docstring/setup.rb +52 -0
  272. data/yard-0.9.44/templates/default/docstring/text/abstract.erb +2 -0
  273. data/yard-0.9.44/templates/default/docstring/text/deprecated.erb +2 -0
  274. data/yard-0.9.44/templates/default/docstring/text/index.erb +2 -0
  275. data/yard-0.9.44/templates/default/docstring/text/note.erb +4 -0
  276. data/yard-0.9.44/templates/default/docstring/text/private.erb +2 -0
  277. data/yard-0.9.44/templates/default/docstring/text/returns_void.erb +1 -0
  278. data/yard-0.9.44/templates/default/docstring/text/text.erb +1 -0
  279. data/yard-0.9.44/templates/default/docstring/text/todo.erb +4 -0
  280. data/yard-0.9.44/templates/default/fulldoc/html/css/common.css +1 -0
  281. data/yard-0.9.44/templates/default/fulldoc/html/css/full_list.css +206 -0
  282. data/yard-0.9.44/templates/default/fulldoc/html/css/style.css +1089 -0
  283. data/yard-0.9.44/templates/default/fulldoc/html/frames.erb +22 -0
  284. data/yard-0.9.44/templates/default/fulldoc/html/full_list.erb +40 -0
  285. data/yard-0.9.44/templates/default/fulldoc/html/full_list_class.erb +2 -0
  286. data/yard-0.9.44/templates/default/fulldoc/html/full_list_file.erb +7 -0
  287. data/yard-0.9.44/templates/default/fulldoc/html/full_list_method.erb +10 -0
  288. data/yard-0.9.44/templates/default/fulldoc/html/js/app.js +801 -0
  289. data/yard-0.9.44/templates/default/fulldoc/html/js/full_list.js +334 -0
  290. data/yard-0.9.44/templates/default/fulldoc/html/js/jquery.js +4 -0
  291. data/yard-0.9.44/templates/default/fulldoc/html/setup.rb +249 -0
  292. data/yard-0.9.44/templates/default/layout/dot/header.erb +6 -0
  293. data/yard-0.9.44/templates/default/layout/dot/setup.rb +15 -0
  294. data/yard-0.9.44/templates/default/layout/html/breadcrumb.erb +11 -0
  295. data/yard-0.9.44/templates/default/layout/html/files.erb +11 -0
  296. data/yard-0.9.44/templates/default/layout/html/footer.erb +5 -0
  297. data/yard-0.9.44/templates/default/layout/html/headers.erb +15 -0
  298. data/yard-0.9.44/templates/default/layout/html/index.erb +2 -0
  299. data/yard-0.9.44/templates/default/layout/html/layout.erb +26 -0
  300. data/yard-0.9.44/templates/default/layout/html/listing.erb +4 -0
  301. data/yard-0.9.44/templates/default/layout/html/objects.erb +32 -0
  302. data/yard-0.9.44/templates/default/layout/html/script_setup.erb +4 -0
  303. data/yard-0.9.44/templates/default/layout/html/search.erb +13 -0
  304. data/yard-0.9.44/templates/default/layout/html/setup.rb +89 -0
  305. data/yard-0.9.44/templates/default/method/html/header.erb +17 -0
  306. data/yard-0.9.44/templates/default/method/setup.rb +4 -0
  307. data/yard-0.9.44/templates/default/method/text/header.erb +1 -0
  308. data/yard-0.9.44/templates/default/method_details/html/header.erb +3 -0
  309. data/yard-0.9.44/templates/default/method_details/html/method_signature.erb +25 -0
  310. data/yard-0.9.44/templates/default/method_details/html/source.erb +10 -0
  311. data/yard-0.9.44/templates/default/method_details/setup.rb +11 -0
  312. data/yard-0.9.44/templates/default/method_details/text/header.erb +10 -0
  313. data/yard-0.9.44/templates/default/method_details/text/method_signature.erb +12 -0
  314. data/yard-0.9.44/templates/default/method_details/text/setup.rb +11 -0
  315. data/yard-0.9.44/templates/default/module/dot/child.erb +1 -0
  316. data/yard-0.9.44/templates/default/module/dot/dependencies.erb +3 -0
  317. data/yard-0.9.44/templates/default/module/dot/header.erb +6 -0
  318. data/yard-0.9.44/templates/default/module/dot/info.erb +14 -0
  319. data/yard-0.9.44/templates/default/module/dot/setup.rb +15 -0
  320. data/yard-0.9.44/templates/default/module/html/attribute_details.erb +10 -0
  321. data/yard-0.9.44/templates/default/module/html/attribute_summary.erb +8 -0
  322. data/yard-0.9.44/templates/default/module/html/box_info.erb +43 -0
  323. data/yard-0.9.44/templates/default/module/html/children.erb +8 -0
  324. data/yard-0.9.44/templates/default/module/html/constant_summary.erb +17 -0
  325. data/yard-0.9.44/templates/default/module/html/defines.erb +3 -0
  326. data/yard-0.9.44/templates/default/module/html/header.erb +5 -0
  327. data/yard-0.9.44/templates/default/module/html/inherited_attributes.erb +14 -0
  328. data/yard-0.9.44/templates/default/module/html/inherited_constants.erb +8 -0
  329. data/yard-0.9.44/templates/default/module/html/inherited_methods.erb +20 -0
  330. data/yard-0.9.44/templates/default/module/html/item_summary.erb +40 -0
  331. data/yard-0.9.44/templates/default/module/html/method_details_list.erb +9 -0
  332. data/yard-0.9.44/templates/default/module/html/method_summary.erb +22 -0
  333. data/yard-0.9.44/templates/default/module/html/methodmissing.erb +12 -0
  334. data/yard-0.9.44/templates/default/module/html/pre_docstring.erb +1 -0
  335. data/yard-0.9.44/templates/default/module/setup.rb +187 -0
  336. data/yard-0.9.44/templates/default/module/text/children.erb +10 -0
  337. data/yard-0.9.44/templates/default/module/text/class_meths_list.erb +8 -0
  338. data/yard-0.9.44/templates/default/module/text/extends.erb +8 -0
  339. data/yard-0.9.44/templates/default/module/text/header.erb +7 -0
  340. data/yard-0.9.44/templates/default/module/text/includes.erb +8 -0
  341. data/yard-0.9.44/templates/default/module/text/instance_meths_list.erb +8 -0
  342. data/yard-0.9.44/templates/default/module/text/setup.rb +13 -0
  343. data/yard-0.9.44/templates/default/onefile/html/files.erb +5 -0
  344. data/yard-0.9.44/templates/default/onefile/html/headers.erb +8 -0
  345. data/yard-0.9.44/templates/default/onefile/html/layout.erb +16 -0
  346. data/yard-0.9.44/templates/default/onefile/html/readme.erb +3 -0
  347. data/yard-0.9.44/templates/default/onefile/html/setup.rb +62 -0
  348. data/yard-0.9.44/templates/default/root/dot/child.erb +3 -0
  349. data/yard-0.9.44/templates/default/root/dot/setup.rb +6 -0
  350. data/yard-0.9.44/templates/default/root/html/setup.rb +2 -0
  351. data/yard-0.9.44/templates/default/tags/html/example.erb +11 -0
  352. data/yard-0.9.44/templates/default/tags/html/index.erb +3 -0
  353. data/yard-0.9.44/templates/default/tags/html/option.erb +24 -0
  354. data/yard-0.9.44/templates/default/tags/html/overload.erb +14 -0
  355. data/yard-0.9.44/templates/default/tags/html/see.erb +8 -0
  356. data/yard-0.9.44/templates/default/tags/html/tag.erb +20 -0
  357. data/yard-0.9.44/templates/default/tags/setup.rb +57 -0
  358. data/yard-0.9.44/templates/default/tags/text/example.erb +12 -0
  359. data/yard-0.9.44/templates/default/tags/text/index.erb +1 -0
  360. data/yard-0.9.44/templates/default/tags/text/option.erb +20 -0
  361. data/yard-0.9.44/templates/default/tags/text/overload.erb +19 -0
  362. data/yard-0.9.44/templates/default/tags/text/see.erb +11 -0
  363. data/yard-0.9.44/templates/default/tags/text/tag.erb +13 -0
  364. data/yard-0.9.44/templates/guide/class/html/setup.rb +2 -0
  365. data/yard-0.9.44/templates/guide/docstring/html/setup.rb +2 -0
  366. data/yard-0.9.44/templates/guide/fulldoc/html/css/style.css +358 -0
  367. data/yard-0.9.44/templates/guide/fulldoc/html/js/app.js +61 -0
  368. data/yard-0.9.44/templates/guide/fulldoc/html/setup.rb +74 -0
  369. data/yard-0.9.44/templates/guide/layout/html/layout.erb +78 -0
  370. data/yard-0.9.44/templates/guide/layout/html/setup.rb +25 -0
  371. data/yard-0.9.44/templates/guide/method/html/header.erb +18 -0
  372. data/yard-0.9.44/templates/guide/method/html/setup.rb +22 -0
  373. data/yard-0.9.44/templates/guide/module/html/header.erb +7 -0
  374. data/yard-0.9.44/templates/guide/module/html/method_list.erb +5 -0
  375. data/yard-0.9.44/templates/guide/module/html/setup.rb +27 -0
  376. data/yard-0.9.44/templates/guide/onefile/html/files.erb +4 -0
  377. data/yard-0.9.44/templates/guide/onefile/html/setup.rb +6 -0
  378. data/yard-0.9.44/templates/guide/onefile/html/toc.erb +3 -0
  379. data/yard-0.9.44/templates/guide/tags/html/setup.rb +9 -0
  380. metadata +419 -0
@@ -0,0 +1,60 @@
1
+ # frozen_string_literal: true
2
+
3
+ module YARD
4
+ module Server
5
+ module Commands
6
+ # Include this module to get access to {#static_template_file?}
7
+ # and {favicon?} helpers.
8
+ module StaticFileHelpers
9
+ include Server::HTTPUtils
10
+
11
+ # Serves an empty favicon.
12
+ # @raise [FinishRequest] finalizes an empty body if the path matches
13
+ # /favicon.ico so browsers don't complain.
14
+ def favicon?
15
+ return unless request.path == '/favicon.ico'
16
+ headers['Content-Type'] = 'image/png'
17
+ self.status = 200
18
+ self.body = ''
19
+ raise FinishRequest
20
+ end
21
+
22
+ # Attempts to route a path to a static template file.
23
+ #
24
+ # @raise [FinishRequest] if a file was found and served
25
+ # @return [void]
26
+ def static_template_file?
27
+ # this const was defined in StaticFileCommand originally
28
+ default_mime_types = StaticFileCommand::DefaultMimeTypes
29
+
30
+ file = find_file(adapter, path)
31
+
32
+ if file
33
+ ext = "." + (path[/\.(\w+)$/, 1] || "html")
34
+ headers['Content-Type'] = mime_type(ext, default_mime_types)
35
+ self.body = File.read(file)
36
+ raise FinishRequest
37
+ end
38
+ end
39
+
40
+ module_function
41
+
42
+ def find_file(adapter, url)
43
+ # this const was defined in StaticFileCommand originally
44
+ static_paths = StaticFileCommand::STATIC_PATHS
45
+
46
+ file = nil
47
+ ([adapter.document_root] + static_paths.reverse).compact.each do |path_prefix|
48
+ file = File.join(path_prefix, url)
49
+ break if File.exist?(file)
50
+ file = nil
51
+ end
52
+
53
+ # Search in default/fulldoc/html template if nothing in static asset paths
54
+ assets_template = Templates::Engine.template(:default, :fulldoc, :html)
55
+ file || assets_template.find_file(url)
56
+ end
57
+ end
58
+ end
59
+ end
60
+ end
@@ -0,0 +1,91 @@
1
+ # frozen_string_literal: true
2
+ module YARD
3
+ module Server
4
+ # A module that is mixed into {Templates::Template} in order to customize
5
+ # certain template methods.
6
+ module DocServerHelper
7
+ # Modifies {Templates::Helpers::HtmlHelper#url_for} to return a URL instead
8
+ # of a disk location.
9
+ # @param (see Templates::Helpers::HtmlHelper#url_for)
10
+ # @return (see Templates::Helpers::HtmlHelper#url_for)
11
+ def url_for(obj, anchor = nil, relative = false) # rubocop:disable Lint/UnusedMethodArgument
12
+ return '' if obj.nil?
13
+ return url_for_index if obj == '_index.html'
14
+ return abs_url(base_path(router.static_prefix), obj) if String === obj
15
+ url = super(obj, anchor, false)
16
+ return unless url
17
+ abs_url(base_path(router.docs_prefix), url)
18
+ end
19
+
20
+ # Modifies {Templates::Helpers::HtmlHelper#url_for_file} to return a URL instead
21
+ # of a disk location.
22
+ # @param (see Templates::Helpers::HtmlHelper#url_for_file)
23
+ # @return (see Templates::Helpers::HtmlHelper#url_for_file)
24
+ def url_for_file(filename, anchor = nil)
25
+ if filename.is_a?(CodeObjects::ExtraFileObject)
26
+ filename = filename.filename
27
+ end
28
+ fname = filename.sub(%r{^#{@library.source_path.to_s}/}, '')
29
+ fname += "##{anchor}" if anchor && !anchor.empty?
30
+ abs_url(base_path(router.docs_prefix), 'file', fname)
31
+ end
32
+
33
+ # Modifies {Templates::Helpers::HtmlHelper#url_for_list} to return a URL
34
+ # based on the list prefix instead of a HTML filename.
35
+ # @param (see Templates::Helpers::HtmlHelper#url_for_list)
36
+ # @return (see Templates::Helpers::HtmlHelper#url_for_list)
37
+ def url_for_list(type)
38
+ abs_url(base_path(router.list_prefix), type.to_s)
39
+ end
40
+
41
+ # Returns the frames URL for the page
42
+ # @return (see Templates::Helpers::HtmlHelper#url_for_frameset)
43
+ def url_for_frameset
44
+ options.file ? url_for_file(options.file) : url_for(object)
45
+ end
46
+
47
+ # Returns the main URL, first checking a readme and then linking to the index
48
+ # @return (see Templates::Helpers::HtmlHelper#url_for_main)
49
+ def url_for_main
50
+ options.readme ? url_for_file(options.readme) : url_for_index
51
+ end
52
+
53
+ # Returns the URL for the alphabetic index page
54
+ # @return (see Templates::Helpers::HtmlHelper#url_for_index)
55
+ def url_for_index
56
+ abs_url(base_path(router.docs_prefix), 'index')
57
+ end
58
+
59
+ # @param path_components [Array<String>] components of a URL
60
+ # @return [String] the absolute path from any mounted base URI.
61
+ def abs_url(*path_components)
62
+ File.join(router.request.script_name, *path_components)
63
+ end
64
+
65
+ # @example The base path for a library 'foo'
66
+ # base_path('docs') # => 'docs/foo'
67
+ # @param [String] path the path prefix for a base path URI
68
+ # @return [String] the base URI for a library with an extra +path+ prefix
69
+ def base_path(path)
70
+ libname = router.request.version_supplied ? @library.to_s : @library.name
71
+ path + (@single_library ? '' : "/#{libname}")
72
+ end
73
+
74
+ # @return [Router] convenience method for accessing the router
75
+ def router; @adapter.router end
76
+
77
+ # @return [String] a timestamp for a given file
78
+ def mtime(file)
79
+ file = YARD::Server::Commands::StaticFileHelpers.find_file(@adapter, file)
80
+ file ? File.mtime(file).to_i : nil
81
+ end
82
+
83
+ # @return [String] a URL for a file with a timestamp
84
+ def mtime_url(file)
85
+ url = url_for(file)
86
+ time = mtime(file)
87
+ url + (time ? "?#{time}" : "")
88
+ end
89
+ end
90
+ end
91
+ end
@@ -0,0 +1,39 @@
1
+ # frozen_string_literal: true
2
+ module YARD
3
+ module Server
4
+ # A custom {Serializers::Base serializer} which returns resource URLs instead of
5
+ # static relative paths to files on disk.
6
+ class DocServerSerializer < Serializers::FileSystemSerializer
7
+ def initialize(_command = nil)
8
+ super(:basepath => '', :extension => '')
9
+ end
10
+
11
+ def serialized_path(object)
12
+ case object
13
+ when CodeObjects::RootObject
14
+ "toplevel"
15
+ when CodeObjects::ExtendedMethodObject
16
+ serialized_path(object.namespace) + ':' + urlencode(object.name.to_s)
17
+ when CodeObjects::MethodObject
18
+ serialized_path(object.namespace) +
19
+ (object.scope == :instance ? ":" : ".") + urlencode(object.name.to_s)
20
+ when CodeObjects::ConstantObject, CodeObjects::ClassVariableObject
21
+ serialized_path(object.namespace) + "##{object.name}-#{object.type}"
22
+ when CodeObjects::ExtraFileObject
23
+ super(object).gsub(/^file\./, 'file/')
24
+ else
25
+ super(object)
26
+ end
27
+ end
28
+
29
+ private
30
+
31
+ def urlencode(name)
32
+ if name.respond_to?(:force_encoding)
33
+ name = name.dup.force_encoding('binary')
34
+ end
35
+ Templates::Helpers::HtmlHelper.urlencode(name)
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,512 @@
1
+ # frozen_string_literal: false
2
+ #
3
+ # httputils.rb -- HTTPUtils Module
4
+ #
5
+ # Author: IPR -- Internet Programming with Ruby -- writers
6
+ # Copyright (c) 2000, 2001 TAKAHASHI Masayoshi, GOTOU Yuuzou
7
+ # Copyright (c) 2002 Internet Programming with Ruby writers. All rights
8
+ # reserved.
9
+ #
10
+ # $IPR: httputils.rb,v 1.34 2003/06/05 21:34:08 gotoyuzo Exp $
11
+
12
+ require 'socket'
13
+ require 'tempfile'
14
+
15
+ module YARD::Server
16
+ CR = "\x0d" # :nodoc:
17
+ LF = "\x0a" # :nodoc:
18
+ CRLF = "\x0d\x0a" # :nodoc:
19
+
20
+ ##
21
+ # HTTPUtils provides utility methods for working with the HTTP protocol.
22
+ #
23
+ # This module is generally used internally by WEBrick
24
+
25
+ module HTTPUtils
26
+
27
+ ##
28
+ # Normalizes a request path. Raises an exception if the path cannot be
29
+ # normalized.
30
+
31
+ def normalize_path(path)
32
+ raise "abnormal path `#{path}'" if path[0] != ?/
33
+ ret = path.dup
34
+
35
+ ret.gsub!(%r{/+}o, '/') # // => /
36
+ while ret.sub!(%r'/\.(?:/|\Z)', '/'); end # /. => /
37
+ while ret.sub!(%r'/(?!\.\./)[^/]+/\.\.(?:/|\Z)', '/'); end # /foo/.. => /foo
38
+
39
+ raise "abnormal path `#{path}'" if %r{/\.\.(/|\Z)} =~ ret
40
+ ret
41
+ end
42
+ module_function :normalize_path
43
+
44
+ ##
45
+ # Default mime types
46
+
47
+ DefaultMimeTypes = {
48
+ "ai" => "application/postscript",
49
+ "asc" => "text/plain",
50
+ "avi" => "video/x-msvideo",
51
+ "bin" => "application/octet-stream",
52
+ "bmp" => "image/bmp",
53
+ "class" => "application/octet-stream",
54
+ "cer" => "application/pkix-cert",
55
+ "crl" => "application/pkix-crl",
56
+ "crt" => "application/x-x509-ca-cert",
57
+ #"crl" => "application/x-pkcs7-crl",
58
+ "css" => "text/css",
59
+ "dms" => "application/octet-stream",
60
+ "doc" => "application/msword",
61
+ "dvi" => "application/x-dvi",
62
+ "eps" => "application/postscript",
63
+ "etx" => "text/x-setext",
64
+ "exe" => "application/octet-stream",
65
+ "gif" => "image/gif",
66
+ "htm" => "text/html",
67
+ "html" => "text/html",
68
+ "jpe" => "image/jpeg",
69
+ "jpeg" => "image/jpeg",
70
+ "jpg" => "image/jpeg",
71
+ "js" => "application/javascript",
72
+ "json" => "application/json",
73
+ "lha" => "application/octet-stream",
74
+ "lzh" => "application/octet-stream",
75
+ "mjs" => "application/javascript",
76
+ "mov" => "video/quicktime",
77
+ "mpe" => "video/mpeg",
78
+ "mpeg" => "video/mpeg",
79
+ "mpg" => "video/mpeg",
80
+ "pbm" => "image/x-portable-bitmap",
81
+ "pdf" => "application/pdf",
82
+ "pgm" => "image/x-portable-graymap",
83
+ "png" => "image/png",
84
+ "pnm" => "image/x-portable-anymap",
85
+ "ppm" => "image/x-portable-pixmap",
86
+ "ppt" => "application/vnd.ms-powerpoint",
87
+ "ps" => "application/postscript",
88
+ "qt" => "video/quicktime",
89
+ "ras" => "image/x-cmu-raster",
90
+ "rb" => "text/plain",
91
+ "rd" => "text/plain",
92
+ "rtf" => "application/rtf",
93
+ "sgm" => "text/sgml",
94
+ "sgml" => "text/sgml",
95
+ "svg" => "image/svg+xml",
96
+ "tif" => "image/tiff",
97
+ "tiff" => "image/tiff",
98
+ "txt" => "text/plain",
99
+ "wasm" => "application/wasm",
100
+ "xbm" => "image/x-xbitmap",
101
+ "xhtml" => "text/html",
102
+ "xls" => "application/vnd.ms-excel",
103
+ "xml" => "text/xml",
104
+ "xpm" => "image/x-xpixmap",
105
+ "xwd" => "image/x-xwindowdump",
106
+ "zip" => "application/zip",
107
+ }
108
+
109
+ ##
110
+ # Loads Apache-compatible mime.types in +file+.
111
+
112
+ def load_mime_types(file)
113
+ # note: +file+ may be a "| command" for now; some people may
114
+ # rely on this, but currently we do not use this method by default.
115
+ open(file){ |io|
116
+ hash = Hash.new
117
+ io.each{ |line|
118
+ next if /^#/ =~ line
119
+ line.chomp!
120
+ mimetype, ext0 = line.split(/\s+/, 2)
121
+ next unless ext0
122
+ next if ext0.empty?
123
+ ext0.split(/\s+/).each{ |ext| hash[ext] = mimetype }
124
+ }
125
+ hash
126
+ }
127
+ end
128
+ module_function :load_mime_types
129
+
130
+ ##
131
+ # Returns the mime type of +filename+ from the list in +mime_tab+. If no
132
+ # mime type was found application/octet-stream is returned.
133
+
134
+ def mime_type(filename, mime_tab)
135
+ suffix1 = (/\.(\w+)$/ =~ filename && $1.downcase)
136
+ suffix2 = (/\.(\w+)\.[\w\-]+$/ =~ filename && $1.downcase)
137
+ mime_tab[suffix1] || mime_tab[suffix2] || "application/octet-stream"
138
+ end
139
+ module_function :mime_type
140
+
141
+ ##
142
+ # Parses an HTTP header +raw+ into a hash of header fields with an Array
143
+ # of values.
144
+
145
+ def parse_header(raw)
146
+ header = Hash.new([].freeze)
147
+ field = nil
148
+ raw.each_line{|line|
149
+ case line
150
+ when /^([A-Za-z0-9!\#$%&'*+\-.^_`|~]+):\s*(.*?)\s*\z/om
151
+ field, value = $1, $2
152
+ field.downcase!
153
+ header[field] = [] unless header.has_key?(field)
154
+ header[field] << value
155
+ when /^\s+(.*?)\s*\z/om
156
+ value = $1
157
+ unless field
158
+ raise HTTPStatus::BadRequest, "bad header '#{line}'."
159
+ end
160
+ header[field][-1] << " " << value
161
+ else
162
+ raise HTTPStatus::BadRequest, "bad header '#{line}'."
163
+ end
164
+ }
165
+ header.each{|key, values|
166
+ values.each(&:strip!)
167
+ }
168
+ header
169
+ end
170
+ module_function :parse_header
171
+
172
+ ##
173
+ # Splits a header value +str+ according to HTTP specification.
174
+
175
+ def split_header_value(str)
176
+ str.scan(%r'\G((?:"(?:\\.|[^"])+?"|[^",]+)+)
177
+ (?:,\s*|\Z)'xn).flatten
178
+ end
179
+ module_function :split_header_value
180
+
181
+ ##
182
+ # Parses a Range header value +ranges_specifier+
183
+
184
+ def parse_range_header(ranges_specifier)
185
+ if /^bytes=(.*)/ =~ ranges_specifier
186
+ byte_range_set = split_header_value($1)
187
+ byte_range_set.collect{|range_spec|
188
+ case range_spec
189
+ when /^(\d+)-(\d+)/ then $1.to_i .. $2.to_i
190
+ when /^(\d+)-/ then $1.to_i .. -1
191
+ when /^-(\d+)/ then -($1.to_i) .. -1
192
+ else return nil
193
+ end
194
+ }
195
+ end
196
+ end
197
+ module_function :parse_range_header
198
+
199
+ ##
200
+ # Parses q values in +value+ as used in Accept headers.
201
+
202
+ def parse_qvalues(value)
203
+ tmp = []
204
+ if value
205
+ parts = value.split(/,\s*/)
206
+ parts.each {|part|
207
+ if m = %r{^([^\s,]+?)(?:;\s*q=(\d+(?:\.\d+)?))?$}.match(part)
208
+ val = m[1]
209
+ q = (m[2] or 1).to_f
210
+ tmp.push([val, q])
211
+ end
212
+ }
213
+ tmp = tmp.sort_by{|val, q| -q}
214
+ tmp.collect!{|val, q| val}
215
+ end
216
+ return tmp
217
+ end
218
+ module_function :parse_qvalues
219
+
220
+ ##
221
+ # Removes quotes and escapes from +str+
222
+
223
+ def dequote(str)
224
+ ret = (/\A"(.*)"\Z/ =~ str) ? $1 : str.dup
225
+ ret.gsub!(/\\(.)/, "\\1")
226
+ ret
227
+ end
228
+ module_function :dequote
229
+
230
+ ##
231
+ # Quotes and escapes quotes in +str+
232
+
233
+ def quote(str)
234
+ '"' << str.gsub(/[\\\"]/o, "\\\1") << '"'
235
+ end
236
+ module_function :quote
237
+
238
+ ##
239
+ # Stores multipart form data. FormData objects are created when
240
+ # WEBrick::HTTPUtils.parse_form_data is called.
241
+
242
+ class FormData < String
243
+ EmptyRawHeader = [].freeze # :nodoc:
244
+ EmptyHeader = {}.freeze # :nodoc:
245
+
246
+ ##
247
+ # The name of the form data part
248
+
249
+ attr_accessor :name
250
+
251
+ ##
252
+ # The filename of the form data part
253
+
254
+ attr_accessor :filename
255
+
256
+ attr_accessor :next_data # :nodoc:
257
+ protected :next_data
258
+
259
+ ##
260
+ # Creates a new FormData object.
261
+ #
262
+ # +args+ is an Array of form data entries. One FormData will be created
263
+ # for each entry.
264
+ #
265
+ # This is called by WEBrick::HTTPUtils.parse_form_data for you
266
+
267
+ def initialize(*args)
268
+ @name = @filename = @next_data = nil
269
+ if args.empty?
270
+ @raw_header = []
271
+ @header = nil
272
+ super("")
273
+ else
274
+ @raw_header = EmptyRawHeader
275
+ @header = EmptyHeader
276
+ super(args.shift)
277
+ unless args.empty?
278
+ @next_data = self.class.new(*args)
279
+ end
280
+ end
281
+ end
282
+
283
+ ##
284
+ # Retrieves the header at the first entry in +key+
285
+
286
+ def [](*key)
287
+ begin
288
+ @header[key[0].downcase].join(", ")
289
+ rescue StandardError, NameError
290
+ super
291
+ end
292
+ end
293
+
294
+ ##
295
+ # Adds +str+ to this FormData which may be the body, a header or a
296
+ # header entry.
297
+ #
298
+ # This is called by WEBrick::HTTPUtils.parse_form_data for you
299
+
300
+ def <<(str)
301
+ if @header
302
+ super
303
+ elsif str == CRLF
304
+ @header = HTTPUtils::parse_header(@raw_header.join)
305
+ if cd = self['content-disposition']
306
+ if /\s+name="(.*?)"/ =~ cd then @name = $1 end
307
+ if /\s+filename="(.*?)"/ =~ cd then @filename = $1 end
308
+ end
309
+ else
310
+ @raw_header << str
311
+ end
312
+ self
313
+ end
314
+
315
+ ##
316
+ # Adds +data+ at the end of the chain of entries
317
+ #
318
+ # This is called by WEBrick::HTTPUtils.parse_form_data for you.
319
+
320
+ def append_data(data)
321
+ tmp = self
322
+ while tmp
323
+ unless tmp.next_data
324
+ tmp.next_data = data
325
+ break
326
+ end
327
+ tmp = tmp.next_data
328
+ end
329
+ self
330
+ end
331
+
332
+ ##
333
+ # Yields each entry in this FormData
334
+
335
+ def each_data
336
+ tmp = self
337
+ while tmp
338
+ next_data = tmp.next_data
339
+ yield(tmp)
340
+ tmp = next_data
341
+ end
342
+ end
343
+
344
+ ##
345
+ # Returns all the FormData as an Array
346
+
347
+ def list
348
+ ret = []
349
+ each_data{|data|
350
+ ret << data.to_s
351
+ }
352
+ ret
353
+ end
354
+
355
+ ##
356
+ # A FormData will behave like an Array
357
+
358
+ alias :to_ary :list
359
+
360
+ ##
361
+ # This FormData's body
362
+
363
+ def to_s
364
+ String.new(self)
365
+ end
366
+ end
367
+
368
+ ##
369
+ # Parses the query component of a URI in +str+
370
+
371
+ def parse_query(str)
372
+ query = Hash.new
373
+ if str
374
+ str.split(/[&;]/).each{|x|
375
+ next if x.empty?
376
+ key, val = x.split(/=/,2)
377
+ key = unescape_form(key)
378
+ val = unescape_form(val.to_s)
379
+ val = FormData.new(val)
380
+ val.name = key
381
+ if query.has_key?(key)
382
+ query[key].append_data(val)
383
+ next
384
+ end
385
+ query[key] = val
386
+ }
387
+ end
388
+ query
389
+ end
390
+ module_function :parse_query
391
+
392
+ ##
393
+ # Parses form data in +io+ with the given +boundary+
394
+
395
+ def parse_form_data(io, boundary)
396
+ boundary_regexp = /\A--#{Regexp.quote(boundary)}(--)?#{CRLF}\z/
397
+ form_data = Hash.new
398
+ return form_data unless io
399
+ data = nil
400
+ io.each_line{|line|
401
+ if boundary_regexp =~ line
402
+ if data
403
+ data.chop!
404
+ key = data.name
405
+ if form_data.has_key?(key)
406
+ form_data[key].append_data(data)
407
+ else
408
+ form_data[key] = data
409
+ end
410
+ end
411
+ data = FormData.new
412
+ next
413
+ else
414
+ if data
415
+ data << line
416
+ end
417
+ end
418
+ }
419
+ return form_data
420
+ end
421
+ module_function :parse_form_data
422
+
423
+ #####
424
+
425
+ reserved = ';/?:@&=+$,'
426
+ num = '0123456789'
427
+ lowalpha = 'abcdefghijklmnopqrstuvwxyz'
428
+ upalpha = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
429
+ mark = '-_.!~*\'()'
430
+ unreserved = num + lowalpha + upalpha + mark
431
+ control = (0x0..0x1f).collect{|c| c.chr }.join + "\x7f"
432
+ space = " "
433
+ delims = '<>#%"'
434
+ unwise = '{}|\\^[]`'
435
+ nonascii = (0x80..0xff).collect{|c| c.chr }.join
436
+
437
+ module_function
438
+
439
+ # :stopdoc:
440
+
441
+ def _make_regex(str) /([#{Regexp.escape(str)}])/n end
442
+ def _make_regex!(str) /([^#{Regexp.escape(str)}])/n end
443
+ def _escape(str, regex)
444
+ str = str.b
445
+ str.gsub!(regex) {"%%%02X" % $1.ord}
446
+ # %-escaped string should contain US-ASCII only
447
+ str.force_encoding(Encoding::US_ASCII)
448
+ end
449
+ def _unescape(str, regex)
450
+ str = str.b
451
+ str.gsub!(regex) {$1.hex.chr}
452
+ # encoding of %-unescaped string is unknown
453
+ str
454
+ end
455
+
456
+ UNESCAPED = _make_regex(control+space+delims+unwise+nonascii)
457
+ UNESCAPED_FORM = _make_regex(reserved+control+delims+unwise+nonascii)
458
+ NONASCII = _make_regex(nonascii)
459
+ ESCAPED = /%([0-9a-fA-F]{2})/
460
+ UNESCAPED_PCHAR = _make_regex!(unreserved+":@&=+$,")
461
+
462
+ # :startdoc:
463
+
464
+ ##
465
+ # Escapes HTTP reserved and unwise characters in +str+
466
+
467
+ def escape(str)
468
+ _escape(str, UNESCAPED)
469
+ end
470
+
471
+ ##
472
+ # Unescapes HTTP reserved and unwise characters in +str+
473
+
474
+ def unescape(str)
475
+ _unescape(str, ESCAPED)
476
+ end
477
+
478
+ ##
479
+ # Escapes form reserved characters in +str+
480
+
481
+ def escape_form(str)
482
+ ret = _escape(str, UNESCAPED_FORM)
483
+ ret.gsub!(/ /, "+")
484
+ ret
485
+ end
486
+
487
+ ##
488
+ # Unescapes form reserved characters in +str+
489
+
490
+ def unescape_form(str)
491
+ _unescape(str.gsub(/\+/, " "), ESCAPED)
492
+ end
493
+
494
+ ##
495
+ # Escapes path +str+
496
+
497
+ def escape_path(str)
498
+ result = ""
499
+ str.scan(%r{/([^/]*)}).each{|i|
500
+ result << "/" << _escape(i[0], UNESCAPED_PCHAR)
501
+ }
502
+ return result
503
+ end
504
+
505
+ ##
506
+ # Escapes 8 bit characters in +str+
507
+
508
+ def escape8bit(str)
509
+ _escape(str, NONASCII)
510
+ end
511
+ end
512
+ end