yard 0.9.18 → 0.9.19

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of yard might be problematic. Click here for more details.

Files changed (567) hide show
  1. checksums.yaml +4 -4
  2. data/.yardopts +26 -26
  3. data/CHANGELOG.md +742 -728
  4. data/LEGAL +66 -66
  5. data/LICENSE +22 -22
  6. data/README.md +328 -328
  7. data/Rakefile +42 -53
  8. data/benchmarks/builtins_vs_eval.rb +24 -24
  9. data/benchmarks/concat_vs_join.rb +13 -13
  10. data/benchmarks/erb_vs_erubis.rb +54 -54
  11. data/benchmarks/format_args.rb +47 -47
  12. data/benchmarks/generation.rb +38 -38
  13. data/benchmarks/marshal_vs_dbm.rb +64 -64
  14. data/benchmarks/parsing.rb +46 -46
  15. data/benchmarks/pathname_vs_string.rb +50 -50
  16. data/benchmarks/rdoc_vs_yardoc.rb +11 -11
  17. data/benchmarks/registry_store_types.rb +49 -49
  18. data/benchmarks/ri_vs_yri.rb +19 -19
  19. data/benchmarks/ripper_parser.rb +13 -13
  20. data/benchmarks/splat_vs_flatten.rb +13 -13
  21. data/benchmarks/template_erb.rb +23 -23
  22. data/benchmarks/template_format.rb +7 -7
  23. data/benchmarks/template_profile.rb +18 -18
  24. data/benchmarks/yri_cache.rb +20 -20
  25. data/bin/yard +13 -13
  26. data/bin/yardoc +13 -13
  27. data/bin/yri +13 -13
  28. data/docs/CodeObjects.md +115 -115
  29. data/docs/GettingStarted.md +679 -679
  30. data/docs/Handlers.md +152 -152
  31. data/docs/Overview.md +61 -61
  32. data/docs/Parser.md +191 -191
  33. data/docs/Tags.md +283 -283
  34. data/docs/TagsArch.md +123 -123
  35. data/docs/Templates.md +496 -496
  36. data/docs/WhatsNew.md +1245 -1245
  37. data/docs/templates/default/fulldoc/html/full_list_tag.erb +8 -8
  38. data/docs/templates/default/fulldoc/html/setup.rb +6 -6
  39. data/docs/templates/default/layout/html/setup.rb +9 -9
  40. data/docs/templates/default/layout/html/tag_list.erb +11 -11
  41. data/docs/templates/default/yard_tags/html/list.erb +18 -18
  42. data/docs/templates/default/yard_tags/html/setup.rb +26 -26
  43. data/docs/templates/plugin.rb +70 -70
  44. data/lib/rubygems_plugin.rb +9 -9
  45. data/lib/yard.rb +69 -69
  46. data/lib/yard/autoload.rb +308 -303
  47. data/lib/yard/cli/command.rb +85 -85
  48. data/lib/yard/cli/command_parser.rb +93 -93
  49. data/lib/yard/cli/config.rb +198 -198
  50. data/lib/yard/cli/diff.rb +270 -270
  51. data/lib/yard/cli/display.rb +69 -69
  52. data/lib/yard/cli/gems.rb +84 -84
  53. data/lib/yard/cli/graph.rb +125 -125
  54. data/lib/yard/cli/help.rb +20 -20
  55. data/lib/yard/cli/i18n.rb +70 -70
  56. data/lib/yard/cli/list.rb +23 -23
  57. data/lib/yard/cli/markup_types.rb +32 -32
  58. data/lib/yard/cli/server.rb +257 -257
  59. data/lib/yard/cli/stats.rb +231 -231
  60. data/lib/yard/cli/yardoc.rb +789 -788
  61. data/lib/yard/cli/yardopts_command.rb +110 -110
  62. data/lib/yard/cli/yri.rb +215 -215
  63. data/lib/yard/code_objects/base.rb +615 -615
  64. data/lib/yard/code_objects/class_object.rb +146 -146
  65. data/lib/yard/code_objects/class_variable_object.rb +11 -11
  66. data/lib/yard/code_objects/constant_object.rb +16 -16
  67. data/lib/yard/code_objects/extended_method_object.rb +24 -24
  68. data/lib/yard/code_objects/extra_file_object.rb +134 -131
  69. data/lib/yard/code_objects/macro_object.rb +172 -172
  70. data/lib/yard/code_objects/method_object.rb +196 -196
  71. data/lib/yard/code_objects/module_object.rb +21 -21
  72. data/lib/yard/code_objects/namespace_mapper.rb +114 -114
  73. data/lib/yard/code_objects/namespace_object.rb +200 -200
  74. data/lib/yard/code_objects/proxy.rb +240 -240
  75. data/lib/yard/code_objects/root_object.rb +19 -19
  76. data/lib/yard/config.rb +270 -270
  77. data/lib/yard/core_ext/array.rb +16 -16
  78. data/lib/yard/core_ext/file.rb +69 -69
  79. data/lib/yard/core_ext/hash.rb +16 -16
  80. data/lib/yard/core_ext/insertion.rb +63 -63
  81. data/lib/yard/core_ext/module.rb +11 -20
  82. data/lib/yard/core_ext/string.rb +68 -68
  83. data/lib/yard/core_ext/symbol_hash.rb +75 -75
  84. data/lib/yard/docstring.rb +386 -386
  85. data/lib/yard/docstring_parser.rb +345 -345
  86. data/lib/yard/gem_index.rb +29 -29
  87. data/lib/yard/globals.rb +22 -22
  88. data/lib/yard/handlers/base.rb +595 -595
  89. data/lib/yard/handlers/c/alias_handler.rb +16 -16
  90. data/lib/yard/handlers/c/attribute_handler.rb +13 -13
  91. data/lib/yard/handlers/c/base.rb +129 -129
  92. data/lib/yard/handlers/c/class_handler.rb +27 -27
  93. data/lib/yard/handlers/c/constant_handler.rb +13 -13
  94. data/lib/yard/handlers/c/handler_methods.rb +212 -211
  95. data/lib/yard/handlers/c/init_handler.rb +20 -20
  96. data/lib/yard/handlers/c/method_handler.rb +45 -45
  97. data/lib/yard/handlers/c/mixin_handler.rb +21 -21
  98. data/lib/yard/handlers/c/module_handler.rb +17 -17
  99. data/lib/yard/handlers/c/override_comment_handler.rb +31 -31
  100. data/lib/yard/handlers/c/path_handler.rb +11 -11
  101. data/lib/yard/handlers/c/struct_handler.rb +13 -13
  102. data/lib/yard/handlers/c/symbol_handler.rb +8 -8
  103. data/lib/yard/handlers/common/method_handler.rb +19 -0
  104. data/lib/yard/handlers/processor.rb +200 -200
  105. data/lib/yard/handlers/ruby/alias_handler.rb +44 -44
  106. data/lib/yard/handlers/ruby/attribute_handler.rb +87 -87
  107. data/lib/yard/handlers/ruby/base.rb +165 -165
  108. data/lib/yard/handlers/ruby/class_condition_handler.rb +92 -92
  109. data/lib/yard/handlers/ruby/class_handler.rb +119 -119
  110. data/lib/yard/handlers/ruby/class_variable_handler.rb +17 -17
  111. data/lib/yard/handlers/ruby/comment_handler.rb +10 -10
  112. data/lib/yard/handlers/ruby/constant_handler.rb +59 -59
  113. data/lib/yard/handlers/ruby/decorator_handler_methods.rb +123 -123
  114. data/lib/yard/handlers/ruby/dsl_handler.rb +15 -15
  115. data/lib/yard/handlers/ruby/dsl_handler_methods.rb +96 -96
  116. data/lib/yard/handlers/ruby/exception_handler.rb +27 -27
  117. data/lib/yard/handlers/ruby/extend_handler.rb +22 -22
  118. data/lib/yard/handlers/ruby/legacy/alias_handler.rb +37 -37
  119. data/lib/yard/handlers/ruby/legacy/attribute_handler.rb +65 -65
  120. data/lib/yard/handlers/ruby/legacy/base.rb +245 -245
  121. data/lib/yard/handlers/ruby/legacy/class_condition_handler.rb +83 -83
  122. data/lib/yard/handlers/ruby/legacy/class_handler.rb +113 -113
  123. data/lib/yard/handlers/ruby/legacy/class_variable_handler.rb +15 -15
  124. data/lib/yard/handlers/ruby/legacy/comment_handler.rb +10 -10
  125. data/lib/yard/handlers/ruby/legacy/constant_handler.rb +29 -29
  126. data/lib/yard/handlers/ruby/legacy/dsl_handler.rb +17 -17
  127. data/lib/yard/handlers/ruby/legacy/exception_handler.rb +13 -13
  128. data/lib/yard/handlers/ruby/legacy/extend_handler.rb +21 -21
  129. data/lib/yard/handlers/ruby/legacy/method_handler.rb +90 -90
  130. data/lib/yard/handlers/ruby/legacy/mixin_handler.rb +39 -39
  131. data/lib/yard/handlers/ruby/legacy/module_function_handler.rb +19 -19
  132. data/lib/yard/handlers/ruby/legacy/module_handler.rb +12 -12
  133. data/lib/yard/handlers/ruby/legacy/private_class_method_handler.rb +22 -22
  134. data/lib/yard/handlers/ruby/legacy/private_constant_handler.rb +22 -22
  135. data/lib/yard/handlers/ruby/legacy/visibility_handler.rb +17 -17
  136. data/lib/yard/handlers/ruby/legacy/yield_handler.rb +29 -29
  137. data/lib/yard/handlers/ruby/method_condition_handler.rb +9 -9
  138. data/lib/yard/handlers/ruby/method_handler.rb +114 -118
  139. data/lib/yard/handlers/ruby/mixin_handler.rb +37 -37
  140. data/lib/yard/handlers/ruby/module_function_handler.rb +27 -27
  141. data/lib/yard/handlers/ruby/module_handler.rb +12 -12
  142. data/lib/yard/handlers/ruby/private_class_method_handler.rb +14 -14
  143. data/lib/yard/handlers/ruby/private_constant_handler.rb +43 -43
  144. data/lib/yard/handlers/ruby/public_class_method_handler.rb +14 -14
  145. data/lib/yard/handlers/ruby/struct_handler_methods.rb +143 -143
  146. data/lib/yard/handlers/ruby/visibility_handler.rb +22 -22
  147. data/lib/yard/handlers/ruby/yield_handler.rb +31 -31
  148. data/lib/yard/i18n/locale.rb +67 -67
  149. data/lib/yard/i18n/message.rb +57 -57
  150. data/lib/yard/i18n/messages.rb +56 -56
  151. data/lib/yard/i18n/po_parser.rb +61 -61
  152. data/lib/yard/i18n/pot_generator.rb +290 -290
  153. data/lib/yard/i18n/text.rb +173 -173
  154. data/lib/yard/logging.rb +205 -205
  155. data/lib/yard/options.rb +217 -217
  156. data/lib/yard/parser/base.rb +57 -57
  157. data/lib/yard/parser/c/c_parser.rb +235 -235
  158. data/lib/yard/parser/c/comment_parser.rb +134 -134
  159. data/lib/yard/parser/c/statement.rb +64 -64
  160. data/lib/yard/parser/ruby/ast_node.rb +540 -540
  161. data/lib/yard/parser/ruby/legacy/ruby_lex.rb +1354 -1354
  162. data/lib/yard/parser/ruby/legacy/ruby_parser.rb +32 -32
  163. data/lib/yard/parser/ruby/legacy/statement.rb +66 -66
  164. data/lib/yard/parser/ruby/legacy/statement_list.rb +394 -394
  165. data/lib/yard/parser/ruby/legacy/token_list.rb +74 -74
  166. data/lib/yard/parser/ruby/ruby_parser.rb +687 -687
  167. data/lib/yard/parser/ruby/token_resolver.rb +156 -156
  168. data/lib/yard/parser/source_parser.rb +526 -526
  169. data/lib/yard/rake/yardoc_task.rb +81 -81
  170. data/lib/yard/registry.rb +439 -439
  171. data/lib/yard/registry_resolver.rb +189 -189
  172. data/lib/yard/registry_store.rb +337 -337
  173. data/lib/yard/rubygems/backports.rb +10 -10
  174. data/lib/yard/rubygems/backports/LICENSE.txt +57 -57
  175. data/lib/yard/rubygems/backports/MIT.txt +20 -20
  176. data/lib/yard/rubygems/backports/gem.rb +10 -10
  177. data/lib/yard/rubygems/backports/source_index.rb +365 -365
  178. data/lib/yard/rubygems/doc_manager.rb +90 -90
  179. data/lib/yard/rubygems/hook.rb +197 -197
  180. data/lib/yard/rubygems/specification.rb +50 -50
  181. data/lib/yard/serializers/base.rb +83 -83
  182. data/lib/yard/serializers/file_system_serializer.rb +123 -123
  183. data/lib/yard/serializers/process_serializer.rb +24 -24
  184. data/lib/yard/serializers/stdout_serializer.rb +34 -34
  185. data/lib/yard/serializers/yardoc_serializer.rb +152 -152
  186. data/lib/yard/server.rb +13 -13
  187. data/lib/yard/server/adapter.rb +100 -100
  188. data/lib/yard/server/commands/base.rb +209 -209
  189. data/lib/yard/server/commands/display_file_command.rb +29 -29
  190. data/lib/yard/server/commands/display_object_command.rb +65 -65
  191. data/lib/yard/server/commands/frames_command.rb +16 -16
  192. data/lib/yard/server/commands/library_command.rb +187 -187
  193. data/lib/yard/server/commands/library_index_command.rb +28 -28
  194. data/lib/yard/server/commands/list_command.rb +25 -25
  195. data/lib/yard/server/commands/root_request_command.rb +15 -15
  196. data/lib/yard/server/commands/search_command.rb +79 -79
  197. data/lib/yard/server/commands/static_file_command.rb +23 -23
  198. data/lib/yard/server/commands/static_file_helpers.rb +62 -62
  199. data/lib/yard/server/doc_server_helper.rb +91 -91
  200. data/lib/yard/server/doc_server_serializer.rb +39 -39
  201. data/lib/yard/server/library_version.rb +277 -277
  202. data/lib/yard/server/rack_adapter.rb +89 -89
  203. data/lib/yard/server/router.rb +187 -187
  204. data/lib/yard/server/static_caching.rb +46 -46
  205. data/lib/yard/server/templates/default/fulldoc/html/css/custom.css +127 -127
  206. data/lib/yard/server/templates/default/fulldoc/html/js/autocomplete.js +11 -11
  207. data/lib/yard/server/templates/default/layout/html/breadcrumb.erb +37 -37
  208. data/lib/yard/server/templates/default/layout/html/script_setup.erb +7 -7
  209. data/lib/yard/server/templates/default/layout/html/setup.rb +8 -8
  210. data/lib/yard/server/templates/default/method_details/html/permalink.erb +4 -4
  211. data/lib/yard/server/templates/default/method_details/html/setup.rb +5 -5
  212. data/lib/yard/server/templates/doc_server/library_list/html/headers.erb +8 -8
  213. data/lib/yard/server/templates/doc_server/library_list/html/library_list.erb +14 -14
  214. data/lib/yard/server/templates/doc_server/library_list/html/listing.erb +13 -13
  215. data/lib/yard/server/templates/doc_server/library_list/html/setup.rb +6 -6
  216. data/lib/yard/server/templates/doc_server/library_list/html/title.erb +2 -2
  217. data/lib/yard/server/templates/doc_server/processing/html/processing.erb +52 -52
  218. data/lib/yard/server/templates/doc_server/processing/html/setup.rb +4 -4
  219. data/lib/yard/server/templates/doc_server/search/html/search.erb +18 -18
  220. data/lib/yard/server/templates/doc_server/search/html/setup.rb +9 -9
  221. data/lib/yard/server/webrick_adapter.rb +45 -45
  222. data/lib/yard/tags/default_factory.rb +191 -191
  223. data/lib/yard/tags/default_tag.rb +13 -13
  224. data/lib/yard/tags/directives.rb +616 -616
  225. data/lib/yard/tags/library.rb +633 -633
  226. data/lib/yard/tags/option_tag.rb +13 -13
  227. data/lib/yard/tags/overload_tag.rb +71 -71
  228. data/lib/yard/tags/ref_tag.rb +8 -8
  229. data/lib/yard/tags/ref_tag_list.rb +28 -28
  230. data/lib/yard/tags/tag.rb +71 -71
  231. data/lib/yard/tags/tag_format_error.rb +7 -7
  232. data/lib/yard/tags/types_explainer.rb +162 -162
  233. data/lib/yard/templates/engine.rb +186 -186
  234. data/lib/yard/templates/erb_cache.rb +23 -23
  235. data/lib/yard/templates/helpers/base_helper.rb +215 -215
  236. data/lib/yard/templates/helpers/filter_helper.rb +27 -27
  237. data/lib/yard/templates/helpers/html_helper.rb +646 -646
  238. data/lib/yard/templates/helpers/html_syntax_highlight_helper.rb +78 -78
  239. data/lib/yard/templates/helpers/markup/rdoc_markdown.rb +23 -23
  240. data/lib/yard/templates/helpers/markup/rdoc_markup.rb +109 -109
  241. data/lib/yard/templates/helpers/markup_helper.rb +172 -172
  242. data/lib/yard/templates/helpers/method_helper.rb +75 -75
  243. data/lib/yard/templates/helpers/module_helper.rb +21 -21
  244. data/lib/yard/templates/helpers/text_helper.rb +112 -112
  245. data/lib/yard/templates/helpers/uml_helper.rb +47 -47
  246. data/lib/yard/templates/section.rb +105 -105
  247. data/lib/yard/templates/template.rb +418 -418
  248. data/lib/yard/templates/template_options.rb +92 -92
  249. data/lib/yard/verifier.rb +151 -151
  250. data/lib/yard/version.rb +6 -6
  251. data/spec/cli/command_parser_spec.rb +43 -43
  252. data/spec/cli/command_spec.rb +36 -36
  253. data/spec/cli/config_spec.rb +148 -148
  254. data/spec/cli/diff_spec.rb +254 -254
  255. data/spec/cli/display_spec.rb +30 -30
  256. data/spec/cli/gems_spec.rb +81 -81
  257. data/spec/cli/graph_spec.rb +18 -18
  258. data/spec/cli/help_spec.rb +22 -22
  259. data/spec/cli/i18n_spec.rb +107 -107
  260. data/spec/cli/list_spec.rb +8 -8
  261. data/spec/cli/markup_types_spec.rb +22 -22
  262. data/spec/cli/server_spec.rb +324 -324
  263. data/spec/cli/stats_spec.rb +96 -96
  264. data/spec/cli/yard_on_yard_spec.rb +38 -38
  265. data/spec/cli/yardoc_spec.rb +896 -862
  266. data/spec/cli/yri_spec.rb +101 -101
  267. data/spec/code_objects/base_spec.rb +470 -470
  268. data/spec/code_objects/class_object_spec.rb +226 -226
  269. data/spec/code_objects/code_object_list_spec.rb +36 -36
  270. data/spec/code_objects/constants_spec.rb +116 -116
  271. data/spec/code_objects/extra_file_object_spec.rb +160 -160
  272. data/spec/code_objects/macro_object_spec.rb +150 -150
  273. data/spec/code_objects/method_object_spec.rb +184 -184
  274. data/spec/code_objects/module_object_spec.rb +142 -142
  275. data/spec/code_objects/namespace_object_spec.rb +171 -171
  276. data/spec/code_objects/proxy_spec.rb +141 -141
  277. data/spec/code_objects/spec_helper.rb +3 -3
  278. data/spec/config_spec.rb +171 -171
  279. data/spec/core_ext/array_spec.rb +13 -13
  280. data/spec/core_ext/file_spec.rb +72 -72
  281. data/spec/core_ext/hash_spec.rb +14 -14
  282. data/spec/core_ext/insertion_spec.rb +37 -37
  283. data/spec/core_ext/module_spec.rb +9 -15
  284. data/spec/core_ext/string_spec.rb +42 -42
  285. data/spec/core_ext/symbol_hash_spec.rb +89 -89
  286. data/spec/docstring_parser_spec.rb +280 -280
  287. data/spec/docstring_spec.rb +373 -373
  288. data/spec/examples.txt +1883 -1875
  289. data/spec/handlers/alias_handler_spec.rb +82 -82
  290. data/spec/handlers/attribute_handler_spec.rb +96 -96
  291. data/spec/handlers/base_spec.rb +216 -216
  292. data/spec/handlers/c/alias_handler_spec.rb +34 -34
  293. data/spec/handlers/c/attribute_handler_spec.rb +41 -41
  294. data/spec/handlers/c/class_handler_spec.rb +78 -78
  295. data/spec/handlers/c/constant_handler_spec.rb +71 -71
  296. data/spec/handlers/c/init_handler_spec.rb +48 -48
  297. data/spec/handlers/c/method_handler_spec.rb +327 -325
  298. data/spec/handlers/c/mixin_handler_spec.rb +44 -44
  299. data/spec/handlers/c/module_handler_spec.rb +71 -71
  300. data/spec/handlers/c/override_comment_handler_spec.rb +47 -47
  301. data/spec/handlers/c/path_handler_spec.rb +36 -36
  302. data/spec/handlers/c/spec_helper.rb +23 -23
  303. data/spec/handlers/c/struct_handler_spec.rb +16 -16
  304. data/spec/handlers/class_condition_handler_spec.rb +87 -87
  305. data/spec/handlers/class_handler_spec.rb +247 -247
  306. data/spec/handlers/class_method_handler_shared_examples.rb +133 -133
  307. data/spec/handlers/class_variable_handler_spec.rb +12 -12
  308. data/spec/handlers/constant_handler_spec.rb +112 -112
  309. data/spec/handlers/decorator_handler_methods_spec.rb +393 -393
  310. data/spec/handlers/dsl_handler_spec.rb +219 -219
  311. data/spec/handlers/examples/alias_handler_001.rb.txt +45 -45
  312. data/spec/handlers/examples/attribute_handler_001.rb.txt +31 -31
  313. data/spec/handlers/examples/class_condition_handler_001.rb.txt +68 -68
  314. data/spec/handlers/examples/class_handler_001.rb.txt +120 -120
  315. data/spec/handlers/examples/class_variable_handler_001.rb.txt +9 -9
  316. data/spec/handlers/examples/constant_handler_001.rb.txt +35 -35
  317. data/spec/handlers/examples/dsl_handler_001.rb.txt +154 -154
  318. data/spec/handlers/examples/exception_handler_001.rb.txt +58 -58
  319. data/spec/handlers/examples/extend_handler_001.rb.txt +15 -15
  320. data/spec/handlers/examples/method_condition_handler_001.rb.txt +9 -9
  321. data/spec/handlers/examples/method_handler_001.rb.txt +128 -128
  322. data/spec/handlers/examples/mixin_handler_001.rb.txt +37 -37
  323. data/spec/handlers/examples/module_handler_001.rb.txt +29 -29
  324. data/spec/handlers/examples/private_constant_handler_001.rb.txt +8 -8
  325. data/spec/handlers/examples/process_handler_001.rb.txt +11 -11
  326. data/spec/handlers/examples/visibility_handler_001.rb.txt +35 -35
  327. data/spec/handlers/examples/yield_handler_001.rb.txt +54 -54
  328. data/spec/handlers/exception_handler_spec.rb +49 -49
  329. data/spec/handlers/extend_handler_spec.rb +24 -24
  330. data/spec/handlers/legacy_base_spec.rb +128 -128
  331. data/spec/handlers/method_condition_handler_spec.rb +15 -15
  332. data/spec/handlers/method_handler_spec.rb +190 -190
  333. data/spec/handlers/mixin_handler_spec.rb +56 -56
  334. data/spec/handlers/module_function_handler_spec.rb +106 -106
  335. data/spec/handlers/module_handler_spec.rb +35 -35
  336. data/spec/handlers/private_class_method_handler_spec.rb +11 -11
  337. data/spec/handlers/private_constant_handler_spec.rb +25 -25
  338. data/spec/handlers/processor_spec.rb +35 -35
  339. data/spec/handlers/public_class_method_handler_spec.rb +11 -11
  340. data/spec/handlers/ruby/base_spec.rb +95 -95
  341. data/spec/handlers/ruby/legacy/base_spec.rb +84 -84
  342. data/spec/handlers/spec_helper.rb +33 -33
  343. data/spec/handlers/visibility_handler_spec.rb +44 -44
  344. data/spec/handlers/yield_handler_spec.rb +52 -52
  345. data/spec/i18n/locale_spec.rb +81 -81
  346. data/spec/i18n/message_spec.rb +52 -52
  347. data/spec/i18n/messages_spec.rb +67 -67
  348. data/spec/i18n/pot_generator_spec.rb +295 -295
  349. data/spec/i18n/text_spec.rb +184 -184
  350. data/spec/logging_spec.rb +44 -44
  351. data/spec/options_spec.rb +171 -171
  352. data/spec/parser/base_spec.rb +24 -24
  353. data/spec/parser/c_parser_spec.rb +236 -236
  354. data/spec/parser/examples/array.c.txt +6267 -6267
  355. data/spec/parser/examples/example1.rb.txt +7 -7
  356. data/spec/parser/examples/extrafile.c.txt +8 -8
  357. data/spec/parser/examples/file.c.txt +28 -28
  358. data/spec/parser/examples/multifile.c.txt +22 -22
  359. data/spec/parser/examples/namespace.cpp.txt +68 -68
  360. data/spec/parser/examples/override.c.txt +424 -424
  361. data/spec/parser/examples/parse_in_order_001.rb.txt +2 -2
  362. data/spec/parser/examples/parse_in_order_002.rb.txt +1 -1
  363. data/spec/parser/examples/tag_handler_001.rb.txt +7 -7
  364. data/spec/parser/ruby/ast_node_spec.rb +33 -33
  365. data/spec/parser/ruby/legacy/statement_list_spec.rb +299 -299
  366. data/spec/parser/ruby/legacy/token_list_spec.rb +79 -79
  367. data/spec/parser/ruby/ruby_parser_spec.rb +508 -508
  368. data/spec/parser/ruby/token_resolver_spec.rb +165 -165
  369. data/spec/parser/source_parser_spec.rb +727 -727
  370. data/spec/parser/tag_parsing_spec.rb +17 -17
  371. data/spec/rake/yardoc_task_spec.rb +118 -118
  372. data/spec/registry_spec.rb +463 -463
  373. data/spec/registry_store_spec.rb +316 -316
  374. data/spec/rubygems/doc_manager_spec.rb +112 -112
  375. data/spec/serializers/data/serialized_yardoc/checksums +1 -1
  376. data/spec/serializers/file_system_serializer_spec.rb +145 -145
  377. data/spec/serializers/spec_helper.rb +2 -2
  378. data/spec/serializers/yardoc_serializer_spec.rb +78 -78
  379. data/spec/server/adapter_spec.rb +39 -39
  380. data/spec/server/commands/base_spec.rb +91 -91
  381. data/spec/server/commands/library_command_spec.rb +39 -39
  382. data/spec/server/doc_server_helper_spec.rb +72 -72
  383. data/spec/server/doc_server_serializer_spec.rb +60 -60
  384. data/spec/server/rack_adapter_spec.rb +21 -21
  385. data/spec/server/router_spec.rb +123 -123
  386. data/spec/server/spec_helper.rb +22 -22
  387. data/spec/server/static_caching_spec.rb +47 -47
  388. data/spec/server/webrick_servlet_spec.rb +20 -20
  389. data/spec/server_spec.rb +19 -19
  390. data/spec/spec_helper.rb +212 -212
  391. data/spec/tags/default_factory_spec.rb +168 -168
  392. data/spec/tags/default_tag_spec.rb +11 -11
  393. data/spec/tags/directives_spec.rb +463 -463
  394. data/spec/tags/library_spec.rb +48 -48
  395. data/spec/tags/overload_tag_spec.rb +53 -53
  396. data/spec/tags/ref_tag_list_spec.rb +53 -53
  397. data/spec/tags/types_explainer_spec.rb +203 -203
  398. data/spec/templates/class_spec.rb +45 -45
  399. data/spec/templates/constant_spec.rb +41 -41
  400. data/spec/templates/engine_spec.rb +131 -131
  401. data/spec/templates/examples/class001.html +308 -308
  402. data/spec/templates/examples/class001.txt +36 -36
  403. data/spec/templates/examples/class002.html +39 -39
  404. data/spec/templates/examples/constant001.txt +24 -24
  405. data/spec/templates/examples/constant002.txt +6 -6
  406. data/spec/templates/examples/constant003.txt +10 -10
  407. data/spec/templates/examples/method001.html +137 -137
  408. data/spec/templates/examples/method001.txt +35 -35
  409. data/spec/templates/examples/method002.html +91 -91
  410. data/spec/templates/examples/method002.txt +20 -20
  411. data/spec/templates/examples/method003.html +165 -165
  412. data/spec/templates/examples/method003.txt +45 -45
  413. data/spec/templates/examples/method004.html +48 -48
  414. data/spec/templates/examples/method004.txt +10 -10
  415. data/spec/templates/examples/method005.html +105 -105
  416. data/spec/templates/examples/method005.txt +33 -33
  417. data/spec/templates/examples/method006.html +107 -107
  418. data/spec/templates/examples/method006.txt +20 -20
  419. data/spec/templates/examples/module001.dot +33 -33
  420. data/spec/templates/examples/module001.html +833 -833
  421. data/spec/templates/examples/module001.txt +33 -33
  422. data/spec/templates/examples/module002.html +341 -341
  423. data/spec/templates/examples/module003.html +202 -202
  424. data/spec/templates/examples/module004.html +394 -394
  425. data/spec/templates/examples/module005.html +81 -81
  426. data/spec/templates/examples/tag001.txt +82 -82
  427. data/spec/templates/helpers/base_helper_spec.rb +171 -171
  428. data/spec/templates/helpers/html_helper_spec.rb +687 -668
  429. data/spec/templates/helpers/html_syntax_highlight_helper_spec.rb +65 -65
  430. data/spec/templates/helpers/markup/rdoc_markup_spec.rb +84 -84
  431. data/spec/templates/helpers/markup_helper_spec.rb +136 -136
  432. data/spec/templates/helpers/method_helper_spec.rb +107 -107
  433. data/spec/templates/helpers/module_helper_spec.rb +35 -35
  434. data/spec/templates/helpers/shared_signature_examples.rb +126 -126
  435. data/spec/templates/helpers/text_helper_spec.rb +65 -65
  436. data/spec/templates/method_spec.rb +118 -118
  437. data/spec/templates/module_spec.rb +203 -203
  438. data/spec/templates/onefile_spec.rb +66 -66
  439. data/spec/templates/section_spec.rb +144 -144
  440. data/spec/templates/spec_helper.rb +76 -76
  441. data/spec/templates/tag_spec.rb +52 -52
  442. data/spec/templates/template_spec.rb +410 -410
  443. data/spec/verifier_spec.rb +106 -106
  444. data/templates/default/class/dot/setup.rb +7 -7
  445. data/templates/default/class/dot/superklass.erb +2 -2
  446. data/templates/default/class/html/constructor_details.erb +8 -8
  447. data/templates/default/class/html/setup.rb +2 -2
  448. data/templates/default/class/html/subclasses.erb +4 -4
  449. data/templates/default/class/setup.rb +36 -36
  450. data/templates/default/class/text/setup.rb +12 -12
  451. data/templates/default/class/text/subclasses.erb +5 -5
  452. data/templates/default/constant/text/header.erb +11 -11
  453. data/templates/default/constant/text/setup.rb +4 -4
  454. data/templates/default/docstring/html/abstract.erb +4 -4
  455. data/templates/default/docstring/html/deprecated.erb +1 -1
  456. data/templates/default/docstring/html/index.erb +5 -5
  457. data/templates/default/docstring/html/note.erb +6 -6
  458. data/templates/default/docstring/html/private.erb +4 -4
  459. data/templates/default/docstring/html/text.erb +1 -1
  460. data/templates/default/docstring/html/todo.erb +6 -6
  461. data/templates/default/docstring/setup.rb +52 -52
  462. data/templates/default/docstring/text/abstract.erb +2 -2
  463. data/templates/default/docstring/text/deprecated.erb +2 -2
  464. data/templates/default/docstring/text/index.erb +2 -2
  465. data/templates/default/docstring/text/note.erb +3 -3
  466. data/templates/default/docstring/text/private.erb +2 -2
  467. data/templates/default/docstring/text/text.erb +1 -1
  468. data/templates/default/docstring/text/todo.erb +3 -3
  469. data/templates/default/fulldoc/html/css/full_list.css +58 -58
  470. data/templates/default/fulldoc/html/css/style.css +496 -496
  471. data/templates/default/fulldoc/html/frames.erb +17 -17
  472. data/templates/default/fulldoc/html/full_list.erb +37 -37
  473. data/templates/default/fulldoc/html/full_list_class.erb +2 -2
  474. data/templates/default/fulldoc/html/full_list_file.erb +7 -7
  475. data/templates/default/fulldoc/html/full_list_method.erb +10 -10
  476. data/templates/default/fulldoc/html/js/app.js +303 -292
  477. data/templates/default/fulldoc/html/js/full_list.js +216 -216
  478. data/templates/default/fulldoc/html/js/jquery.js +3 -3
  479. data/templates/default/fulldoc/html/setup.rb +241 -241
  480. data/templates/default/layout/dot/header.erb +5 -5
  481. data/templates/default/layout/dot/setup.rb +15 -15
  482. data/templates/default/layout/html/breadcrumb.erb +11 -11
  483. data/templates/default/layout/html/files.erb +11 -11
  484. data/templates/default/layout/html/footer.erb +5 -5
  485. data/templates/default/layout/html/headers.erb +15 -15
  486. data/templates/default/layout/html/index.erb +2 -2
  487. data/templates/default/layout/html/layout.erb +23 -23
  488. data/templates/default/layout/html/listing.erb +4 -4
  489. data/templates/default/layout/html/objects.erb +32 -32
  490. data/templates/default/layout/html/script_setup.erb +4 -4
  491. data/templates/default/layout/html/search.erb +12 -12
  492. data/templates/default/layout/html/setup.rb +89 -89
  493. data/templates/default/method/html/header.erb +16 -16
  494. data/templates/default/method/setup.rb +4 -4
  495. data/templates/default/method_details/html/header.erb +2 -2
  496. data/templates/default/method_details/html/method_signature.erb +24 -24
  497. data/templates/default/method_details/html/source.erb +9 -9
  498. data/templates/default/method_details/setup.rb +11 -11
  499. data/templates/default/method_details/text/header.erb +10 -10
  500. data/templates/default/method_details/text/method_signature.erb +12 -12
  501. data/templates/default/method_details/text/setup.rb +11 -11
  502. data/templates/default/module/dot/child.erb +1 -1
  503. data/templates/default/module/dot/dependencies.erb +2 -2
  504. data/templates/default/module/dot/header.erb +6 -6
  505. data/templates/default/module/dot/info.erb +13 -13
  506. data/templates/default/module/dot/setup.rb +15 -15
  507. data/templates/default/module/html/attribute_details.erb +10 -10
  508. data/templates/default/module/html/attribute_summary.erb +8 -8
  509. data/templates/default/module/html/box_info.erb +43 -43
  510. data/templates/default/module/html/children.erb +8 -8
  511. data/templates/default/module/html/constant_summary.erb +17 -17
  512. data/templates/default/module/html/defines.erb +2 -2
  513. data/templates/default/module/html/header.erb +5 -5
  514. data/templates/default/module/html/inherited_attributes.erb +14 -14
  515. data/templates/default/module/html/inherited_constants.erb +8 -8
  516. data/templates/default/module/html/inherited_methods.erb +18 -18
  517. data/templates/default/module/html/item_summary.erb +40 -40
  518. data/templates/default/module/html/method_details_list.erb +9 -9
  519. data/templates/default/module/html/method_summary.erb +13 -13
  520. data/templates/default/module/html/methodmissing.erb +12 -12
  521. data/templates/default/module/setup.rb +167 -167
  522. data/templates/default/module/text/children.erb +9 -9
  523. data/templates/default/module/text/class_meths_list.erb +7 -7
  524. data/templates/default/module/text/extends.erb +7 -7
  525. data/templates/default/module/text/header.erb +7 -7
  526. data/templates/default/module/text/includes.erb +7 -7
  527. data/templates/default/module/text/instance_meths_list.erb +7 -7
  528. data/templates/default/module/text/setup.rb +13 -13
  529. data/templates/default/onefile/html/files.erb +4 -4
  530. data/templates/default/onefile/html/headers.erb +6 -6
  531. data/templates/default/onefile/html/layout.erb +17 -17
  532. data/templates/default/onefile/html/readme.erb +2 -2
  533. data/templates/default/onefile/html/setup.rb +62 -62
  534. data/templates/default/root/dot/child.erb +2 -2
  535. data/templates/default/root/dot/setup.rb +6 -6
  536. data/templates/default/root/html/setup.rb +2 -2
  537. data/templates/default/tags/html/example.erb +10 -10
  538. data/templates/default/tags/html/index.erb +2 -2
  539. data/templates/default/tags/html/option.erb +24 -24
  540. data/templates/default/tags/html/overload.erb +13 -13
  541. data/templates/default/tags/html/see.erb +7 -7
  542. data/templates/default/tags/html/tag.erb +20 -20
  543. data/templates/default/tags/setup.rb +57 -57
  544. data/templates/default/tags/text/example.erb +12 -12
  545. data/templates/default/tags/text/index.erb +1 -1
  546. data/templates/default/tags/text/option.erb +20 -20
  547. data/templates/default/tags/text/overload.erb +19 -19
  548. data/templates/default/tags/text/see.erb +11 -11
  549. data/templates/default/tags/text/tag.erb +13 -13
  550. data/templates/guide/class/html/setup.rb +2 -2
  551. data/templates/guide/docstring/html/setup.rb +2 -2
  552. data/templates/guide/fulldoc/html/css/style.css +108 -108
  553. data/templates/guide/fulldoc/html/js/app.js +33 -33
  554. data/templates/guide/fulldoc/html/setup.rb +74 -74
  555. data/templates/guide/layout/html/layout.erb +81 -81
  556. data/templates/guide/layout/html/setup.rb +25 -25
  557. data/templates/guide/method/html/header.erb +17 -17
  558. data/templates/guide/method/html/setup.rb +22 -22
  559. data/templates/guide/module/html/header.erb +6 -6
  560. data/templates/guide/module/html/method_list.erb +4 -4
  561. data/templates/guide/module/html/setup.rb +27 -27
  562. data/templates/guide/onefile/html/files.erb +4 -4
  563. data/templates/guide/onefile/html/setup.rb +6 -6
  564. data/templates/guide/onefile/html/toc.erb +3 -3
  565. data/templates/guide/tags/html/setup.rb +9 -9
  566. data/yard.gemspec +43 -43
  567. metadata +4 -3
