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,688 @@
1
+ # frozen_string_literal: true
2
+ if RUBY_VERSION < '3.5'
3
+ require 'cgi/util'
4
+ else
5
+ require 'cgi/escape'
6
+ end
7
+
8
+ module YARD
9
+ module Templates::Helpers
10
+ # The helper module for HTML templates.
11
+ module HtmlHelper
12
+ include MarkupHelper
13
+ include HtmlSyntaxHighlightHelper
14
+
15
+ # @private
16
+ URLMATCH = /[^\w\s~!\*'\(\):;@&=\$,\[\]<>-]/
17
+
18
+ # @private
19
+ ASCIIDOC_ATTRIBUTES = {"env" => "yard", "env-yard" => ""}.freeze
20
+
21
+ # @group Escaping Template Data
22
+
23
+ # Escapes HTML entities
24
+ #
25
+ # @param [String] text the text to escape
26
+ # @return [String] the HTML with escaped entities
27
+ def h(text)
28
+ CGI.escapeHTML(text.to_s)
29
+ end
30
+
31
+ # Escapes a URL
32
+ #
33
+ # @param [String] text the URL
34
+ # @return [String] the escaped URL
35
+ def urlencode(text)
36
+ text = text.dup
37
+ enc = nil
38
+ if text.respond_to?(:force_encoding)
39
+ enc = text.encoding
40
+ text = text.force_encoding('binary')
41
+ end
42
+
43
+ text = text.gsub(/%[a-z0-9]{2}|#{URLMATCH}/i) do
44
+ $&.size > 1 ? $& : "%" + $&.ord.to_s(16).upcase
45
+ end.tr(' ', '+')
46
+
47
+ text = text.force_encoding(enc) if enc
48
+ text
49
+ end
50
+
51
+ module_function :urlencode
52
+
53
+ # @group Converting Markup to HTML
54
+
55
+ # Turns text into HTML using +markup+ style formatting.
56
+ #
57
+ # @param [String] text the text to format
58
+ # @param [Symbol] markup examples are +:markdown+, +:textile+, +:rdoc+.
59
+ # To add a custom markup type, see {MarkupHelper}
60
+ # @return [String] the HTML
61
+ def htmlify(text, markup = options.markup)
62
+ markup_meth = "html_markup_#{markup}"
63
+ return text unless respond_to?(markup_meth)
64
+ return "" unless text
65
+ return text unless markup
66
+ html = send(markup_meth, text).dup
67
+ if html.respond_to?(:encode)
68
+ html = html.force_encoding(text.encoding) # for libs that mess with encoding
69
+ html = html.encode(:invalid => :replace, :replace => '?')
70
+ end
71
+ html = resolve_links(html)
72
+ unless [:text, :none, :pre, :ruby].include?(markup)
73
+ html = parse_codeblocks(html)
74
+ end
75
+ html
76
+ end
77
+
78
+ # Converts Markdown to HTML
79
+ # @param [String] text input Markdown text
80
+ # @return [String] output HTML
81
+ # @since 0.6.0
82
+ def html_markup_markdown(text)
83
+ # TODO: other libraries might be more complex
84
+ provider = markup_class(:markdown)
85
+ case provider.to_s
86
+ when 'RDiscount'
87
+ provider.new(text, :autolink).to_html
88
+ when 'RedcarpetCompat'
89
+ provider.new(text, :autolink,
90
+ :fenced_code,
91
+ :gh_blockcode,
92
+ :lax_spacing,
93
+ :tables,
94
+ :with_toc_data,
95
+ :no_intraemphasis).to_html
96
+ when 'Commonmarker'
97
+ provider.to_html(text, :options => { }, :plugins => { :syntax_highlighter => nil })
98
+ when 'CommonMarker'
99
+ provider.render_html(text, %i[DEFAULT GITHUB_PRE_LANG], %i[autolink table])
100
+ else
101
+ if provider.respond_to?(:to_html)
102
+ provider.to_html(text)
103
+ else
104
+ provider.new(text).to_html
105
+ end
106
+ end
107
+ end
108
+
109
+ # Converts org-mode to HTML
110
+ # @param [String] text input org-mode text
111
+ # @return [String] output HTML
112
+ def html_markup_org(text)
113
+ markup_class(:org).new(text).to_html
114
+ end
115
+
116
+ # Converts Asciidoc to HTML
117
+ # @param [String] text input Asciidoc text
118
+ # @return [String] output HTML
119
+ def html_markup_asciidoc(text)
120
+ options = {:attributes => ASCIIDOC_ATTRIBUTES}
121
+ markup_class(:asciidoc).convert(text, options)
122
+ end
123
+
124
+ # Converts Textile to HTML
125
+ # @param [String] text the input Textile text
126
+ # @return [String] output HTML
127
+ # @since 0.6.0
128
+ def html_markup_textile(text)
129
+ doc = markup_class(:textile).new(text)
130
+ doc.hard_breaks = false if doc.respond_to?(:hard_breaks=)
131
+ doc.to_html
132
+ end
133
+
134
+ # Converts plaintext to strict Textile (hard breaks)
135
+ # @param [String] text the input textile data
136
+ # @return [String] the output HTML
137
+ # @since 0.6.0
138
+ def html_markup_textile_strict(text)
139
+ markup_class(:textile).new(text).to_html
140
+ end
141
+
142
+ # Converts RDoc formatting (SimpleMarkup) to HTML
143
+ # @param [String] text the input RDoc formatted text
144
+ # @return [String] output HTML
145
+ # @since 0.6.0
146
+ def html_markup_rdoc(text)
147
+ doc = markup_class(:rdoc).new(text)
148
+ doc.from_path = url_for(object) if doc.respond_to?(:from_path=)
149
+ doc.to_html
150
+ end
151
+
152
+ # Converts plaintext to pre-formatted HTML
153
+ # @param [String] text the input text
154
+ # @return [String] the output HTML
155
+ # @since 0.6.0
156
+ def html_markup_pre(text)
157
+ "<pre>" + h(text) + "</pre>"
158
+ end
159
+
160
+ # Converts plaintext to regular HTML
161
+ # @param [String] text the input text
162
+ # @return [String] the output HTML
163
+ # @since 0.6.0
164
+ def html_markup_text(text)
165
+ h(text).gsub(/\r?\n/, '<br>')
166
+ end
167
+
168
+ # @return [String] the same text with no markup
169
+ # @since 0.6.6
170
+ def html_markup_none(text)
171
+ h(text)
172
+ end
173
+
174
+ # Converts HTML to HTML
175
+ # @param [String] text input html
176
+ # @return [String] output HTML
177
+ # @since 0.6.0
178
+ def html_markup_html(text)
179
+ text
180
+ end
181
+
182
+ # Highlights Ruby source. Similar to {#html_syntax_highlight}, but
183
+ # this method is meant to be called from {#htmlify} when markup is
184
+ # set to "ruby".
185
+ #
186
+ # @param [String] source the Ruby source
187
+ # @return [String] the highlighted HTML
188
+ # @since 0.7.0
189
+ def html_markup_ruby(source)
190
+ '<pre class="code ruby">' + html_syntax_highlight(source, :ruby) + '</pre>'
191
+ end
192
+
193
+ # @return [String] HTMLified text as a single line (paragraphs removed)
194
+ def htmlify_line(*args)
195
+ "<div class='inline'>" + htmlify(*args) + "</div>"
196
+ end
197
+
198
+ # @group Syntax Highlighting Source Code
199
+
200
+ # Syntax highlights +source+ in language +type+.
201
+ #
202
+ # @note To support a specific language +type+, implement the method
203
+ # +html_syntax_highlight_TYPE+ in this class.
204
+ #
205
+ # @param [String] source the source code to highlight
206
+ # @param [Symbol, String] type the language type (:ruby, :plain, etc). Use
207
+ # :plain for no syntax highlighting.
208
+ # @return [String] the highlighted source
209
+ def html_syntax_highlight(source, type = nil)
210
+ return "" unless source
211
+ return h(source) unless options.highlight
212
+
213
+ new_type, source = parse_lang_for_codeblock(source)
214
+ type ||= new_type || :ruby
215
+ meth = "html_syntax_highlight_#{type}"
216
+ respond_to?(meth) ? send(meth, source) : h(source)
217
+ end
218
+
219
+ # @return [String] unhighlighted source
220
+ def html_syntax_highlight_plain(source)
221
+ h(source)
222
+ end
223
+
224
+ # @group Linking Objects and URLs
225
+
226
+ # Resolves any text in the form of +{Name}+ to the object specified by
227
+ # Name. Also supports link titles in the form +{Name title}+.
228
+ #
229
+ # @example Linking to an instance method
230
+ # resolve_links("{MyClass#method}") # => "<a href='...'>MyClass#method</a>"
231
+ # @example Linking to a class with a title
232
+ # resolve_links("{A::B::C the C class}") # => "<a href='...'>the c class</a>"
233
+ # @param [String] text the text to resolve links in
234
+ # @return [String] HTML with linkified references
235
+ def resolve_links(text)
236
+ code_tags = 0
237
+ text.gsub(%r{<(/)?(pre|code|tt)|(\\|!)?\{(?!\})(\S+?)(?:\s([^\}]*?\S))?\}(?=\W|.+</|$)}m) do |str|
238
+ closed = $1
239
+ tag = $2
240
+ escape = $3
241
+ name = $4
242
+ title = $5
243
+ match = $&
244
+ if tag
245
+ code_tags += (closed ? -1 : 1)
246
+ next str
247
+ end
248
+ next str unless code_tags == 0
249
+
250
+ next(match[1..-1]) if escape
251
+
252
+ next(match) if name[0, 1] == '|'
253
+
254
+ if name == '<a' && title =~ %r{href=["'](.+?)["'].*>.*</a>\s*(.*)\Z}
255
+ name = $1
256
+ title = $2
257
+ title = nil if title.empty?
258
+ end
259
+
260
+ name = CGI.unescapeHTML(name)
261
+
262
+ if object.is_a?(String)
263
+ object
264
+ else
265
+ link = linkify(name, title)
266
+ if (link == name || link == title) && (name + ' ' + link !~ /\A<a\s.*>/)
267
+ match = /(.+)?(\{#{Regexp.quote name}(?:\s.*?)?\})(.+)?/.match(text)
268
+ file = (defined?(@file) && @file ? @file.filename : object.file) || '(unknown)'
269
+ line = (defined?(@file) && @file ? 1 : (object.docstring.line_range ? object.docstring.line_range.first : 1)) + (match ? $`.count("\n") : 0)
270
+ log.warn "In file `#{file}':#{line}: Cannot resolve link to #{name} from text" + (match ? ":" : ".") +
271
+ "\n\t" + (match[1] ? '...' : '') + match[2].delete("\n") + (match[3] ? '...' : '') if match
272
+ end
273
+
274
+ link
275
+ end
276
+ end
277
+ end
278
+
279
+ # (see BaseHelper#link_file)
280
+ def link_file(filename, title = nil, anchor = nil)
281
+ if CodeObjects::ExtraFileObject === filename
282
+ file = filename
283
+ else
284
+ contents = File.file?(filename) ? nil : ''
285
+ file = CodeObjects::ExtraFileObject.new(filename, contents)
286
+ end
287
+ return title || file.title unless serializer
288
+ link_url(url_for_file(file, anchor), title || file.title)
289
+ end
290
+
291
+ # (see BaseHelper#link_include_file)
292
+ def link_include_file(file)
293
+ unless file.is_a?(CodeObjects::ExtraFileObject)
294
+ file = CodeObjects::ExtraFileObject.new(file)
295
+ end
296
+ file.attributes[:markup] ||= markup_for_file('', file.filename)
297
+ insert_include(file.contents, file.attributes[:markup] || options.markup)
298
+ end
299
+
300
+ # (see BaseHelper#link_include_object)
301
+ def link_include_object(obj)
302
+ insert_include(obj.docstring)
303
+ end
304
+
305
+ # Inserts an include link while respecting inlining
306
+ def insert_include(text, markup = options.markup)
307
+ htmlify(text, markup).gsub(%r{\A\s*<p>|</p>\s*\Z}, '')
308
+ end
309
+
310
+ # (see BaseHelper#link_object)
311
+ def link_object(obj, title = nil, anchor = nil, relative = true)
312
+ return title if obj.nil?
313
+ obj = Registry.resolve(object, obj, true, true) if obj.is_a?(String)
314
+ if title
315
+ title = title.to_s
316
+ elsif object.is_a?(CodeObjects::Base)
317
+ # Check if we're linking to a class method in the current
318
+ # object. If we are, create a title in the format of
319
+ # "CurrentClass.method_name"
320
+ if obj.is_a?(CodeObjects::MethodObject) && obj.scope == :class && obj.parent == object
321
+ title = h([object.name, obj.sep, obj.name].join)
322
+ elsif obj.title != obj.path
323
+ title = h(obj.title)
324
+ else
325
+ title = h(object.relative_path(obj))
326
+ end
327
+ else
328
+ title = h(obj.title)
329
+ end
330
+ return title unless serializer
331
+ return title if obj.is_a?(CodeObjects::Proxy)
332
+
333
+ link = url_for(obj, anchor, relative)
334
+ link = link ? link_url(link, title, :title => h("#{obj.title} (#{obj.type})")) : title
335
+ "<span class='object_link'>" + link + "</span>"
336
+ rescue Parser::UndocumentableError
337
+ log.warn "The namespace of link #{obj.inspect} is a constant or invalid."
338
+ title || obj.to_s
339
+ end
340
+
341
+ # (see BaseHelper#link_url)
342
+ def link_url(url, title = nil, params = {})
343
+ title ||= url
344
+ title = title.gsub(/[\r\n]/, ' ')
345
+ params = SymbolHash.new(false).update(
346
+ :href => url,
347
+ :title => h(title)
348
+ ).update(params)
349
+ params[:target] ||= '_parent' if url =~ %r{^(\w+)://}
350
+ "<a #{tag_attrs(params)}>#{title}</a>".gsub(/[\r\n]/, ' ')
351
+ end
352
+
353
+ # @group URL Helpers
354
+
355
+ # @param [CodeObjects::Base] object the object to get an anchor for
356
+ # @return [String] the anchor for a specific object
357
+ def anchor_for(object)
358
+ case object
359
+ when CodeObjects::MethodObject
360
+ "#{object.name}-#{object.scope}_#{object.type}"
361
+ when CodeObjects::ClassVariableObject
362
+ "#{object.name.to_s.gsub('@@', '')}-#{object.type}"
363
+ when CodeObjects::Base
364
+ "#{object.name}-#{object.type}"
365
+ when CodeObjects::Proxy
366
+ object.path
367
+ else
368
+ object.to_s
369
+ end
370
+ end
371
+
372
+ # Returns the URL for an object.
373
+ #
374
+ # @param [String, CodeObjects::Base] obj the object (or object path) to link to
375
+ # @param [String] anchor the anchor to link to
376
+ # @param [Boolean] relative use a relative or absolute link
377
+ # @return [String] the URL location of the object
378
+ def url_for(obj, anchor = nil, relative = true)
379
+ link = nil
380
+ return link unless serializer
381
+ return link if obj.is_a?(CodeObjects::Base) && run_verifier([obj]).empty?
382
+
383
+ if obj.is_a?(CodeObjects::Base) && !obj.is_a?(CodeObjects::NamespaceObject)
384
+ # If the obj is not a namespace obj make it the anchor.
385
+ anchor = obj
386
+ obj = obj.namespace
387
+ end
388
+
389
+ objpath = serializer.serialized_path(obj)
390
+ return link unless objpath
391
+
392
+ relative = false if object == Registry.root
393
+ if relative
394
+ fromobj = object
395
+ if object.is_a?(CodeObjects::Base) &&
396
+ !object.is_a?(CodeObjects::NamespaceObject)
397
+ fromobj = owner
398
+ end
399
+
400
+ from = serializer.serialized_path(fromobj)
401
+ link = File.relative_path(from, objpath)
402
+ else
403
+ link = objpath
404
+ end
405
+
406
+ link + (anchor ? '#' + urlencode(anchor_for(anchor)) : '')
407
+ end
408
+
409
+ alias mtime_url url_for
410
+ def mtime(_file) nil end
411
+
412
+ # Returns the URL for a specific file
413
+ #
414
+ # @param [String, CodeObjects::ExtraFileObject] filename the filename to link to
415
+ # @param [String] anchor optional anchor
416
+ # @return [String] the URL pointing to the file
417
+ def url_for_file(filename, anchor = nil)
418
+ return '' unless serializer
419
+ fromobj = object
420
+ if CodeObjects::Base === fromobj && !fromobj.is_a?(CodeObjects::NamespaceObject)
421
+ fromobj = fromobj.namespace
422
+ end
423
+ from = serializer.serialized_path(fromobj)
424
+ path = filename == options.readme ?
425
+ 'index.html' : serializer.serialized_path(filename)
426
+ link = File.relative_path(from, path)
427
+ link += (anchor ? '#' + urlencode(anchor) : '')
428
+ link
429
+ end
430
+
431
+ # Returns the URL for a list type
432
+ #
433
+ # @param [String, Symbol] type the list type to generate a URL for
434
+ # @return [String] the URL pointing to the list
435
+ # @since 0.8.0
436
+ def url_for_list(type)
437
+ url_for_file("#{type}_list.html")
438
+ end
439
+
440
+ # Returns the URL for the frameset page
441
+ #
442
+ # @return [String] the URL pointing to the frames page
443
+ # @since 0.8.0
444
+ def url_for_frameset
445
+ url_for_file("frames.html")
446
+ end
447
+
448
+ # Returns the URL for the main page (README or alphabetic index)
449
+ #
450
+ # @return [String] the URL pointing to the first main page the
451
+ # user should see.
452
+ def url_for_main
453
+ url_for_file("index.html")
454
+ end
455
+
456
+ # Returns the URL for the alphabetic index page
457
+ #
458
+ # @return [String] the URL pointing to the first main page the
459
+ # user should see.
460
+ def url_for_index
461
+ url_for_file("_index.html")
462
+ end
463
+
464
+ # @group Formatting Objects and Attributes
465
+
466
+ # Formats a list of objects and links them
467
+ # @return [String] a formatted list of objects
468
+ def format_object_name_list(objects)
469
+ objects.sort_by {|o| o.name.to_s.downcase }.map do |o|
470
+ "<span class='name'>" + linkify(o, o.name) + "</span>"
471
+ end.join(", ")
472
+ end
473
+
474
+ # Formats a list of types from a tag.
475
+ #
476
+ # @param [Array<String>, FalseClass] typelist
477
+ # the list of types to be formatted.
478
+ #
479
+ # @param [Boolean] brackets omits the surrounding
480
+ # brackets if +brackets+ is set to +false+.
481
+ #
482
+ # @return [String] the list of types formatted
483
+ # as [Type1, Type2, ...] with the types linked
484
+ # to their respective descriptions.
485
+ #
486
+ def format_types(typelist, brackets = true)
487
+ return unless typelist.is_a?(Array)
488
+ list = typelist.map do |type|
489
+ type = type.gsub(/([<>])/) { h($1) }
490
+ type = type.gsub(/([\w:]+)/) { $1 == "lt" || $1 == "gt" ? $1 : linkify($1, $1) }
491
+ "<tt>" + type + "</tt>"
492
+ end
493
+ list.empty? ? "" : (brackets ? "(#{list.join(", ")})" : list.join(", "))
494
+ end
495
+
496
+ # Get the return types for a method signature.
497
+ #
498
+ # @param [CodeObjects::MethodObject] meth the method object
499
+ # @param [Boolean] link whether to link the types
500
+ # @return [String] the signature types
501
+ # @since 0.5.3
502
+ def signature_types(meth, link = true)
503
+ meth = convert_method_to_overload(meth)
504
+ if meth.respond_to?(:object) && !meth.has_tag?(:return)
505
+ meth = meth.object
506
+ end
507
+
508
+ type = options.default_return || ""
509
+ if meth.tag(:return) && meth.tag(:return).types
510
+ types = meth.tags(:return).map {|t| t.types ? t.types : [] }.flatten.uniq
511
+ first = link ? h(types.first) : format_types([types.first], false)
512
+ if types.size == 2 && types.last == 'nil'
513
+ type = first + '<sup>?</sup>'
514
+ elsif types.size == 2 && types.last =~ /^(Array)?<#{Regexp.quote types.first}>$/
515
+ type = first + '<sup>+</sup>'
516
+ elsif types.size > 2
517
+ type = [first, '...'].join(', ')
518
+ elsif types == ['void'] && options.hide_void_return
519
+ type = ""
520
+ else
521
+ type = link ? h(types.join(", ")) : format_types(types, false)
522
+ end
523
+ elsif !type.empty?
524
+ type = link ? h(type) : format_types([type], false)
525
+ end
526
+ type = "#{type} " unless type.empty?
527
+ type
528
+ end
529
+
530
+ # Formats the signature of method +meth+.
531
+ #
532
+ # @param [CodeObjects::MethodObject] meth the method object to list
533
+ # the signature of
534
+ # @param [Boolean] link whether to link the method signature to the details view
535
+ # @param [Boolean] show_extras whether to show extra meta-data (visibility, attribute info)
536
+ # @param [Boolean] full_attr_name whether to show the full attribute name
537
+ # ("name=" instead of "name")
538
+ # @return [String] the formatted method signature
539
+ def signature(meth, link = true, show_extras = true, full_attr_name = true)
540
+ meth = convert_method_to_overload(meth)
541
+
542
+ type = signature_types(meth, link)
543
+ type = "&#x21d2; #{type}" if type && !type.empty?
544
+ scope = meth.scope == :class ? "." : "#"
545
+ name = full_attr_name ? meth.name : meth.name.to_s.gsub(/^(\w+)=$/, '\1')
546
+ blk = format_block(meth)
547
+ args = !full_attr_name && meth.writer? ? "" : format_args(meth)
548
+ extras = []
549
+ extras_text = ''
550
+ if show_extras
551
+ rw = meth.attr_info
552
+ if rw
553
+ attname = [rw[:read] ? 'read' : nil, rw[:write] ? 'write' : nil].compact
554
+ attname = attname.size == 1 ? attname.join('') + 'only' : nil
555
+ extras << attname if attname
556
+ end
557
+ extras << meth.visibility if meth.visibility != :public
558
+ extras_text = ' <span class="extras">(' + extras.join(", ") + ')</span>' unless extras.empty?
559
+ end
560
+ title = "%s<strong>%s</strong>%s %s %s" % [scope, h(name), args, blk, type]
561
+ if link
562
+ if meth.is_a?(YARD::CodeObjects::MethodObject)
563
+ link_title = "#{h meth.name(true)} (#{meth.scope} #{meth.type})"
564
+ else
565
+ link_title = "#{h name} (#{meth.type})"
566
+ end
567
+ obj = meth.respond_to?(:object) ? meth.object : meth
568
+ url = url_for(object, obj)
569
+ link_url(url, title, :title => link_title) + extras_text
570
+ else
571
+ title + extras_text
572
+ end
573
+ end
574
+
575
+ # @group Getting the Character Encoding
576
+
577
+ # Returns the current character set. The default value can be overridden
578
+ # by setting the +LANG+ environment variable or by overriding this
579
+ # method. In Ruby 1.9 you can also modify this value by setting
580
+ # +Encoding.default_external+.
581
+ #
582
+ # @return [String] the current character set
583
+ # @since 0.5.4
584
+ def charset
585
+ has_encoding = defined?(::Encoding)
586
+ if defined?(@file) && @file && has_encoding
587
+ lang = @file.contents.encoding.to_s
588
+ else
589
+ return 'utf-8' unless has_encoding || ENV['LANG']
590
+ lang =
591
+ if has_encoding
592
+ ::Encoding.default_external.name.downcase
593
+ else
594
+ ENV['LANG'].downcase.split('.').last
595
+ end
596
+ end
597
+
598
+ case lang
599
+ when "ascii-8bit", "us-ascii", "ascii-7bit"; 'iso-8859-1'
600
+ when "utf8"; 'utf-8'
601
+ else; lang
602
+ end
603
+ end
604
+
605
+ # @endgroup
606
+
607
+ private
608
+
609
+ # Converts a set of hash options into HTML attributes for a tag
610
+ #
611
+ # @param [Hash{String => String}] opts the tag options
612
+ # @return [String] the tag attributes of an HTML tag
613
+ def tag_attrs(opts = {})
614
+ opts.sort_by {|k, _v| k.to_s }.map {|k, v| "#{k}=#{v.to_s.inspect}" if v }.join(" ")
615
+ end
616
+
617
+ # Converts a {CodeObjects::MethodObject} into an overload object
618
+ # @since 0.5.3
619
+ def convert_method_to_overload(meth)
620
+ # use first overload tag if it has a return type and method itself does not
621
+ if !meth.tag(:return) && meth.tags(:overload).size == 1 && meth.tag(:overload).tag(:return)
622
+ return meth.tag(:overload)
623
+ end
624
+ meth
625
+ end
626
+
627
+ # Parses !!!lang out of codeblock, returning the codeblock language
628
+ # followed by the source code.
629
+ #
630
+ # @param [String] source the source code whose language to determine
631
+ # @return [Array(String, String)] the language, if any, and the
632
+ # remaining source
633
+ # @since 0.7.5
634
+ def parse_lang_for_codeblock(source)
635
+ type = nil
636
+ if source =~ /\A(?:[ \t]*\r?\n)?[ \t]*!!!([\w.+-]+)[ \t]*\r?\n/
637
+ type = $1
638
+ source = $'
639
+ end
640
+
641
+ [type, source]
642
+ end
643
+
644
+ # Parses code blocks out of html and performs syntax highlighting
645
+ # on code inside of the blocks.
646
+ #
647
+ # @param [String] html the html to search for code in
648
+ # @return [String] highlighted html
649
+ # @see #html_syntax_highlight
650
+ def parse_codeblocks(html)
651
+ html.gsub(%r{<pre((?:\s+\w+="(?:.+?)")*)\s*>(?:\s*<code((?:\s+\w+="(?:.+?)")*)\s*>)?(.+?)(?:</code>\s*)?</pre>}m) do
652
+ string = $3
653
+
654
+ # handle !!!LANG prefix to send to html_syntax_highlight_LANG
655
+ language, = parse_lang_for_codeblock(string)
656
+ language ||= detect_lang_in_codeblock_attributes($1, $2)
657
+ language ||= object.source_type
658
+
659
+ # Skip re-highlighting if the block is already highlighted (e.g. from a recursive
660
+ # htmlify call via {include:} or {yard:include_tags}). Passing pre-highlighted HTML
661
+ # through CGI.unescapeHTML would corrupt deliberately-escaped entities inside spans.
662
+ # Note: this heuristic suppresses highlighting for code blocks in :html markup that
663
+ # contain a literal <span> tag in the source being documented (an uncommon edge case).
664
+ if options.highlight && string !~ HtmlSyntaxHighlightHelper::ALREADY_HIGHLIGHTED_RE
665
+ string = html_syntax_highlight(CGI.unescapeHTML(string), language)
666
+ end
667
+ classes = ['code', language].compact.join(' ')
668
+ %(<pre class="#{classes}"><code class="#{language}">#{string}</code></pre>)
669
+ end
670
+ end
671
+
672
+ # Parses code block's HTML attributes in order to detect the programming
673
+ # language of what's enclosed in that code block.
674
+ #
675
+ # @param [String, nil] pre_html_attrs HTML attribute list of +pre+ element
676
+ # @param [String, nil] code_html_attrs HTML attribute list of +code+
677
+ # element
678
+ # @return [String, nil] detected programming language
679
+ def detect_lang_in_codeblock_attributes(pre_html_attrs, code_html_attrs)
680
+ detected = nil
681
+ detected ||= (/\bdata-lang="(.+?)"/ =~ code_html_attrs && $1)
682
+ detected ||= (/\blang="(.+?)"/ =~ pre_html_attrs && $1)
683
+ detected ||= (/\bclass="(.+?)"/ =~ code_html_attrs && $1)
684
+ detected
685
+ end
686
+ end
687
+ end
688
+ end