yard 0.9.18 → 0.9.23

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 (590) hide show
  1. checksums.yaml +4 -4
  2. data/.dockerignore +2 -0
  3. data/.github/ISSUE_TEMPLATE.md +33 -0
  4. data/.github/PULL_REQUEST_TEMPLATE.md +12 -0
  5. data/.gitignore +14 -0
  6. data/.rspec +2 -0
  7. data/.rubocop.yml +99 -0
  8. data/.travis.yml +52 -0
  9. data/.yardopts +26 -26
  10. data/.yardopts_guide +19 -0
  11. data/.yardopts_i18n +23 -0
  12. data/CHANGELOG.md +781 -728
  13. data/CODE_OF_CONDUCT.md +15 -0
  14. data/CONTRIBUTING.md +140 -0
  15. data/Dockerfile.samus +28 -0
  16. data/Gemfile +32 -0
  17. data/LEGAL +66 -66
  18. data/LICENSE +22 -22
  19. data/README.md +330 -328
  20. data/Rakefile +37 -53
  21. data/SECURITY.md +26 -0
  22. data/benchmarks/builtins_vs_eval.rb +24 -24
  23. data/benchmarks/concat_vs_join.rb +13 -13
  24. data/benchmarks/erb_vs_erubis.rb +54 -54
  25. data/benchmarks/format_args.rb +47 -47
  26. data/benchmarks/generation.rb +38 -38
  27. data/benchmarks/marshal_vs_dbm.rb +64 -64
  28. data/benchmarks/parsing.rb +46 -46
  29. data/benchmarks/pathname_vs_string.rb +50 -50
  30. data/benchmarks/rdoc_vs_yardoc.rb +11 -11
  31. data/benchmarks/registry_store_types.rb +49 -49
  32. data/benchmarks/ri_vs_yri.rb +19 -19
  33. data/benchmarks/ripper_parser.rb +13 -13
  34. data/benchmarks/splat_vs_flatten.rb +13 -13
  35. data/benchmarks/template_erb.rb +23 -23
  36. data/benchmarks/template_format.rb +7 -7
  37. data/benchmarks/template_profile.rb +18 -18
  38. data/benchmarks/yri_cache.rb +20 -20
  39. data/bin/yard +13 -13
  40. data/bin/yardoc +13 -13
  41. data/bin/yri +13 -13
  42. data/docs/CodeObjects.md +115 -115
  43. data/docs/GettingStarted.md +679 -679
  44. data/docs/Handlers.md +152 -152
  45. data/docs/Overview.md +61 -61
  46. data/docs/Parser.md +191 -191
  47. data/docs/Tags.md +283 -283
  48. data/docs/TagsArch.md +123 -123
  49. data/docs/Templates.md +496 -496
  50. data/docs/WhatsNew.md +1245 -1245
  51. data/docs/templates/default/fulldoc/html/full_list_tag.erb +8 -8
  52. data/docs/templates/default/fulldoc/html/setup.rb +6 -6
  53. data/docs/templates/default/layout/html/setup.rb +9 -9
  54. data/docs/templates/default/layout/html/tag_list.erb +11 -11
  55. data/docs/templates/default/yard_tags/html/list.erb +18 -18
  56. data/docs/templates/default/yard_tags/html/setup.rb +26 -26
  57. data/docs/templates/plugin.rb +70 -70
  58. data/lib/rubygems_plugin.rb +9 -9
  59. data/lib/yard.rb +69 -69
  60. data/lib/yard/autoload.rb +308 -303
  61. data/lib/yard/cli/command.rb +85 -85
  62. data/lib/yard/cli/command_parser.rb +93 -93
  63. data/lib/yard/cli/config.rb +198 -198
  64. data/lib/yard/cli/diff.rb +270 -270
  65. data/lib/yard/cli/display.rb +69 -69
  66. data/lib/yard/cli/gems.rb +84 -84
  67. data/lib/yard/cli/graph.rb +125 -125
  68. data/lib/yard/cli/help.rb +20 -20
  69. data/lib/yard/cli/i18n.rb +70 -70
  70. data/lib/yard/cli/list.rb +23 -23
  71. data/lib/yard/cli/markup_types.rb +32 -32
  72. data/lib/yard/cli/server.rb +257 -257
  73. data/lib/yard/cli/stats.rb +231 -231
  74. data/lib/yard/cli/yardoc.rb +789 -788
  75. data/lib/yard/cli/yardopts_command.rb +110 -110
  76. data/lib/yard/cli/yri.rb +215 -215
  77. data/lib/yard/code_objects/base.rb +622 -615
  78. data/lib/yard/code_objects/class_object.rb +146 -146
  79. data/lib/yard/code_objects/class_variable_object.rb +11 -11
  80. data/lib/yard/code_objects/constant_object.rb +16 -16
  81. data/lib/yard/code_objects/extended_method_object.rb +24 -24
  82. data/lib/yard/code_objects/extra_file_object.rb +134 -131
  83. data/lib/yard/code_objects/macro_object.rb +172 -172
  84. data/lib/yard/code_objects/method_object.rb +196 -196
  85. data/lib/yard/code_objects/module_object.rb +21 -21
  86. data/lib/yard/code_objects/namespace_mapper.rb +114 -114
  87. data/lib/yard/code_objects/namespace_object.rb +200 -200
  88. data/lib/yard/code_objects/proxy.rb +244 -240
  89. data/lib/yard/code_objects/root_object.rb +19 -19
  90. data/lib/yard/config.rb +270 -270
  91. data/lib/yard/core_ext/array.rb +16 -16
  92. data/lib/yard/core_ext/file.rb +69 -69
  93. data/lib/yard/core_ext/hash.rb +16 -16
  94. data/lib/yard/core_ext/insertion.rb +63 -63
  95. data/lib/yard/core_ext/module.rb +11 -20
  96. data/lib/yard/core_ext/string.rb +68 -68
  97. data/lib/yard/core_ext/symbol_hash.rb +75 -75
  98. data/lib/yard/docstring.rb +386 -386
  99. data/lib/yard/docstring_parser.rb +345 -345
  100. data/lib/yard/gem_index.rb +29 -29
  101. data/lib/yard/globals.rb +22 -22
  102. data/lib/yard/handlers/base.rb +595 -595
  103. data/lib/yard/handlers/c/alias_handler.rb +16 -16
  104. data/lib/yard/handlers/c/attribute_handler.rb +13 -13
  105. data/lib/yard/handlers/c/base.rb +129 -129
  106. data/lib/yard/handlers/c/class_handler.rb +27 -27
  107. data/lib/yard/handlers/c/constant_handler.rb +13 -13
  108. data/lib/yard/handlers/c/handler_methods.rb +212 -211
  109. data/lib/yard/handlers/c/init_handler.rb +20 -20
  110. data/lib/yard/handlers/c/method_handler.rb +45 -45
  111. data/lib/yard/handlers/c/mixin_handler.rb +21 -21
  112. data/lib/yard/handlers/c/module_handler.rb +17 -17
  113. data/lib/yard/handlers/c/override_comment_handler.rb +31 -31
  114. data/lib/yard/handlers/c/path_handler.rb +11 -11
  115. data/lib/yard/handlers/c/struct_handler.rb +13 -13
  116. data/lib/yard/handlers/c/symbol_handler.rb +8 -8
  117. data/lib/yard/handlers/common/method_handler.rb +19 -0
  118. data/lib/yard/handlers/processor.rb +200 -200
  119. data/lib/yard/handlers/ruby/alias_handler.rb +45 -44
  120. data/lib/yard/handlers/ruby/attribute_handler.rb +87 -87
  121. data/lib/yard/handlers/ruby/base.rb +165 -165
  122. data/lib/yard/handlers/ruby/class_condition_handler.rb +92 -92
  123. data/lib/yard/handlers/ruby/class_handler.rb +119 -119
  124. data/lib/yard/handlers/ruby/class_variable_handler.rb +17 -17
  125. data/lib/yard/handlers/ruby/comment_handler.rb +10 -10
  126. data/lib/yard/handlers/ruby/constant_handler.rb +55 -59
  127. data/lib/yard/handlers/ruby/decorator_handler_methods.rb +123 -123
  128. data/lib/yard/handlers/ruby/dsl_handler.rb +15 -15
  129. data/lib/yard/handlers/ruby/dsl_handler_methods.rb +96 -96
  130. data/lib/yard/handlers/ruby/exception_handler.rb +27 -27
  131. data/lib/yard/handlers/ruby/extend_handler.rb +22 -22
  132. data/lib/yard/handlers/ruby/legacy/alias_handler.rb +37 -37
  133. data/lib/yard/handlers/ruby/legacy/attribute_handler.rb +65 -65
  134. data/lib/yard/handlers/ruby/legacy/base.rb +245 -245
  135. data/lib/yard/handlers/ruby/legacy/class_condition_handler.rb +83 -83
  136. data/lib/yard/handlers/ruby/legacy/class_handler.rb +113 -113
  137. data/lib/yard/handlers/ruby/legacy/class_variable_handler.rb +15 -15
  138. data/lib/yard/handlers/ruby/legacy/comment_handler.rb +10 -10
  139. data/lib/yard/handlers/ruby/legacy/constant_handler.rb +29 -29
  140. data/lib/yard/handlers/ruby/legacy/dsl_handler.rb +17 -17
  141. data/lib/yard/handlers/ruby/legacy/exception_handler.rb +13 -13
  142. data/lib/yard/handlers/ruby/legacy/extend_handler.rb +21 -21
  143. data/lib/yard/handlers/ruby/legacy/method_handler.rb +90 -90
  144. data/lib/yard/handlers/ruby/legacy/mixin_handler.rb +39 -39
  145. data/lib/yard/handlers/ruby/legacy/module_function_handler.rb +19 -19
  146. data/lib/yard/handlers/ruby/legacy/module_handler.rb +12 -12
  147. data/lib/yard/handlers/ruby/legacy/private_class_method_handler.rb +22 -22
  148. data/lib/yard/handlers/ruby/legacy/private_constant_handler.rb +22 -22
  149. data/lib/yard/handlers/ruby/legacy/visibility_handler.rb +17 -17
  150. data/lib/yard/handlers/ruby/legacy/yield_handler.rb +29 -29
  151. data/lib/yard/handlers/ruby/method_condition_handler.rb +9 -9
  152. data/lib/yard/handlers/ruby/method_handler.rb +104 -118
  153. data/lib/yard/handlers/ruby/mixin_handler.rb +49 -37
  154. data/lib/yard/handlers/ruby/module_function_handler.rb +27 -27
  155. data/lib/yard/handlers/ruby/module_handler.rb +12 -12
  156. data/lib/yard/handlers/ruby/private_class_method_handler.rb +14 -14
  157. data/lib/yard/handlers/ruby/private_constant_handler.rb +43 -43
  158. data/lib/yard/handlers/ruby/public_class_method_handler.rb +14 -14
  159. data/lib/yard/handlers/ruby/struct_handler_methods.rb +143 -143
  160. data/lib/yard/handlers/ruby/visibility_handler.rb +22 -22
  161. data/lib/yard/handlers/ruby/yield_handler.rb +31 -31
  162. data/lib/yard/i18n/locale.rb +67 -67
  163. data/lib/yard/i18n/message.rb +57 -57
  164. data/lib/yard/i18n/messages.rb +56 -56
  165. data/lib/yard/i18n/po_parser.rb +61 -61
  166. data/lib/yard/i18n/pot_generator.rb +290 -290
  167. data/lib/yard/i18n/text.rb +173 -173
  168. data/lib/yard/logging.rb +205 -205
  169. data/lib/yard/options.rb +217 -217
  170. data/lib/yard/parser/base.rb +57 -57
  171. data/lib/yard/parser/c/c_parser.rb +235 -235
  172. data/lib/yard/parser/c/comment_parser.rb +134 -134
  173. data/lib/yard/parser/c/statement.rb +66 -64
  174. data/lib/yard/parser/ruby/ast_node.rb +551 -540
  175. data/lib/yard/parser/ruby/legacy/irb/slex.rb +276 -0
  176. data/lib/yard/parser/ruby/legacy/ruby_lex.rb +1345 -1354
  177. data/lib/yard/parser/ruby/legacy/ruby_parser.rb +32 -32
  178. data/lib/yard/parser/ruby/legacy/statement.rb +68 -66
  179. data/lib/yard/parser/ruby/legacy/statement_list.rb +394 -394
  180. data/lib/yard/parser/ruby/legacy/token_list.rb +74 -74
  181. data/lib/yard/parser/ruby/ruby_parser.rb +699 -687
  182. data/lib/yard/parser/ruby/token_resolver.rb +156 -156
  183. data/lib/yard/parser/source_parser.rb +526 -526
  184. data/lib/yard/rake/yardoc_task.rb +81 -81
  185. data/lib/yard/registry.rb +439 -439
  186. data/lib/yard/registry_resolver.rb +231 -189
  187. data/lib/yard/registry_store.rb +342 -337
  188. data/lib/yard/rubygems/backports.rb +10 -10
  189. data/lib/yard/rubygems/backports/LICENSE.txt +57 -57
  190. data/lib/yard/rubygems/backports/MIT.txt +20 -20
  191. data/lib/yard/rubygems/backports/gem.rb +10 -10
  192. data/lib/yard/rubygems/backports/source_index.rb +365 -365
  193. data/lib/yard/rubygems/doc_manager.rb +90 -90
  194. data/lib/yard/rubygems/hook.rb +197 -197
  195. data/lib/yard/rubygems/specification.rb +50 -50
  196. data/lib/yard/serializers/base.rb +83 -83
  197. data/lib/yard/serializers/file_system_serializer.rb +123 -123
  198. data/lib/yard/serializers/process_serializer.rb +24 -24
  199. data/lib/yard/serializers/stdout_serializer.rb +34 -34
  200. data/lib/yard/serializers/yardoc_serializer.rb +152 -152
  201. data/lib/yard/server.rb +13 -13
  202. data/lib/yard/server/adapter.rb +100 -100
  203. data/lib/yard/server/commands/base.rb +209 -209
  204. data/lib/yard/server/commands/display_file_command.rb +29 -29
  205. data/lib/yard/server/commands/display_object_command.rb +65 -65
  206. data/lib/yard/server/commands/frames_command.rb +16 -16
  207. data/lib/yard/server/commands/library_command.rb +187 -187
  208. data/lib/yard/server/commands/library_index_command.rb +28 -28
  209. data/lib/yard/server/commands/list_command.rb +25 -25
  210. data/lib/yard/server/commands/root_request_command.rb +15 -15
  211. data/lib/yard/server/commands/search_command.rb +79 -79
  212. data/lib/yard/server/commands/static_file_command.rb +23 -23
  213. data/lib/yard/server/commands/static_file_helpers.rb +61 -62
  214. data/lib/yard/server/doc_server_helper.rb +91 -91
  215. data/lib/yard/server/doc_server_serializer.rb +39 -39
  216. data/lib/yard/server/library_version.rb +277 -277
  217. data/lib/yard/server/rack_adapter.rb +89 -89
  218. data/lib/yard/server/router.rb +187 -187
  219. data/lib/yard/server/static_caching.rb +46 -46
  220. data/lib/yard/server/templates/default/fulldoc/html/css/custom.css +127 -127
  221. data/lib/yard/server/templates/default/fulldoc/html/js/autocomplete.js +11 -11
  222. data/lib/yard/server/templates/default/layout/html/breadcrumb.erb +37 -37
  223. data/lib/yard/server/templates/default/layout/html/script_setup.erb +7 -7
  224. data/lib/yard/server/templates/default/layout/html/setup.rb +8 -8
  225. data/lib/yard/server/templates/default/method_details/html/permalink.erb +4 -4
  226. data/lib/yard/server/templates/default/method_details/html/setup.rb +5 -5
  227. data/lib/yard/server/templates/doc_server/library_list/html/headers.erb +8 -8
  228. data/lib/yard/server/templates/doc_server/library_list/html/library_list.erb +14 -14
  229. data/lib/yard/server/templates/doc_server/library_list/html/listing.erb +13 -13
  230. data/lib/yard/server/templates/doc_server/library_list/html/setup.rb +6 -6
  231. data/lib/yard/server/templates/doc_server/library_list/html/title.erb +2 -2
  232. data/lib/yard/server/templates/doc_server/processing/html/processing.erb +52 -52
  233. data/lib/yard/server/templates/doc_server/processing/html/setup.rb +4 -4
  234. data/lib/yard/server/templates/doc_server/search/html/search.erb +18 -18
  235. data/lib/yard/server/templates/doc_server/search/html/setup.rb +9 -9
  236. data/lib/yard/server/webrick_adapter.rb +45 -45
  237. data/lib/yard/tags/default_factory.rb +191 -191
  238. data/lib/yard/tags/default_tag.rb +13 -13
  239. data/lib/yard/tags/directives.rb +616 -616
  240. data/lib/yard/tags/library.rb +633 -633
  241. data/lib/yard/tags/option_tag.rb +13 -13
  242. data/lib/yard/tags/overload_tag.rb +71 -71
  243. data/lib/yard/tags/ref_tag.rb +8 -8
  244. data/lib/yard/tags/ref_tag_list.rb +28 -28
  245. data/lib/yard/tags/tag.rb +71 -71
  246. data/lib/yard/tags/tag_format_error.rb +7 -7
  247. data/lib/yard/tags/types_explainer.rb +162 -162
  248. data/lib/yard/templates/engine.rb +186 -186
  249. data/lib/yard/templates/erb_cache.rb +23 -23
  250. data/lib/yard/templates/helpers/base_helper.rb +215 -215
  251. data/lib/yard/templates/helpers/filter_helper.rb +27 -27
  252. data/lib/yard/templates/helpers/html_helper.rb +663 -646
  253. data/lib/yard/templates/helpers/html_syntax_highlight_helper.rb +78 -78
  254. data/lib/yard/templates/helpers/markup/rdoc_markdown.rb +23 -23
  255. data/lib/yard/templates/helpers/markup/rdoc_markup.rb +109 -109
  256. data/lib/yard/templates/helpers/markup_helper.rb +172 -172
  257. data/lib/yard/templates/helpers/method_helper.rb +75 -75
  258. data/lib/yard/templates/helpers/module_helper.rb +21 -21
  259. data/lib/yard/templates/helpers/text_helper.rb +112 -112
  260. data/lib/yard/templates/helpers/uml_helper.rb +47 -47
  261. data/lib/yard/templates/section.rb +105 -105
  262. data/lib/yard/templates/template.rb +418 -418
  263. data/lib/yard/templates/template_options.rb +92 -92
  264. data/lib/yard/verifier.rb +151 -151
  265. data/lib/yard/version.rb +6 -6
  266. data/po/ja.po +31108 -0
  267. data/samus.json +80 -0
  268. data/spec/cli/command_parser_spec.rb +43 -43
  269. data/spec/cli/command_spec.rb +36 -36
  270. data/spec/cli/config_spec.rb +148 -148
  271. data/spec/cli/diff_spec.rb +254 -254
  272. data/spec/cli/display_spec.rb +30 -30
  273. data/spec/cli/gems_spec.rb +81 -81
  274. data/spec/cli/graph_spec.rb +18 -18
  275. data/spec/cli/help_spec.rb +22 -22
  276. data/spec/cli/i18n_spec.rb +107 -107
  277. data/spec/cli/list_spec.rb +8 -8
  278. data/spec/cli/markup_types_spec.rb +22 -22
  279. data/spec/cli/server_spec.rb +324 -324
  280. data/spec/cli/stats_spec.rb +96 -96
  281. data/spec/cli/yard_on_yard_spec.rb +38 -38
  282. data/spec/cli/yardoc_spec.rb +896 -862
  283. data/spec/cli/yri_spec.rb +101 -101
  284. data/spec/code_objects/base_spec.rb +485 -470
  285. data/spec/code_objects/class_object_spec.rb +226 -226
  286. data/spec/code_objects/code_object_list_spec.rb +36 -36
  287. data/spec/code_objects/constants_spec.rb +116 -116
  288. data/spec/code_objects/extra_file_object_spec.rb +161 -160
  289. data/spec/code_objects/macro_object_spec.rb +150 -150
  290. data/spec/code_objects/method_object_spec.rb +184 -184
  291. data/spec/code_objects/module_object_spec.rb +142 -142
  292. data/spec/code_objects/namespace_object_spec.rb +171 -171
  293. data/spec/code_objects/proxy_spec.rb +147 -141
  294. data/spec/code_objects/spec_helper.rb +3 -3
  295. data/spec/config_spec.rb +171 -171
  296. data/spec/core_ext/array_spec.rb +13 -13
  297. data/spec/core_ext/file_spec.rb +72 -72
  298. data/spec/core_ext/hash_spec.rb +14 -14
  299. data/spec/core_ext/insertion_spec.rb +37 -37
  300. data/spec/core_ext/module_spec.rb +9 -15
  301. data/spec/core_ext/string_spec.rb +42 -42
  302. data/spec/core_ext/symbol_hash_spec.rb +89 -89
  303. data/spec/docstring_parser_spec.rb +280 -280
  304. data/spec/docstring_spec.rb +373 -373
  305. data/spec/handlers/alias_handler_spec.rb +82 -82
  306. data/spec/handlers/attribute_handler_spec.rb +96 -96
  307. data/spec/handlers/base_spec.rb +216 -216
  308. data/spec/handlers/c/alias_handler_spec.rb +34 -34
  309. data/spec/handlers/c/attribute_handler_spec.rb +41 -41
  310. data/spec/handlers/c/class_handler_spec.rb +78 -78
  311. data/spec/handlers/c/constant_handler_spec.rb +71 -71
  312. data/spec/handlers/c/init_handler_spec.rb +48 -48
  313. data/spec/handlers/c/method_handler_spec.rb +327 -325
  314. data/spec/handlers/c/mixin_handler_spec.rb +44 -44
  315. data/spec/handlers/c/module_handler_spec.rb +71 -71
  316. data/spec/handlers/c/override_comment_handler_spec.rb +47 -47
  317. data/spec/handlers/c/path_handler_spec.rb +36 -36
  318. data/spec/handlers/c/spec_helper.rb +23 -23
  319. data/spec/handlers/c/struct_handler_spec.rb +16 -16
  320. data/spec/handlers/class_condition_handler_spec.rb +87 -87
  321. data/spec/handlers/class_handler_spec.rb +247 -247
  322. data/spec/handlers/class_method_handler_shared_examples.rb +133 -133
  323. data/spec/handlers/class_variable_handler_spec.rb +12 -12
  324. data/spec/handlers/constant_handler_spec.rb +112 -112
  325. data/spec/handlers/decorator_handler_methods_spec.rb +393 -393
  326. data/spec/handlers/dsl_handler_spec.rb +226 -219
  327. data/spec/handlers/examples/alias_handler_001.rb.txt +45 -45
  328. data/spec/handlers/examples/attribute_handler_001.rb.txt +31 -31
  329. data/spec/handlers/examples/class_condition_handler_001.rb.txt +68 -68
  330. data/spec/handlers/examples/class_handler_001.rb.txt +120 -120
  331. data/spec/handlers/examples/class_variable_handler_001.rb.txt +9 -9
  332. data/spec/handlers/examples/constant_handler_001.rb.txt +35 -35
  333. data/spec/handlers/examples/dsl_handler_001.rb.txt +156 -154
  334. data/spec/handlers/examples/exception_handler_001.rb.txt +58 -58
  335. data/spec/handlers/examples/extend_handler_001.rb.txt +19 -16
  336. data/spec/handlers/examples/method_condition_handler_001.rb.txt +9 -9
  337. data/spec/handlers/examples/method_handler_001.rb.txt +128 -128
  338. data/spec/handlers/examples/mixin_handler_001.rb.txt +40 -37
  339. data/spec/handlers/examples/module_handler_001.rb.txt +29 -29
  340. data/spec/handlers/examples/private_constant_handler_001.rb.txt +8 -8
  341. data/spec/handlers/examples/process_handler_001.rb.txt +11 -11
  342. data/spec/handlers/examples/visibility_handler_001.rb.txt +35 -35
  343. data/spec/handlers/examples/yield_handler_001.rb.txt +54 -54
  344. data/spec/handlers/exception_handler_spec.rb +49 -49
  345. data/spec/handlers/extend_handler_spec.rb +28 -24
  346. data/spec/handlers/legacy_base_spec.rb +128 -128
  347. data/spec/handlers/method_condition_handler_spec.rb +15 -15
  348. data/spec/handlers/method_handler_spec.rb +214 -190
  349. data/spec/handlers/mixin_handler_spec.rb +60 -56
  350. data/spec/handlers/module_function_handler_spec.rb +106 -106
  351. data/spec/handlers/module_handler_spec.rb +35 -35
  352. data/spec/handlers/private_class_method_handler_spec.rb +11 -11
  353. data/spec/handlers/private_constant_handler_spec.rb +25 -25
  354. data/spec/handlers/processor_spec.rb +35 -35
  355. data/spec/handlers/public_class_method_handler_spec.rb +11 -11
  356. data/spec/handlers/ruby/base_spec.rb +95 -95
  357. data/spec/handlers/ruby/legacy/base_spec.rb +84 -84
  358. data/spec/handlers/spec_helper.rb +33 -33
  359. data/spec/handlers/visibility_handler_spec.rb +44 -44
  360. data/spec/handlers/yield_handler_spec.rb +52 -52
  361. data/spec/i18n/locale_spec.rb +81 -81
  362. data/spec/i18n/message_spec.rb +52 -52
  363. data/spec/i18n/messages_spec.rb +67 -67
  364. data/spec/i18n/pot_generator_spec.rb +295 -295
  365. data/spec/i18n/text_spec.rb +184 -184
  366. data/spec/logging_spec.rb +44 -44
  367. data/spec/options_spec.rb +171 -171
  368. data/spec/parser/base_spec.rb +24 -24
  369. data/spec/parser/c_parser_spec.rb +236 -236
  370. data/spec/parser/examples/array.c.txt +6267 -6267
  371. data/spec/parser/examples/example1.rb.txt +7 -7
  372. data/spec/parser/examples/extrafile.c.txt +8 -8
  373. data/spec/parser/examples/file.c.txt +28 -28
  374. data/spec/parser/examples/multifile.c.txt +22 -22
  375. data/spec/parser/examples/namespace.cpp.txt +68 -68
  376. data/spec/parser/examples/override.c.txt +424 -424
  377. data/spec/parser/examples/parse_in_order_001.rb.txt +2 -2
  378. data/spec/parser/examples/parse_in_order_002.rb.txt +1 -1
  379. data/spec/parser/examples/tag_handler_001.rb.txt +7 -7
  380. data/spec/parser/ruby/ast_node_spec.rb +33 -33
  381. data/spec/parser/ruby/legacy/statement_list_spec.rb +299 -299
  382. data/spec/parser/ruby/legacy/token_list_spec.rb +79 -79
  383. data/spec/parser/ruby/ruby_parser_spec.rb +508 -508
  384. data/spec/parser/ruby/token_resolver_spec.rb +165 -165
  385. data/spec/parser/source_parser_spec.rb +727 -727
  386. data/spec/parser/tag_parsing_spec.rb +17 -17
  387. data/spec/rake/yardoc_task_spec.rb +118 -118
  388. data/spec/registry_spec.rb +463 -463
  389. data/spec/registry_store_spec.rb +327 -316
  390. data/spec/rubygems/doc_manager_spec.rb +112 -112
  391. data/spec/serializers/data/serialized_yardoc/checksums +1 -1
  392. data/spec/serializers/file_system_serializer_spec.rb +145 -145
  393. data/spec/serializers/spec_helper.rb +2 -2
  394. data/spec/serializers/yardoc_serializer_spec.rb +78 -78
  395. data/spec/server/adapter_spec.rb +39 -39
  396. data/spec/server/commands/base_spec.rb +91 -91
  397. data/spec/server/commands/library_command_spec.rb +39 -39
  398. data/spec/server/doc_server_helper_spec.rb +72 -72
  399. data/spec/server/doc_server_serializer_spec.rb +60 -60
  400. data/spec/server/rack_adapter_spec.rb +21 -21
  401. data/spec/server/router_spec.rb +123 -123
  402. data/spec/server/spec_helper.rb +22 -22
  403. data/spec/server/static_caching_spec.rb +47 -47
  404. data/spec/server/webrick_servlet_spec.rb +20 -20
  405. data/spec/server_spec.rb +19 -19
  406. data/spec/spec_helper.rb +212 -212
  407. data/spec/tags/default_factory_spec.rb +168 -168
  408. data/spec/tags/default_tag_spec.rb +11 -11
  409. data/spec/tags/directives_spec.rb +463 -463
  410. data/spec/tags/library_spec.rb +48 -48
  411. data/spec/tags/overload_tag_spec.rb +53 -53
  412. data/spec/tags/ref_tag_list_spec.rb +53 -53
  413. data/spec/tags/types_explainer_spec.rb +203 -203
  414. data/spec/templates/class_spec.rb +45 -45
  415. data/spec/templates/constant_spec.rb +41 -41
  416. data/spec/templates/engine_spec.rb +131 -131
  417. data/spec/templates/examples/class001.html +308 -308
  418. data/spec/templates/examples/class001.txt +36 -36
  419. data/spec/templates/examples/class002.html +39 -39
  420. data/spec/templates/examples/constant001.txt +24 -24
  421. data/spec/templates/examples/constant002.txt +6 -6
  422. data/spec/templates/examples/constant003.txt +10 -10
  423. data/spec/templates/examples/method001.html +137 -137
  424. data/spec/templates/examples/method001.txt +35 -35
  425. data/spec/templates/examples/method002.html +91 -91
  426. data/spec/templates/examples/method002.txt +20 -20
  427. data/spec/templates/examples/method003.html +165 -165
  428. data/spec/templates/examples/method003.txt +45 -45
  429. data/spec/templates/examples/method004.html +48 -48
  430. data/spec/templates/examples/method004.txt +10 -10
  431. data/spec/templates/examples/method005.html +105 -105
  432. data/spec/templates/examples/method005.txt +33 -33
  433. data/spec/templates/examples/method006.html +107 -107
  434. data/spec/templates/examples/method006.txt +20 -20
  435. data/spec/templates/examples/module001.dot +33 -33
  436. data/spec/templates/examples/module001.html +833 -833
  437. data/spec/templates/examples/module001.txt +33 -33
  438. data/spec/templates/examples/module002.html +341 -341
  439. data/spec/templates/examples/module003.html +202 -202
  440. data/spec/templates/examples/module004.html +394 -394
  441. data/spec/templates/examples/module005.html +81 -81
  442. data/spec/templates/examples/tag001.txt +82 -82
  443. data/spec/templates/helpers/base_helper_spec.rb +171 -171
  444. data/spec/templates/helpers/html_helper_spec.rb +687 -668
  445. data/spec/templates/helpers/html_syntax_highlight_helper_spec.rb +65 -65
  446. data/spec/templates/helpers/markup/rdoc_markup_spec.rb +84 -84
  447. data/spec/templates/helpers/markup_helper_spec.rb +136 -136
  448. data/spec/templates/helpers/method_helper_spec.rb +107 -107
  449. data/spec/templates/helpers/module_helper_spec.rb +35 -35
  450. data/spec/templates/helpers/shared_signature_examples.rb +126 -126
  451. data/spec/templates/helpers/text_helper_spec.rb +65 -65
  452. data/spec/templates/markup_processor_integrations/asciidoctor_spec.rb +60 -0
  453. data/spec/templates/markup_processor_integrations/integration_spec_helper.rb +46 -0
  454. data/spec/templates/markup_processor_integrations/rdoc_markdown_spec.rb +59 -0
  455. data/spec/templates/markup_processor_integrations/rdoc_spec.rb +39 -0
  456. data/spec/templates/markup_processor_integrations/redcarpet_spec.rb +59 -0
  457. data/spec/templates/markup_processor_integrations/redcloth_spec.rb +48 -0
  458. data/spec/templates/method_spec.rb +118 -118
  459. data/spec/templates/module_spec.rb +203 -203
  460. data/spec/templates/onefile_spec.rb +66 -66
  461. data/spec/templates/section_spec.rb +144 -144
  462. data/spec/templates/spec_helper.rb +76 -76
  463. data/spec/templates/tag_spec.rb +52 -52
  464. data/spec/templates/template_spec.rb +410 -410
  465. data/spec/verifier_spec.rb +106 -106
  466. data/templates/default/class/dot/setup.rb +7 -7
  467. data/templates/default/class/dot/superklass.erb +2 -2
  468. data/templates/default/class/html/constructor_details.erb +8 -8
  469. data/templates/default/class/html/setup.rb +2 -2
  470. data/templates/default/class/html/subclasses.erb +4 -4
  471. data/templates/default/class/setup.rb +36 -36
  472. data/templates/default/class/text/setup.rb +12 -12
  473. data/templates/default/class/text/subclasses.erb +5 -5
  474. data/templates/default/constant/text/header.erb +11 -11
  475. data/templates/default/constant/text/setup.rb +4 -4
  476. data/templates/default/docstring/html/abstract.erb +4 -4
  477. data/templates/default/docstring/html/deprecated.erb +1 -1
  478. data/templates/default/docstring/html/index.erb +5 -5
  479. data/templates/default/docstring/html/note.erb +6 -6
  480. data/templates/default/docstring/html/private.erb +4 -4
  481. data/templates/default/docstring/html/text.erb +1 -1
  482. data/templates/default/docstring/html/todo.erb +6 -6
  483. data/templates/default/docstring/setup.rb +52 -52
  484. data/templates/default/docstring/text/abstract.erb +2 -2
  485. data/templates/default/docstring/text/deprecated.erb +2 -2
  486. data/templates/default/docstring/text/index.erb +2 -2
  487. data/templates/default/docstring/text/note.erb +3 -3
  488. data/templates/default/docstring/text/private.erb +2 -2
  489. data/templates/default/docstring/text/text.erb +1 -1
  490. data/templates/default/docstring/text/todo.erb +3 -3
  491. data/templates/default/fulldoc/html/css/full_list.css +58 -58
  492. data/templates/default/fulldoc/html/css/style.css +496 -496
  493. data/templates/default/fulldoc/html/frames.erb +17 -17
  494. data/templates/default/fulldoc/html/full_list.erb +37 -37
  495. data/templates/default/fulldoc/html/full_list_class.erb +2 -2
  496. data/templates/default/fulldoc/html/full_list_file.erb +7 -7
  497. data/templates/default/fulldoc/html/full_list_method.erb +10 -10
  498. data/templates/default/fulldoc/html/js/app.js +314 -292
  499. data/templates/default/fulldoc/html/js/full_list.js +216 -216
  500. data/templates/default/fulldoc/html/js/jquery.js +3 -3
  501. data/templates/default/fulldoc/html/setup.rb +241 -241
  502. data/templates/default/layout/dot/header.erb +5 -5
  503. data/templates/default/layout/dot/setup.rb +15 -15
  504. data/templates/default/layout/html/breadcrumb.erb +11 -11
  505. data/templates/default/layout/html/files.erb +11 -11
  506. data/templates/default/layout/html/footer.erb +5 -5
  507. data/templates/default/layout/html/headers.erb +15 -15
  508. data/templates/default/layout/html/index.erb +2 -2
  509. data/templates/default/layout/html/layout.erb +23 -23
  510. data/templates/default/layout/html/listing.erb +4 -4
  511. data/templates/default/layout/html/objects.erb +32 -32
  512. data/templates/default/layout/html/script_setup.erb +4 -4
  513. data/templates/default/layout/html/search.erb +12 -12
  514. data/templates/default/layout/html/setup.rb +89 -89
  515. data/templates/default/method/html/header.erb +16 -16
  516. data/templates/default/method/setup.rb +4 -4
  517. data/templates/default/method_details/html/header.erb +2 -2
  518. data/templates/default/method_details/html/method_signature.erb +24 -24
  519. data/templates/default/method_details/html/source.erb +9 -9
  520. data/templates/default/method_details/setup.rb +11 -11
  521. data/templates/default/method_details/text/header.erb +10 -10
  522. data/templates/default/method_details/text/method_signature.erb +12 -12
  523. data/templates/default/method_details/text/setup.rb +11 -11
  524. data/templates/default/module/dot/child.erb +1 -1
  525. data/templates/default/module/dot/dependencies.erb +2 -2
  526. data/templates/default/module/dot/header.erb +6 -6
  527. data/templates/default/module/dot/info.erb +13 -13
  528. data/templates/default/module/dot/setup.rb +15 -15
  529. data/templates/default/module/html/attribute_details.erb +10 -10
  530. data/templates/default/module/html/attribute_summary.erb +8 -8
  531. data/templates/default/module/html/box_info.erb +43 -43
  532. data/templates/default/module/html/children.erb +8 -8
  533. data/templates/default/module/html/constant_summary.erb +17 -17
  534. data/templates/default/module/html/defines.erb +2 -2
  535. data/templates/default/module/html/header.erb +5 -5
  536. data/templates/default/module/html/inherited_attributes.erb +14 -14
  537. data/templates/default/module/html/inherited_constants.erb +8 -8
  538. data/templates/default/module/html/inherited_methods.erb +18 -18
  539. data/templates/default/module/html/item_summary.erb +40 -40
  540. data/templates/default/module/html/method_details_list.erb +9 -9
  541. data/templates/default/module/html/method_summary.erb +13 -13
  542. data/templates/default/module/html/methodmissing.erb +12 -12
  543. data/templates/default/module/setup.rb +167 -167
  544. data/templates/default/module/text/children.erb +9 -9
  545. data/templates/default/module/text/class_meths_list.erb +7 -7
  546. data/templates/default/module/text/extends.erb +7 -7
  547. data/templates/default/module/text/header.erb +7 -7
  548. data/templates/default/module/text/includes.erb +7 -7
  549. data/templates/default/module/text/instance_meths_list.erb +7 -7
  550. data/templates/default/module/text/setup.rb +13 -13
  551. data/templates/default/onefile/html/files.erb +4 -4
  552. data/templates/default/onefile/html/headers.erb +6 -6
  553. data/templates/default/onefile/html/layout.erb +17 -17
  554. data/templates/default/onefile/html/readme.erb +2 -2
  555. data/templates/default/onefile/html/setup.rb +62 -62
  556. data/templates/default/root/dot/child.erb +2 -2
  557. data/templates/default/root/dot/setup.rb +6 -6
  558. data/templates/default/root/html/setup.rb +2 -2
  559. data/templates/default/tags/html/example.erb +10 -10
  560. data/templates/default/tags/html/index.erb +2 -2
  561. data/templates/default/tags/html/option.erb +24 -24
  562. data/templates/default/tags/html/overload.erb +13 -13
  563. data/templates/default/tags/html/see.erb +7 -7
  564. data/templates/default/tags/html/tag.erb +20 -20
  565. data/templates/default/tags/setup.rb +57 -57
  566. data/templates/default/tags/text/example.erb +12 -12
  567. data/templates/default/tags/text/index.erb +1 -1
  568. data/templates/default/tags/text/option.erb +20 -20
  569. data/templates/default/tags/text/overload.erb +19 -19
  570. data/templates/default/tags/text/see.erb +11 -11
  571. data/templates/default/tags/text/tag.erb +13 -13
  572. data/templates/guide/class/html/setup.rb +2 -2
  573. data/templates/guide/docstring/html/setup.rb +2 -2
  574. data/templates/guide/fulldoc/html/css/style.css +108 -108
  575. data/templates/guide/fulldoc/html/js/app.js +33 -33
  576. data/templates/guide/fulldoc/html/setup.rb +74 -74
  577. data/templates/guide/layout/html/layout.erb +81 -81
  578. data/templates/guide/layout/html/setup.rb +25 -25
  579. data/templates/guide/method/html/header.erb +17 -17
  580. data/templates/guide/method/html/setup.rb +22 -22
  581. data/templates/guide/module/html/header.erb +6 -6
  582. data/templates/guide/module/html/method_list.erb +4 -4
  583. data/templates/guide/module/html/setup.rb +27 -27
  584. data/templates/guide/onefile/html/files.erb +4 -4
  585. data/templates/guide/onefile/html/setup.rb +6 -6
  586. data/templates/guide/onefile/html/toc.erb +3 -3
  587. data/templates/guide/tags/html/setup.rb +9 -9
  588. data/yard.gemspec +24 -43
  589. metadata +28 -21
  590. data/spec/examples.txt +0 -1875