@@ -1,65 +1,65 @@
1
- # frozen_string_literal: true
2
-
3
- RSpec.describe YARD::Templates::Helpers::HtmlSyntaxHighlightHelper do
4
- include YARD::Templates::Helpers::HtmlHelper
5
- include YARD::Templates::Helpers::HtmlSyntaxHighlightHelper
6
-
7
- describe "#html_syntax_highlight" do
8
- let(:object) { CodeObjects::NamespaceObject.new(:root, :YARD) }
9
-
10
- before do
11
- Registry.root.source_type = :ruby
12
- end
13
-
14
- it "does not highlight source if options.highlight is false" do
15
- expect(self).to receive(:options).and_return(Options.new.update(:highlight => false))
16
- expect(html_syntax_highlight("def x\nend")).to eq "def x\nend"
17
- end
18
-
19
- it "highlights source (legacy)" do
20
- type = Parser::SourceParser.parser_type
21
- Parser::SourceParser.parser_type = :ruby18
22
- expect(self).to receive(:options).and_return(Options.new.update(:highlight => true))
23
- expect = "<span class='rubyid_def def kw'>def</span><span class='rubyid_x identifier id'>x</span>
24
- <span class='string val'>'x'</span><span class='plus op'>+</span>
25
- <span class='regexp val'>/x/i</span><span class='rubyid_end end kw'>end</span>"
26
- result = html_syntax_highlight("def x\n 'x' + /x/i\nend")
27
- html_equals_string(result, expect)
28
- Parser::SourceParser.parser_type = type
29
- end
30
-
31
- it "highlights source (ripper)" do
32
- expect(self).to receive(:options).and_return(Options.new.update(:highlight => true))
33
- Parser::SourceParser.parser_type = :ruby
34
- expect = "<span class='kw'>def</span> <span class='id identifier rubyid_x'>x</span>
35
- <span class='tstring'><span class='tstring_beg'>'</span>
36
- <span class='tstring_content'>x</span><span class='tstring_end'>'</span>
37
- </span> <span class='op'>+</span> <span class='tstring'>
38
- <span class='regexp_beg'>/</span><span class='tstring_content'>x</span>
39
- <span class='regexp_end'>/i</span></span>\n<span class='kw'>end</span>"
40
- result = html_syntax_highlight("def x\n 'x' + /x/i\nend")
41
- html_equals_string(result, expect)
42
- end if HAVE_RIPPER
43
-
44
- it "returns escaped unhighlighted source if a syntax error is found (ripper)" do
45
- allow(self).to receive(:options).and_return(Options.new.update(:highlight => true))
46
- expect(html_syntax_highlight("def &x; ... end")).to eq "def &amp;x; ... end"
47
- end if HAVE_RIPPER
48
-
49
- it "returns escaped unhighlighted source if a syntax error is found (ripper)" do
50
- allow(self).to receive(:options).and_return(Options.new.update(:highlight => true))
51
- expect(html_syntax_highlight("$ git clone http://url")).to eq "$ git clone http://url"
52
- end if HAVE_RIPPER
53
-
54
- it "links constants/methods" do
55
- other = CodeObjects::NamespaceObject.new(:root, :Other)
56
- allow(self).to receive(:options).and_return(Options.new.update(:highlight => true))
57
- allow(self).to receive(:run_verifier).with([other]).and_return([other])
58
- allow(self).to receive(:link_object).with(other, "Other").and_return("LINK!")
59
- result = html_syntax_highlight("def x; Other end")
60
- html_equals_string(result, "<span class='kw'>def</span>
61
- <span class='id identifier rubyid_x'>x</span><span class='semicolon'>;</span>
62
- <span class='const'>LINK!</span> <span class='kw'>end</span>")
63
- end if HAVE_RIPPER
64
- end
65
- end
1
+ # frozen_string_literal: true
2
+
3
+ RSpec.describe YARD::Templates::Helpers::HtmlSyntaxHighlightHelper do
4
+ include YARD::Templates::Helpers::HtmlHelper
5
+ include YARD::Templates::Helpers::HtmlSyntaxHighlightHelper
6
+
7
+ describe "#html_syntax_highlight" do
8
+ let(:object) { CodeObjects::NamespaceObject.new(:root, :YARD) }
9
+
10
+ before do
11
+ Registry.root.source_type = :ruby
12
+ end
13
+
14
+ it "does not highlight source if options.highlight is false" do
15
+ expect(self).to receive(:options).and_return(Options.new.update(:highlight => false))
16
+ expect(html_syntax_highlight("def x\nend")).to eq "def x\nend"
17
+ end
18
+
19
+ it "highlights source (legacy)" do
20
+ type = Parser::SourceParser.parser_type
21
+ Parser::SourceParser.parser_type = :ruby18
22
+ expect(self).to receive(:options).and_return(Options.new.update(:highlight => true))
23
+ expect = "<span class='rubyid_def def kw'>def</span><span class='rubyid_x identifier id'>x</span>
24
+ <span class='string val'>'x'</span><span class='plus op'>+</span>
25
+ <span class='regexp val'>/x/i</span><span class='rubyid_end end kw'>end</span>"
26
+ result = html_syntax_highlight("def x\n 'x' + /x/i\nend")
27
+ html_equals_string(result, expect)
28
+ Parser::SourceParser.parser_type = type
29
+ end
30
+
31
+ it "highlights source (ripper)" do
32
+ expect(self).to receive(:options).and_return(Options.new.update(:highlight => true))
33
+ Parser::SourceParser.parser_type = :ruby
34
+ expect = "<span class='kw'>def</span> <span class='id identifier rubyid_x'>x</span>
35
+ <span class='tstring'><span class='tstring_beg'>'</span>
36
+ <span class='tstring_content'>x</span><span class='tstring_end'>'</span>
37
+ </span> <span class='op'>+</span> <span class='tstring'>
38
+ <span class='regexp_beg'>/</span><span class='tstring_content'>x</span>
39
+ <span class='regexp_end'>/i</span></span>\n<span class='kw'>end</span>"
40
+ result = html_syntax_highlight("def x\n 'x' + /x/i\nend")
41
+ html_equals_string(result, expect)
42
+ end if HAVE_RIPPER
43
+
44
+ it "returns escaped unhighlighted source if a syntax error is found (ripper)" do
45
+ allow(self).to receive(:options).and_return(Options.new.update(:highlight => true))
46
+ expect(html_syntax_highlight("def &x; ... end")).to eq "def &amp;x; ... end"
47
+ end if HAVE_RIPPER
48
+
49
+ it "returns escaped unhighlighted source if a syntax error is found (ripper)" do
50
+ allow(self).to receive(:options).and_return(Options.new.update(:highlight => true))
51
+ expect(html_syntax_highlight("$ git clone http://url")).to eq "$ git clone http://url"
52
+ end if HAVE_RIPPER
53
+
54
+ it "links constants/methods" do
55
+ other = CodeObjects::NamespaceObject.new(:root, :Other)
56
+ allow(self).to receive(:options).and_return(Options.new.update(:highlight => true))
57
+ allow(self).to receive(:run_verifier).with([other]).and_return([other])
58
+ allow(self).to receive(:link_object).with(other, "Other").and_return("LINK!")
59
+ result = html_syntax_highlight("def x; Other end")
60
+ html_equals_string(result, "<span class='kw'>def</span>
61
+ <span class='id identifier rubyid_x'>x</span><span class='semicolon'>;</span>
62
+ <span class='const'>LINK!</span> <span class='kw'>end</span>")
63
+ end if HAVE_RIPPER
64
+ end
65
+ end
@@ -1,84 +1,84 @@
1
- # frozen_string_literal: true
2
-
3
- RSpec.describe YARD::Templates::Helpers::Markup::RDocMarkup do
4
- describe "loading mechanism" do
5
- before { @good_libs = [] }
6
-
7
- def require(lib)
8
- return true if @good_libs.include?(lib)
9
- raise LoadError
10
- end
11
-
12
- def load_markup
13
- require 'rdoc/markup'
14
- require 'rdoc/markup/to_html'
15
- return :RDoc2
16
- rescue LoadError
17
- begin
18
- require 'rdoc/markup/simple_markup'
19
- require 'rdoc/markup/simple_markup/to_html'
20
- return :RDoc1
21
- rescue LoadError
22
- raise NameError, "could not load RDocMarkup (rdoc is not installed)"
23
- end
24
- end
25
-
26
- it "loads RDoc2.x if rdoc/markup is present" do
27
- @good_libs += ['rdoc/markup', 'rdoc/markup/to_html']
28
- expect(load_markup).to eq :RDoc2
29
- end
30
-
31
- it "fails on RDoc2.x if rdoc/markup/to_html is not present" do
32
- @good_libs += ['rdoc/markup']
33
- expect { load_markup }.to raise_error(NameError)
34
- end
35
-
36
- it "loads RDoc1.x if RDoc2 fails and rdoc/markup/simple_markup is present" do
37
- @good_libs += ['rdoc/markup/simple_markup', 'rdoc/markup/simple_markup/to_html']
38
- expect(load_markup).to eq :RDoc1
39
- end
40
-
41
- it "raises an error on loading if neither lib is present" do
42
- expect { load_markup }.to raise_error(NameError)
43
- end
44
- end
45
-
46
- describe "#to_html" do
47
- def to_html(text)
48
- html = YARD::Templates::Helpers::Markup::RDocMarkup.new(text).to_html
49
- html.strip.gsub(/\r?\n/, '')
50
- end
51
-
52
- it "handles typewriter text" do
53
- expect(to_html('Hello +<code>+')).to eq '<p>Hello <tt>&lt;code&gt;</tt></p>'
54
- end
55
- end
56
-
57
- describe "#fix_typewriter" do
58
- def fix_typewriter(text)
59
- YARD::Templates::Helpers::Markup::RDocMarkup.new('').send(:fix_typewriter, text)
60
- end
61
-
62
- it "converts +text+ to <tt>text</tt>" do
63
- expect(fix_typewriter("Some +typewriter text &lt;+.")).to eq "Some <tt>typewriter text &lt;</tt>."
64
- expect(fix_typewriter("Not +typewriter text.")).to eq "Not +typewriter text."
65
- expect(fix_typewriter("Alternating +type writer+ text +here+.")).to eq "Alternating <tt>type writer</tt> text <tt>here</tt>."
66
- expect(fix_typewriter("No ++problem.")).to eq "No ++problem."
67
- expect(fix_typewriter("Math + stuff +is ok+")).to eq "Math + stuff <tt>is ok</tt>"
68
- expect(fix_typewriter("Hello +{Foo}+ World")).to eq "Hello <tt>{Foo}</tt> World"
69
- end
70
-
71
- it "does not apply to code blocks" do
72
- expect(fix_typewriter("<code>Hello +hello+</code>")).to eq "<code>Hello +hello+</code>"
73
- end
74
-
75
- it "does not apply to HTML tag attributes" do
76
- expect(fix_typewriter("<a href='http://foo.com/A+b+c'>A+b+c</a>")).to eq "<a href='http://foo.com/A+b+c'>A+b+c</a>"
77
- expect(fix_typewriter("<foo class='foo+bar+baz'/>")).to eq "<foo class='foo+bar+baz'/>"
78
- end
79
-
80
- it "still applies inside of other tags" do
81
- expect(fix_typewriter("<p>+foo+</p>")).to eq "<p><tt>foo</tt></p>"
82
- end
83
- end
84
- end
1
+ # frozen_string_literal: true
2
+
3
+ RSpec.describe YARD::Templates::Helpers::Markup::RDocMarkup do
4
+ describe "loading mechanism" do
5
+ before { @good_libs = [] }
6
+
7
+ def require(lib)
8
+ return true if @good_libs.include?(lib)
9
+ raise LoadError
10
+ end
11
+
12
+ def load_markup
13
+ require 'rdoc/markup'
14
+ require 'rdoc/markup/to_html'
15
+ return :RDoc2
16
+ rescue LoadError
17
+ begin
18
+ require 'rdoc/markup/simple_markup'
19
+ require 'rdoc/markup/simple_markup/to_html'
20
+ return :RDoc1
21
+ rescue LoadError
22
+ raise NameError, "could not load RDocMarkup (rdoc is not installed)"
23
+ end
24
+ end
25
+
26
+ it "loads RDoc2.x if rdoc/markup is present" do
27
+ @good_libs += ['rdoc/markup', 'rdoc/markup/to_html']
28
+ expect(load_markup).to eq :RDoc2
29
+ end
30
+
31
+ it "fails on RDoc2.x if rdoc/markup/to_html is not present" do
32
+ @good_libs += ['rdoc/markup']
33
+ expect { load_markup }.to raise_error(NameError)
34
+ end
35
+
36
+ it "loads RDoc1.x if RDoc2 fails and rdoc/markup/simple_markup is present" do
37
+ @good_libs += ['rdoc/markup/simple_markup', 'rdoc/markup/simple_markup/to_html']
38
+ expect(load_markup).to eq :RDoc1
39
+ end
40
+
41
+ it "raises an error on loading if neither lib is present" do
42
+ expect { load_markup }.to raise_error(NameError)
43
+ end
44
+ end
45
+
46
+ describe "#to_html" do
47
+ def to_html(text)
48
+ html = YARD::Templates::Helpers::Markup::RDocMarkup.new(text).to_html
49
+ html.strip.gsub(/\r?\n/, '')
50
+ end
51
+
52
+ it "handles typewriter text" do
53
+ expect(to_html('Hello +<code>+')).to eq '<p>Hello <tt>&lt;code&gt;</tt></p>'
54
+ end
55
+ end
56
+
57
+ describe "#fix_typewriter" do
58
+ def fix_typewriter(text)
59
+ YARD::Templates::Helpers::Markup::RDocMarkup.new('').send(:fix_typewriter, text)
60
+ end
61
+
62
+ it "converts +text+ to <tt>text</tt>" do
63
+ expect(fix_typewriter("Some +typewriter text &lt;+.")).to eq "Some <tt>typewriter text &lt;</tt>."
64
+ expect(fix_typewriter("Not +typewriter text.")).to eq "Not +typewriter text."
65
+ expect(fix_typewriter("Alternating +type writer+ text +here+.")).to eq "Alternating <tt>type writer</tt> text <tt>here</tt>."
66
+ expect(fix_typewriter("No ++problem.")).to eq "No ++problem."
67
+ expect(fix_typewriter("Math + stuff +is ok+")).to eq "Math + stuff <tt>is ok</tt>"
68
+ expect(fix_typewriter("Hello +{Foo}+ World")).to eq "Hello <tt>{Foo}</tt> World"
69
+ end
70
+
71
+ it "does not apply to code blocks" do
72
+ expect(fix_typewriter("<code>Hello +hello+</code>")).to eq "<code>Hello +hello+</code>"
73
+ end
74
+
75
+ it "does not apply to HTML tag attributes" do
76
+ expect(fix_typewriter("<a href='http://foo.com/A+b+c'>A+b+c</a>")).to eq "<a href='http://foo.com/A+b+c'>A+b+c</a>"
77
+ expect(fix_typewriter("<foo class='foo+bar+baz'/>")).to eq "<foo class='foo+bar+baz'/>"
78
+ end
79
+
80
+ it "still applies inside of other tags" do
81
+ expect(fix_typewriter("<p>+foo+</p>")).to eq "<p><tt>foo</tt></p>"
82
+ end
83
+ end
84
+ end
@@ -1,136 +1,136 @@
1
- # frozen_string_literal: true
2
-
3
- module YARD::Templates::Helpers::MarkupHelper
4
- public :load_markup_provider, :markup_class, :markup_provider
5
- end
6
-
7
- class GeneratorMock
8
- attr_accessor :options
9
- include YARD::Templates::Helpers::MarkupHelper
10
- def initialize(options = Templates::TemplateOptions.new)
11
- self.options = options
12
- end
13
- end
14
-
15
- RSpec.describe YARD::Templates::Helpers::MarkupHelper do
16
- before do
17
- YARD::Templates::Helpers::MarkupHelper.clear_markup_cache
18
- end
19
-
20
- describe "#load_markup_provider" do
21
- before do
22
- allow(log).to receive(:error)
23
- @gen = GeneratorMock.new
24
- @gen.options.reset_defaults
25
- end
26
-
27
- it "exits on an invalid markup type" do
28
- @gen.options.markup = :invalid
29
- expect(@gen.load_markup_provider).to be false
30
- end
31
-
32
- it "fails when an invalid markup provider is specified" do
33
- @gen.options.update(:markup => :markdown, :markup_provider => :invalid)
34
- expect(@gen.load_markup_provider).to be false
35
- expect(@gen.markup_class).to eq nil
36
- end
37
-
38
- it "loads RDocMarkup if rdoc is specified and it is installed" do
39
- @gen.options.markup = :rdoc
40
- expect(@gen.load_markup_provider).to be true
41
- expect(@gen.markup_class).to eq YARD::Templates::Helpers::Markup::RDocMarkup
42
- end
43
-
44
- it "fails if RDoc cannot be loaded" do
45
- @gen.options.markup = :rdoc
46
- expect(@gen).to receive(:eval).with('::YARD::Templates::Helpers::Markup::RDocMarkup').and_raise(NameError)
47
- expect(@gen.load_markup_provider).to be false
48
- expect(@gen.markup_provider).to eq nil
49
- end
50
-
51
- it "searches through available markup providers for the markup type if none is set" do
52
- expect(@gen).to receive(:eval).with('::RedcarpetCompat').and_return(double(:bluecloth))
53
- expect(@gen).to receive(:require).with('redcarpet').and_return(true)
54
- expect(@gen).not_to receive(:require).with('maruku')
55
- @gen.options.markup = :markdown
56
- # this only raises an exception because we mock out require to avoid
57
- # loading any libraries but our implementation tries to return the library
58
- # name as a constant
59
- expect(@gen.load_markup_provider).to be true
60
- expect(@gen.markup_provider).to eq :redcarpet
61
- end
62
-
63
- it "continues searching if some of the providers are unavailable" do
64
- expect(@gen).to receive(:require).with('redcarpet').and_raise(LoadError)
65
- expect(@gen).to receive(:require).with('rdiscount').and_raise(LoadError)
66
- expect(@gen).to receive(:require).with('kramdown').and_raise(LoadError)
67
- expect(@gen).to receive(:require).with('bluecloth').and_raise(LoadError)
68
- expect(@gen).to receive(:require).with('maruku').and_raise(LoadError)
69
- expect(@gen).to receive(:require).with('rpeg-markdown').and_return(true)
70
- expect(@gen).to receive(:eval).with('::PEGMarkdown').and_return(true)
71
- @gen.options.markup = :markdown
72
- # this only raises an exception because we mock out require to avoid
73
- # loading any libraries but our implementation tries to return the library
74
- # name as a constant
75
- @gen.load_markup_provider
76
- expect(@gen.markup_provider).to eq :"rpeg-markdown"
77
- end
78
-
79
- it "overrides the search if `:markup_provider` is set in options" do
80
- expect(@gen).to receive(:require).with('rdiscount').and_return(true)
81
- expect(@gen).to receive(:eval).with('::RDiscount').and_return(true)
82
- @gen.options.update(:markup => :markdown, :markup_provider => :rdiscount)
83
- @gen.load_markup_provider
84
- expect(@gen.markup_provider).to eq :rdiscount
85
- end
86
-
87
- it "fails if no provider is found" do
88
- YARD::Templates::Helpers::MarkupHelper::MARKUP_PROVIDERS[:markdown].each do |p|
89
- expect(@gen).to receive(:require).with(p[:lib].to_s).and_raise(LoadError)
90
- end
91
- @gen.options.markup = :markdown
92
- expect(@gen.load_markup_provider).to be false
93
- expect(@gen.markup_provider).to eq nil
94
- end
95
-
96
- it "fails if overridden provider is not found" do
97
- expect(@gen).to receive(:require).with('rdiscount').and_raise(LoadError)
98
- @gen.options.update(:markup => :markdown, :markup_provider => :rdiscount)
99
- expect(@gen.load_markup_provider).to be false
100
- expect(@gen.markup_provider).to eq nil
101
- end
102
-
103
- it "fails if the markup type is not found" do
104
- expect(log).to receive(:error).with(/Invalid markup/)
105
- @gen.options.markup = :xxx
106
- expect(@gen.load_markup_provider).to be false
107
- expect(@gen.markup_provider).to eq nil
108
- end
109
- end
110
-
111
- describe "#markup_for_file" do
112
- include YARD::Templates::Helpers::MarkupHelper
113
-
114
- it "looks for a shebang line" do
115
- expect(markup_for_file("#!text\ntext here", 'file.rdoc')).to eq :text
116
- end
117
-
118
- it "returns the default markup type if no shebang is found or no valid ext is found" do
119
- allow(self).to receive(:options).and_return(Options.new.update(:markup => :default_type))
120
- expect(markup_for_file('', 'filename')).to eq :default_type
121
- end
122
-
123
- it "looks for a file extension if no shebang is found" do
124
- expect(markup_for_file('', 'filename.MD')).to eq :markdown
125
- expect(markup_for_file('', 'filename.ORG')).to eq :org
126
- end
127
-
128
- Templates::Helpers::MarkupHelper::MARKUP_EXTENSIONS.each do |type, exts|
129
- exts.each do |ext|
130
- it "recognizes .#{ext} as #{type} markup type" do
131
- expect(markup_for_file('', "filename.#{ext}")).to eq type
132
- end
133
- end
134
- end
135
- end
136
- end
1
+ # frozen_string_literal: true
2
+
3
+ module YARD::Templates::Helpers::MarkupHelper
4
+ public :load_markup_provider, :markup_class, :markup_provider
5
+ end
6
+
7
+ class GeneratorMock
8
+ attr_accessor :options
9
+ include YARD::Templates::Helpers::MarkupHelper
10
+ def initialize(options = Templates::TemplateOptions.new)
11
+ self.options = options
12
+ end
13
+ end
14
+
15
+ RSpec.describe YARD::Templates::Helpers::MarkupHelper do
16
+ before do
17
+ YARD::Templates::Helpers::MarkupHelper.clear_markup_cache
18
+ end
19
+
20
+ describe "#load_markup_provider" do
21
+ before do
22
+ allow(log).to receive(:error)
23
+ @gen = GeneratorMock.new
24
+ @gen.options.reset_defaults
25
+ end
26
+
27
+ it "exits on an invalid markup type" do
28
+ @gen.options.markup = :invalid
29
+ expect(@gen.load_markup_provider).to be false
30
+ end
31
+
32
+ it "fails when an invalid markup provider is specified" do
33
+ @gen.options.update(:markup => :markdown, :markup_provider => :invalid)
34
+ expect(@gen.load_markup_provider).to be false
35
+ expect(@gen.markup_class).to eq nil
36
+ end
37
+
38
+ it "loads RDocMarkup if rdoc is specified and it is installed" do
39
+ @gen.options.markup = :rdoc
40
+ expect(@gen.load_markup_provider).to be true
41
+ expect(@gen.markup_class).to eq YARD::Templates::Helpers::Markup::RDocMarkup
42
+ end
43
+
44
+ it "fails if RDoc cannot be loaded" do
45
+ @gen.options.markup = :rdoc
46
+ expect(@gen).to receive(:eval).with('::YARD::Templates::Helpers::Markup::RDocMarkup').and_raise(NameError)
47
+ expect(@gen.load_markup_provider).to be false
48
+ expect(@gen.markup_provider).to eq nil
49
+ end
50
+
51
+ it "searches through available markup providers for the markup type if none is set" do
52
+ expect(@gen).to receive(:eval).with('::RedcarpetCompat').and_return(double(:bluecloth))
53
+ expect(@gen).to receive(:require).with('redcarpet').and_return(true)
54
+ expect(@gen).not_to receive(:require).with('maruku')
55
+ @gen.options.markup = :markdown
56
+ # this only raises an exception because we mock out require to avoid
57
+ # loading any libraries but our implementation tries to return the library
58
+ # name as a constant
59
+ expect(@gen.load_markup_provider).to be true
60
+ expect(@gen.markup_provider).to eq :redcarpet
61
+ end
62
+
63
+ it "continues searching if some of the providers are unavailable" do
64
+ expect(@gen).to receive(:require).with('redcarpet').and_raise(LoadError)
65
+ expect(@gen).to receive(:require).with('rdiscount').and_raise(LoadError)
66
+ expect(@gen).to receive(:require).with('kramdown').and_raise(LoadError)
67
+ expect(@gen).to receive(:require).with('bluecloth').and_raise(LoadError)
68
+ expect(@gen).to receive(:require).with('maruku').and_raise(LoadError)
69
+ expect(@gen).to receive(:require).with('rpeg-markdown').and_return(true)
70
+ expect(@gen).to receive(:eval).with('::PEGMarkdown').and_return(true)
71
+ @gen.options.markup = :markdown
72
+ # this only raises an exception because we mock out require to avoid
73
+ # loading any libraries but our implementation tries to return the library
74
+ # name as a constant
75
+ @gen.load_markup_provider
76
+ expect(@gen.markup_provider).to eq :"rpeg-markdown"
77
+ end
78
+
79
+ it "overrides the search if `:markup_provider` is set in options" do
80
+ expect(@gen).to receive(:require).with('rdiscount').and_return(true)
81
+ expect(@gen).to receive(:eval).with('::RDiscount').and_return(true)
82
+ @gen.options.update(:markup => :markdown, :markup_provider => :rdiscount)
83
+ @gen.load_markup_provider
84
+ expect(@gen.markup_provider).to eq :rdiscount
85
+ end
86
+
87
+ it "fails if no provider is found" do
88
+ YARD::Templates::Helpers::MarkupHelper::MARKUP_PROVIDERS[:markdown].each do |p|
89
+ expect(@gen).to receive(:require).with(p[:lib].to_s).and_raise(LoadError)
90
+ end
91
+ @gen.options.markup = :markdown
92
+ expect(@gen.load_markup_provider).to be false
93
+ expect(@gen.markup_provider).to eq nil
94
+ end
95
+
96
+ it "fails if overridden provider is not found" do
97
+ expect(@gen).to receive(:require).with('rdiscount').and_raise(LoadError)
98
+ @gen.options.update(:markup => :markdown, :markup_provider => :rdiscount)
99
+ expect(@gen.load_markup_provider).to be false
100
+ expect(@gen.markup_provider).to eq nil
101
+ end
102
+
103
+ it "fails if the markup type is not found" do
104
+ expect(log).to receive(:error).with(/Invalid markup/)
105
+ @gen.options.markup = :xxx
106
+ expect(@gen.load_markup_provider).to be false
107
+ expect(@gen.markup_provider).to eq nil
108
+ end
109
+ end
110
+
111
+ describe "#markup_for_file" do
112
+ include YARD::Templates::Helpers::MarkupHelper
113
+
114
+ it "looks for a shebang line" do
115
+ expect(markup_for_file("#!text\ntext here", 'file.rdoc')).to eq :text
116
+ end
117
+
118
+ it "returns the default markup type if no shebang is found or no valid ext is found" do
119
+ allow(self).to receive(:options).and_return(Options.new.update(:markup => :default_type))
120
+ expect(markup_for_file('', 'filename')).to eq :default_type
121
+ end
122
+
123
+ it "looks for a file extension if no shebang is found" do
124
+ expect(markup_for_file('', 'filename.MD')).to eq :markdown
125
+ expect(markup_for_file('', 'filename.ORG')).to eq :org
126
+ end
127
+
128
+ Templates::Helpers::MarkupHelper::MARKUP_EXTENSIONS.each do |type, exts|
129
+ exts.each do |ext|
130
+ it "recognizes .#{ext} as #{type} markup type" do
131
+ expect(markup_for_file('', "filename.#{ext}")).to eq type
132
+ end
133
+ end
134
+ end
135
+ end
136
+ end