@@ -1,19 +1,19 @@
1
- # frozen_string_literal: true
2
- module YARD
3
- module CodeObjects
4
- # Represents the root namespace object (the invisible Ruby module that
5
- # holds all top level modules, class and other objects).
6
- class RootObject < ModuleObject
7
- def path; @path ||= "" end
8
- def inspect; @inspect ||= "#<yardoc root>" end
9
- def root?; true end
10
- def title; 'Top Level Namespace' end
11
-
12
- def equal?(other)
13
- other == :root ? true : super(other)
14
- end
15
-
16
- def hash; :root.hash end
17
- end
18
- end
19
- end
1
+ # frozen_string_literal: true
2
+ module YARD
3
+ module CodeObjects
4
+ # Represents the root namespace object (the invisible Ruby module that
5
+ # holds all top level modules, class and other objects).
6
+ class RootObject < ModuleObject
7
+ def path; @path ||= "" end
8
+ def inspect; @inspect ||= "#<yardoc root>" end
9
+ def root?; true end
10
+ def title; 'Top Level Namespace' end
11
+
12
+ def equal?(other)
13
+ other == :root ? true : super(other)
14
+ end
15
+
16
+ def hash; :root.hash end
17
+ end
18
+ end
19
+ end
data/lib/yard/config.rb CHANGED
@@ -1,270 +1,270 @@
1
- # frozen_string_literal: true
2
- module YARD
3
- # This class maintains all system-wide configuration for YARD and handles
4
- # the loading of plugins. To access options call {options}, and to load
5
- # a plugin use {load_plugin}. All other public methods are used by YARD
6
- # during load time.
7
- #
8
- # == User Configuration Files
9
- #
10
- # Persistent user configuration files can be stored in the file
11
- # +~/.yard/config+, which is read when YARD first loads. The file should
12
- # be formatted as YAML, and should contain a map of keys and values.
13
- #
14
- # Although you can specify any key-value mapping in the configuration file,
15
- # YARD defines special keys specified in {DEFAULT_CONFIG_OPTIONS}.
16
- #
17
- # An example of a configuration file is listed below:
18
- #
19
- # !!!yaml
20
- # load_plugins: true # Auto-load plugins when YARD starts
21
- # ignored_plugins:
22
- # - yard-broken
23
- # - broken2 # yard- prefix not necessary
24
- # autoload_plugins:
25
- # - yard-rspec
26
- #
27
- # == Automatic Loading of Plugins
28
- #
29
- # YARD 0.6.2 will no longer automatically load all plugins by default. This
30
- # option can be reset by setting 'load_plugins' to true in the configuration
31
- # file. In addition, you can specify a set of specific plugins to load on
32
- # load through the 'autoload_plugins' list setting. This setting is
33
- # independent of the 'load_plugins' value and will always be processed.
34
- #
35
- # == Ignored Plugins File
36
- #
37
- # YARD 0.5 and below used a +~/.yard/ignored_plugins+ file to specify
38
- # plugins to be ignored at load time. Ignored plugins in 0.6.2 and above
39
- # should now be specified in the main configuration file, though YARD
40
- # will support the +ignored_plugins+ file until 0.7.x.
41
- #
42
- # == Safe Mode
43
- #
44
- # YARD supports running in safe-mode. By doing this, it will avoid executing
45
- # any user code such as require files or queries. Plugins will still be
46
- # loaded with safe mode on, because plugins are properly namespaced with
47
- # a 'yard-' prefix, must be installed as a gem, and therefore cannot be
48
- # touched by the user. To specify safe mode, use the +safe_mode+ key.
49
- #
50
- # == Plugin Specific Configuration
51
- #
52
- # Additional settings can be defined within the configuration file
53
- # specifically to provide configuration for a plugin. A plugin that utilizes
54
- # the YARD configuration is strongly encouraged to utilize namespacing of
55
- # their configuration content.
56
- #
57
- # !!!yaml
58
- # load_plugins: true # Auto-load plugins when YARD starts
59
- # ignored_plugins:
60
- # - yard-broken
61
- # - broken2 # yard- prefix not necessary
62
- # autoload_plugins:
63
- # - yard-rspec
64
- # # Plugin Specific Configuration
65
- # yard-sample-plugin:
66
- # show-results-inline: true
67
- #
68
- # As the configuration is available system wide, it can be
69
- # accessed within the plugin code.
70
- #
71
- #
72
- # if YARD::Config.options['yard-sample-plugin'] and
73
- # YARD::Config.options['yard-sample-plugin']['show-results-inline']
74
- # # ... perform the action that places the results inline ...
75
- # else
76
- # # ... do the default behavior of not showing the results inline ...
77
- # end
78
- #
79
- # When accessing the configuration, be aware that this file is user managed
80
- # so configuration keys and values may not be present. Make no assumptions and
81
- # instead ensure that you check for the existence of keys before proceeding to
82
- # retrieve values.
83
- #
84
- # @since 0.6.2
85
- # @see options
86
- class Config
87
- class << self
88
- # The system-wide configuration options for YARD
89
- # @return [SymbolHash] a map a key-value pair settings.
90
- # @see DEFAULT_CONFIG_OPTIONS
91
- attr_accessor :options
92
- end
93
-
94
- # The location where YARD stores user-specific settings
95
- CONFIG_DIR = File.expand_path('~/.yard')
96
-
97
- # The main configuration YAML file.
98
- CONFIG_FILE = File.join(CONFIG_DIR, 'config')
99
-
100
- # File listing all ignored plugins
101
- # @deprecated Set `ignored_plugins` in the {CONFIG_FILE} instead.
102
- IGNORED_PLUGINS = File.join(CONFIG_DIR, 'ignored_plugins')
103
-
104
- # Default configuration options
105
- DEFAULT_CONFIG_OPTIONS = {
106
- :load_plugins => false, # Whether to load plugins automatically with YARD
107
- :ignored_plugins => [], # A list of ignored plugins by name
108
- :autoload_plugins => [], # A list of plugins to be automatically loaded
109
- :safe_mode => false # Does not execute or eval any user-level code
110
- }
111
-
112
- # The prefix used for YARD plugins. Name your gem with this prefix
113
- # to allow it to be used as a plugin.
114
- YARD_PLUGIN_PREFIX = /^yard[-_]/
115
-
116
- # Loads settings from {CONFIG_FILE}. This method is called by YARD at
117
- # load time and should not be called by the user.
118
- # @return [void]
119
- def self.load
120
- self.options = SymbolHash.new(false)
121
- options.update(DEFAULT_CONFIG_OPTIONS)
122
- options.update(read_config_file)
123
- load_commandline_safemode
124
- add_ignored_plugins_file
125
- translate_plugin_names
126
- load_plugins
127
- rescue => e
128
- log.error "Invalid configuration file, using default options."
129
- log.backtrace(e)
130
- options.update(DEFAULT_CONFIG_OPTIONS)
131
- end
132
-
133
- # Saves settings to {CONFIG_FILE}.
134
- # @return [void]
135
- def self.save
136
- require 'yaml'
137
- Dir.mkdir(CONFIG_DIR) unless File.directory?(CONFIG_DIR)
138
- File.open(CONFIG_FILE, 'w') {|f| f.write(YAML.dump(options)) }
139
- end
140
-
141
- # Loads gems that match the name 'yard-*' (recommended) or 'yard_*' except
142
- # those listed in +~/.yard/ignored_plugins+. This is called immediately
143
- # after YARD is loaded to allow plugin support.
144
- #
145
- # @return [Boolean] true if all plugins loaded successfully, false otherwise.
146
- def self.load_plugins
147
- load_gem_plugins &&
148
- load_autoload_plugins &&
149
- load_commandline_plugins ? true : false
150
- end
151
-
152
- # Loads an individual plugin by name. It is not necessary to include the
153
- # +yard-+ plugin prefix here.
154
- #
155
- # @param [String] name the name of the plugin (with or without +yard-+ prefix)
156
- # @return [Boolean] whether the plugin was successfully loaded
157
- def self.load_plugin(name)
158
- name = translate_plugin_name(name)
159
- return false if options[:ignored_plugins].include?(name)
160
- return false if name =~ /^yard-doc-/
161
- log.debug "Loading plugin '#{name}'..."
162
- require name
163
- true
164
- rescue LoadError => e
165
- load_plugin_failed(name, e)
166
- end
167
-
168
- # Load gem plugins if :load_plugins is true
169
- def self.load_gem_plugins
170
- return true unless options[:load_plugins]
171
- require 'rubygems'
172
- result = true
173
- YARD::GemIndex.each do |gem|
174
- begin
175
- next true unless gem.name =~ YARD_PLUGIN_PREFIX
176
- load_plugin(gem.name)
177
- rescue Gem::LoadError => e
178
- tmp = load_plugin_failed(gem.name, e)
179
- result = tmp unless tmp
180
- end
181
- end
182
- result
183
- rescue LoadError
184
- log.debug "RubyGems is not present, skipping plugin loading"
185
- false
186
- end
187
-
188
- # Load plugins set in :autoload_plugins
189
- def self.load_autoload_plugins
190
- options[:autoload_plugins].each {|name| load_plugin(name) }
191
- end
192
-
193
- # Load plugins from {arguments}
194
- def self.load_commandline_plugins
195
- with_yardopts do
196
- arguments.each_with_index do |arg, i|
197
- next unless arg == '--plugin'
198
- load_plugin(arguments[i + 1])
199
- end
200
- end
201
- end
202
-
203
- # Check for command-line safe_mode switch in {arguments}
204
- def self.load_commandline_safemode
205
- with_yardopts do
206
- arguments.each_with_index do |arg, _i|
207
- options[:safe_mode] = true if arg == '--safe'
208
- end
209
- end
210
- end
211
-
212
- # Print a warning if the plugin failed to load
213
- # @return [false]
214
- def self.load_plugin_failed(name, exception)
215
- log.error "Error loading plugin '#{name}'"
216
- log.backtrace(exception) if $DEBUG
217
- false
218
- end
219
-
220
- # Legacy support for {IGNORED_PLUGINS}
221
- def self.add_ignored_plugins_file
222
- if File.file?(IGNORED_PLUGINS)
223
- options[:ignored_plugins] += File.read(IGNORED_PLUGINS).split(/\s+/)
224
- end
225
- end
226
-
227
- # Translates plugin names to add yard- prefix.
228
- def self.translate_plugin_names
229
- options[:ignored_plugins].map! {|name| translate_plugin_name(name) }
230
- options[:autoload_plugins].map! {|name| translate_plugin_name(name) }
231
- end
232
-
233
- # Loads the YAML configuration file into memory
234
- # @return [Hash] the contents of the YAML file from disk
235
- # @see CONFIG_FILE
236
- def self.read_config_file
237
- if File.file?(CONFIG_FILE)
238
- require 'yaml'
239
- YAML.load_file(CONFIG_FILE)
240
- else
241
- {}
242
- end
243
- end
244
-
245
- # Sanitizes and normalizes a plugin name to include the 'yard-' prefix.
246
- # @param [String] name the plugin name
247
- # @return [String] the sanitized and normalized plugin name.
248
- def self.translate_plugin_name(name)
249
- name = name.delete('/') # Security sanitization
250
- name = "yard-" + name unless name =~ YARD_PLUGIN_PREFIX
251
- name
252
- end
253
-
254
- # Temporarily loads .yardopts file into @yardopts
255
- def self.with_yardopts
256
- yfile = CLI::Yardoc::DEFAULT_YARDOPTS_FILE
257
- @yardopts = File.file?(yfile) ? File.read_binary(yfile).shell_split : []
258
- result = yield
259
- @yardopts = nil
260
- result
261
- end
262
-
263
- # @return [Array<String>] arguments from commandline and yardopts file
264
- def self.arguments
265
- ARGV + @yardopts
266
- end
267
- end
268
-
269
- Config.options = Config::DEFAULT_CONFIG_OPTIONS
270
- end
1
+ # frozen_string_literal: true
2
+ module YARD
3
+ # This class maintains all system-wide configuration for YARD and handles
4
+ # the loading of plugins. To access options call {options}, and to load
5
+ # a plugin use {load_plugin}. All other public methods are used by YARD
6
+ # during load time.
7
+ #
8
+ # == User Configuration Files
9
+ #
10
+ # Persistent user configuration files can be stored in the file
11
+ # +~/.yard/config+, which is read when YARD first loads. The file should
12
+ # be formatted as YAML, and should contain a map of keys and values.
13
+ #
14
+ # Although you can specify any key-value mapping in the configuration file,
15
+ # YARD defines special keys specified in {DEFAULT_CONFIG_OPTIONS}.
16
+ #
17
+ # An example of a configuration file is listed below:
18
+ #
19
+ # !!!yaml
20
+ # load_plugins: true # Auto-load plugins when YARD starts
21
+ # ignored_plugins:
22
+ # - yard-broken
23
+ # - broken2 # yard- prefix not necessary
24
+ # autoload_plugins:
25
+ # - yard-rspec
26
+ #
27
+ # == Automatic Loading of Plugins
28
+ #
29
+ # YARD 0.6.2 will no longer automatically load all plugins by default. This
30
+ # option can be reset by setting 'load_plugins' to true in the configuration
31
+ # file. In addition, you can specify a set of specific plugins to load on
32
+ # load through the 'autoload_plugins' list setting. This setting is
33
+ # independent of the 'load_plugins' value and will always be processed.
34
+ #
35
+ # == Ignored Plugins File
36
+ #
37
+ # YARD 0.5 and below used a +~/.yard/ignored_plugins+ file to specify
38
+ # plugins to be ignored at load time. Ignored plugins in 0.6.2 and above
39
+ # should now be specified in the main configuration file, though YARD
40
+ # will support the +ignored_plugins+ file until 0.7.x.
41
+ #
42
+ # == Safe Mode
43
+ #
44
+ # YARD supports running in safe-mode. By doing this, it will avoid executing
45
+ # any user code such as require files or queries. Plugins will still be
46
+ # loaded with safe mode on, because plugins are properly namespaced with
47
+ # a 'yard-' prefix, must be installed as a gem, and therefore cannot be
48
+ # touched by the user. To specify safe mode, use the +safe_mode+ key.
49
+ #
50
+ # == Plugin Specific Configuration
51
+ #
52
+ # Additional settings can be defined within the configuration file
53
+ # specifically to provide configuration for a plugin. A plugin that utilizes
54
+ # the YARD configuration is strongly encouraged to utilize namespacing of
55
+ # their configuration content.
56
+ #
57
+ # !!!yaml
58
+ # load_plugins: true # Auto-load plugins when YARD starts
59
+ # ignored_plugins:
60
+ # - yard-broken
61
+ # - broken2 # yard- prefix not necessary
62
+ # autoload_plugins:
63
+ # - yard-rspec
64
+ # # Plugin Specific Configuration
65
+ # yard-sample-plugin:
66
+ # show-results-inline: true
67
+ #
68
+ # As the configuration is available system wide, it can be
69
+ # accessed within the plugin code.
70
+ #
71
+ #
72
+ # if YARD::Config.options['yard-sample-plugin'] and
73
+ # YARD::Config.options['yard-sample-plugin']['show-results-inline']
74
+ # # ... perform the action that places the results inline ...
75
+ # else
76
+ # # ... do the default behavior of not showing the results inline ...
77
+ # end
78
+ #
79
+ # When accessing the configuration, be aware that this file is user managed
80
+ # so configuration keys and values may not be present. Make no assumptions and
81
+ # instead ensure that you check for the existence of keys before proceeding to
82
+ # retrieve values.
83
+ #
84
+ # @since 0.6.2
85
+ # @see options
86
+ class Config
87
+ class << self
88
+ # The system-wide configuration options for YARD
89
+ # @return [SymbolHash] a map a key-value pair settings.
90
+ # @see DEFAULT_CONFIG_OPTIONS
91
+ attr_accessor :options
92
+ end
93
+
94
+ # The location where YARD stores user-specific settings
95
+ CONFIG_DIR = File.expand_path('~/.yard')
96
+
97
+ # The main configuration YAML file.
98
+ CONFIG_FILE = File.join(CONFIG_DIR, 'config')
99
+
100
+ # File listing all ignored plugins
101
+ # @deprecated Set `ignored_plugins` in the {CONFIG_FILE} instead.
102
+ IGNORED_PLUGINS = File.join(CONFIG_DIR, 'ignored_plugins')
103
+
104
+ # Default configuration options
105
+ DEFAULT_CONFIG_OPTIONS = {
106
+ :load_plugins => false, # Whether to load plugins automatically with YARD
107
+ :ignored_plugins => [], # A list of ignored plugins by name
108
+ :autoload_plugins => [], # A list of plugins to be automatically loaded
109
+ :safe_mode => false # Does not execute or eval any user-level code
110
+ }
111
+
112
+ # The prefix used for YARD plugins. Name your gem with this prefix
113
+ # to allow it to be used as a plugin.
114
+ YARD_PLUGIN_PREFIX = /^yard[-_]/
115
+
116
+ # Loads settings from {CONFIG_FILE}. This method is called by YARD at
117
+ # load time and should not be called by the user.
118
+ # @return [void]
119
+ def self.load
120
+ self.options = SymbolHash.new(false)
121
+ options.update(DEFAULT_CONFIG_OPTIONS)
122
+ options.update(read_config_file)
123
+ load_commandline_safemode
124
+ add_ignored_plugins_file
125
+ translate_plugin_names
126
+ load_plugins
127
+ rescue => e
128
+ log.error "Invalid configuration file, using default options."
129
+ log.backtrace(e)
130
+ options.update(DEFAULT_CONFIG_OPTIONS)
131
+ end
132
+
133
+ # Saves settings to {CONFIG_FILE}.
134
+ # @return [void]
135
+ def self.save
136
+ require 'yaml'
137
+ Dir.mkdir(CONFIG_DIR) unless File.directory?(CONFIG_DIR)
138
+ File.open(CONFIG_FILE, 'w') {|f| f.write(YAML.dump(options)) }
139
+ end
140
+
141
+ # Loads gems that match the name 'yard-*' (recommended) or 'yard_*' except
142
+ # those listed in +~/.yard/ignored_plugins+. This is called immediately
143
+ # after YARD is loaded to allow plugin support.
144
+ #
145
+ # @return [Boolean] true if all plugins loaded successfully, false otherwise.
146
+ def self.load_plugins
147
+ load_gem_plugins &&
148
+ load_autoload_plugins &&
149
+ load_commandline_plugins ? true : false
150
+ end
151
+
152
+ # Loads an individual plugin by name. It is not necessary to include the
153
+ # +yard-+ plugin prefix here.
154
+ #
155
+ # @param [String] name the name of the plugin (with or without +yard-+ prefix)
156
+ # @return [Boolean] whether the plugin was successfully loaded
157
+ def self.load_plugin(name)
158
+ name = translate_plugin_name(name)
159
+ return false if options[:ignored_plugins].include?(name)
160
+ return false if name =~ /^yard-doc-/
161
+ log.debug "Loading plugin '#{name}'..."
162
+ require name
163
+ true
164
+ rescue LoadError => e
165
+ load_plugin_failed(name, e)
166
+ end
167
+
168
+ # Load gem plugins if :load_plugins is true
169
+ def self.load_gem_plugins
170
+ return true unless options[:load_plugins]
171
+ require 'rubygems'
172
+ result = true
173
+ YARD::GemIndex.each do |gem|
174
+ begin
175
+ next true unless gem.name =~ YARD_PLUGIN_PREFIX
176
+ load_plugin(gem.name)
177
+ rescue Gem::LoadError => e
178
+ tmp = load_plugin_failed(gem.name, e)
179
+ result = tmp unless tmp
180
+ end
181
+ end
182
+ result
183
+ rescue LoadError
184
+ log.debug "RubyGems is not present, skipping plugin loading"
185
+ false
186
+ end
187
+
188
+ # Load plugins set in :autoload_plugins
189
+ def self.load_autoload_plugins
190
+ options[:autoload_plugins].each {|name| load_plugin(name) }
191
+ end
192
+
193
+ # Load plugins from {arguments}
194
+ def self.load_commandline_plugins
195
+ with_yardopts do
196
+ arguments.each_with_index do |arg, i|
197
+ next unless arg == '--plugin'
198
+ load_plugin(arguments[i + 1])
199
+ end
200
+ end
201
+ end
202
+
203
+ # Check for command-line safe_mode switch in {arguments}
204
+ def self.load_commandline_safemode
205
+ with_yardopts do
206
+ arguments.each_with_index do |arg, _i|
207
+ options[:safe_mode] = true if arg == '--safe'
208
+ end
209
+ end
210
+ end
211
+
212
+ # Print a warning if the plugin failed to load
213
+ # @return [false]
214
+ def self.load_plugin_failed(name, exception)
215
+ log.error "Error loading plugin '#{name}'"
216
+ log.backtrace(exception) if $DEBUG
217
+ false
218
+ end
219
+
220
+ # Legacy support for {IGNORED_PLUGINS}
221
+ def self.add_ignored_plugins_file
222
+ if File.file?(IGNORED_PLUGINS)
223
+ options[:ignored_plugins] += File.read(IGNORED_PLUGINS).split(/\s+/)
224
+ end
225
+ end
226
+
227
+ # Translates plugin names to add yard- prefix.
228
+ def self.translate_plugin_names
229
+ options[:ignored_plugins].map! {|name| translate_plugin_name(name) }
230
+ options[:autoload_plugins].map! {|name| translate_plugin_name(name) }
231
+ end
232
+
233
+ # Loads the YAML configuration file into memory
234
+ # @return [Hash] the contents of the YAML file from disk
235
+ # @see CONFIG_FILE
236
+ def self.read_config_file
237
+ if File.file?(CONFIG_FILE)
238
+ require 'yaml'
239
+ YAML.load_file(CONFIG_FILE)
240
+ else
241
+ {}
242
+ end
243
+ end
244
+
245
+ # Sanitizes and normalizes a plugin name to include the 'yard-' prefix.
246
+ # @param [String] name the plugin name
247
+ # @return [String] the sanitized and normalized plugin name.
248
+ def self.translate_plugin_name(name)
249
+ name = name.delete('/') # Security sanitization
250
+ name = "yard-" + name unless name =~ YARD_PLUGIN_PREFIX
251
+ name
252
+ end
253
+
254
+ # Temporarily loads .yardopts file into @yardopts
255
+ def self.with_yardopts
256
+ yfile = CLI::Yardoc::DEFAULT_YARDOPTS_FILE
257
+ @yardopts = File.file?(yfile) ? File.read_binary(yfile).shell_split : []
258
+ result = yield
259
+ @yardopts = nil
260
+ result
261
+ end
262
+
263
+ # @return [Array<String>] arguments from commandline and yardopts file
264
+ def self.arguments
265
+ ARGV + @yardopts
266
+ end
267
+ end
268
+
269
+ Config.options = Config::DEFAULT_CONFIG_OPTIONS
270
+ end