yard 0.7.5 → 0.8.0

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 (339) hide show
  1. data/.yardopts +10 -2
  2. data/ChangeLog +1263 -38
  3. data/LEGAL +5 -5
  4. data/LICENSE +1 -1
  5. data/README.md +91 -82
  6. data/Rakefile +6 -6
  7. data/benchmarks/builtins_vs_eval.rb +1 -1
  8. data/benchmarks/erb_vs_erubis.rb +4 -4
  9. data/benchmarks/generation.rb +5 -5
  10. data/benchmarks/parsing.rb +2 -2
  11. data/benchmarks/registry_store_types.rb +48 -0
  12. data/bin/yard +9 -1
  13. data/bin/yardoc +9 -1
  14. data/bin/yri +10 -2
  15. data/docs/CodeObjects.md +10 -10
  16. data/docs/GettingStarted.md +85 -83
  17. data/docs/Handlers.md +21 -21
  18. data/docs/Overview.md +7 -7
  19. data/docs/Parser.md +30 -30
  20. data/docs/Tags.md +250 -554
  21. data/docs/TagsArch.md +123 -0
  22. data/docs/Templates.md +58 -80
  23. data/docs/WhatsNew.md +378 -133
  24. data/docs/templates/default/fulldoc/html/full_list_tag.erb +7 -0
  25. data/docs/templates/default/fulldoc/html/setup.rb +6 -0
  26. data/docs/templates/default/layout/html/setup.rb +8 -0
  27. data/docs/templates/default/layout/html/tag_list.erb +11 -0
  28. data/docs/templates/default/yard_tags/html/list.erb +18 -0
  29. data/docs/templates/default/yard_tags/html/setup.rb +27 -0
  30. data/docs/templates/plugin.rb +65 -0
  31. data/lib/yard.rb +1 -10
  32. data/lib/yard/autoload.rb +75 -27
  33. data/lib/yard/cli/command.rb +5 -2
  34. data/lib/yard/cli/command_parser.rb +3 -2
  35. data/lib/yard/cli/diff.rb +1 -1
  36. data/lib/yard/cli/i18n.rb +69 -0
  37. data/lib/yard/cli/list.rb +1 -1
  38. data/lib/yard/cli/server.rb +30 -7
  39. data/lib/yard/cli/stats.rb +5 -6
  40. data/lib/yard/cli/yardoc.rb +95 -45
  41. data/lib/yard/cli/yri.rb +24 -3
  42. data/lib/yard/code_objects/base.rb +35 -4
  43. data/lib/yard/code_objects/extra_file_object.rb +1 -1
  44. data/lib/yard/code_objects/macro_object.rb +56 -99
  45. data/lib/yard/code_objects/method_object.rb +44 -6
  46. data/lib/yard/config.rb +18 -8
  47. data/lib/yard/core_ext/symbol_hash.rb +1 -1
  48. data/lib/yard/docstring.rb +45 -85
  49. data/lib/yard/docstring_parser.rb +269 -0
  50. data/lib/yard/handlers/base.rb +129 -118
  51. data/lib/yard/handlers/c/alias_handler.rb +15 -0
  52. data/lib/yard/handlers/c/attribute_handler.rb +13 -0
  53. data/lib/yard/handlers/c/base.rb +110 -0
  54. data/lib/yard/handlers/c/class_handler.rb +26 -0
  55. data/lib/yard/handlers/c/constant_handler.rb +12 -0
  56. data/lib/yard/handlers/c/handler_methods.rb +165 -0
  57. data/lib/yard/handlers/c/init_handler.rb +16 -0
  58. data/lib/yard/handlers/c/method_handler.rb +35 -0
  59. data/lib/yard/handlers/c/mixin_handler.rb +13 -0
  60. data/lib/yard/handlers/c/module_handler.rb +16 -0
  61. data/lib/yard/handlers/c/override_comment_handler.rb +22 -0
  62. data/lib/yard/handlers/c/path_handler.rb +10 -0
  63. data/lib/yard/handlers/c/struct_handler.rb +12 -0
  64. data/lib/yard/handlers/c/symbol_handler.rb +7 -0
  65. data/lib/yard/handlers/processor.rb +41 -30
  66. data/lib/yard/handlers/ruby/alias_handler.rb +0 -2
  67. data/lib/yard/handlers/ruby/attribute_handler.rb +16 -17
  68. data/lib/yard/handlers/ruby/base.rb +10 -6
  69. data/lib/yard/handlers/ruby/comment_handler.rb +9 -0
  70. data/lib/yard/handlers/ruby/dsl_handler.rb +14 -0
  71. data/lib/yard/handlers/ruby/dsl_handler_methods.rb +71 -0
  72. data/lib/yard/handlers/ruby/legacy/alias_handler.rb +0 -3
  73. data/lib/yard/handlers/ruby/legacy/attribute_handler.rb +16 -17
  74. data/lib/yard/handlers/ruby/legacy/base.rb +28 -6
  75. data/lib/yard/handlers/ruby/legacy/comment_handler.rb +9 -0
  76. data/lib/yard/handlers/ruby/legacy/dsl_handler.rb +16 -0
  77. data/lib/yard/handlers/ruby/legacy/method_handler.rb +0 -2
  78. data/lib/yard/handlers/ruby/legacy/mixin_handler.rb +1 -1
  79. data/lib/yard/handlers/ruby/legacy/module_function_handler.rb +18 -0
  80. data/lib/yard/handlers/ruby/method_handler.rb +10 -15
  81. data/lib/yard/handlers/ruby/mixin_handler.rb +1 -1
  82. data/lib/yard/handlers/ruby/module_function_handler.rb +26 -0
  83. data/lib/yard/handlers/ruby/struct_handler_methods.rb +3 -2
  84. data/lib/yard/i18n/pot_generator.rb +281 -0
  85. data/lib/yard/i18n/text.rb +72 -0
  86. data/lib/yard/logging.rb +3 -7
  87. data/lib/yard/options.rb +216 -0
  88. data/lib/yard/parser/c/c_parser.rb +225 -0
  89. data/lib/yard/parser/c/comment_parser.rb +131 -0
  90. data/lib/yard/parser/c/statement.rb +63 -0
  91. data/lib/yard/parser/ruby/ast_node.rb +91 -1
  92. data/lib/yard/parser/ruby/legacy/ruby_parser.rb +1 -0
  93. data/lib/yard/parser/ruby/legacy/statement.rb +7 -2
  94. data/lib/yard/parser/ruby/legacy/statement_list.rb +13 -22
  95. data/lib/yard/parser/ruby/ruby_parser.rb +87 -26
  96. data/lib/yard/parser/source_parser.rb +89 -88
  97. data/lib/yard/rake/yardoc_task.rb +1 -1
  98. data/lib/yard/registry.rb +21 -10
  99. data/lib/yard/registry_store.rb +48 -0
  100. data/lib/yard/serializers/file_system_serializer.rb +18 -20
  101. data/lib/yard/serializers/yardoc_serializer.rb +1 -0
  102. data/lib/yard/server/adapter.rb +2 -2
  103. data/lib/yard/server/commands/base.rb +1 -1
  104. data/lib/yard/server/commands/display_object_command.rb +13 -6
  105. data/lib/yard/server/commands/frames_command.rb +4 -21
  106. data/lib/yard/server/commands/library_command.rb +57 -11
  107. data/lib/yard/server/commands/list_command.rb +10 -34
  108. data/lib/yard/server/commands/search_command.rb +8 -2
  109. data/lib/yard/server/doc_server_helper.rb +34 -0
  110. data/lib/yard/server/rack_adapter.rb +5 -1
  111. data/lib/yard/server/router.rb +4 -10
  112. data/lib/yard/server/static_caching.rb +2 -2
  113. data/lib/yard/server/templates/default/fulldoc/html/css/custom.css +2 -2
  114. data/lib/yard/server/templates/default/fulldoc/html/js/live.js +0 -15
  115. data/lib/yard/server/templates/default/layout/html/breadcrumb.erb +3 -3
  116. data/lib/yard/server/templates/default/layout/html/script_setup.erb +8 -0
  117. data/lib/yard/server/templates/doc_server/processing/html/processing.erb +1 -1
  118. data/lib/yard/server/templates/doc_server/search/html/setup.rb +1 -1
  119. data/lib/yard/tags/default_factory.rb +31 -4
  120. data/lib/yard/tags/directives.rb +593 -0
  121. data/lib/yard/tags/library.rb +437 -35
  122. data/lib/yard/templates/engine.rb +17 -12
  123. data/lib/yard/templates/helpers/base_helper.rb +8 -2
  124. data/lib/yard/templates/helpers/html_helper.rb +57 -14
  125. data/lib/yard/templates/helpers/markup/rdoc_markup.rb +1 -1
  126. data/lib/yard/templates/helpers/markup_helper.rb +9 -9
  127. data/lib/yard/templates/helpers/text_helper.rb +2 -2
  128. data/lib/yard/templates/template.rb +42 -13
  129. data/lib/yard/templates/template_options.rb +81 -0
  130. data/spec/cli/command_parser_spec.rb +4 -4
  131. data/spec/cli/command_spec.rb +3 -3
  132. data/spec/cli/config_spec.rb +13 -13
  133. data/spec/cli/diff_spec.rb +13 -10
  134. data/spec/cli/gems_spec.rb +12 -12
  135. data/spec/cli/help_spec.rb +2 -2
  136. data/spec/cli/i18n_spec.rb +111 -0
  137. data/spec/cli/server_spec.rb +66 -18
  138. data/spec/cli/stats_spec.rb +15 -15
  139. data/spec/cli/yardoc_spec.rb +124 -97
  140. data/spec/cli/yri_spec.rb +14 -12
  141. data/spec/code_objects/base_spec.rb +104 -46
  142. data/spec/code_objects/class_object_spec.rb +33 -33
  143. data/spec/code_objects/code_object_list_spec.rb +5 -5
  144. data/spec/code_objects/constants_spec.rb +4 -3
  145. data/spec/code_objects/extra_file_object_spec.rb +19 -19
  146. data/spec/code_objects/macro_object_spec.rb +31 -37
  147. data/spec/code_objects/method_object_spec.rb +46 -23
  148. data/spec/code_objects/module_object_spec.rb +16 -16
  149. data/spec/code_objects/namespace_object_spec.rb +6 -6
  150. data/spec/code_objects/proxy_spec.rb +19 -19
  151. data/spec/config_spec.rb +33 -24
  152. data/spec/core_ext/array_spec.rb +1 -1
  153. data/spec/core_ext/file_spec.rb +8 -8
  154. data/spec/core_ext/hash_spec.rb +1 -1
  155. data/spec/core_ext/insertion_spec.rb +3 -3
  156. data/spec/core_ext/module_spec.rb +1 -1
  157. data/spec/core_ext/string_spec.rb +6 -6
  158. data/spec/core_ext/symbol_hash_spec.rb +11 -11
  159. data/spec/docstring_parser_spec.rb +207 -0
  160. data/spec/docstring_spec.rb +33 -146
  161. data/spec/handlers/alias_handler_spec.rb +14 -14
  162. data/spec/handlers/attribute_handler_spec.rb +20 -20
  163. data/spec/handlers/base_spec.rb +16 -16
  164. data/spec/handlers/c/alias_handler_spec.rb +33 -0
  165. data/spec/handlers/c/attribute_handler_spec.rb +40 -0
  166. data/spec/handlers/c/class_handler_spec.rb +64 -0
  167. data/spec/handlers/c/constant_handler_spec.rb +68 -0
  168. data/spec/handlers/c/init_handler_spec.rb +36 -0
  169. data/spec/handlers/c/method_handler_spec.rb +228 -0
  170. data/spec/handlers/c/mixin_handler_spec.rb +27 -0
  171. data/spec/handlers/c/module_handler_spec.rb +38 -0
  172. data/spec/handlers/c/override_comment_handler_spec.rb +43 -0
  173. data/spec/handlers/c/path_handler_spec.rb +35 -0
  174. data/spec/handlers/c/spec_helper.rb +11 -0
  175. data/spec/handlers/c/struct_handler_spec.rb +15 -0
  176. data/spec/handlers/class_condition_handler_spec.rb +10 -10
  177. data/spec/handlers/class_handler_spec.rb +38 -38
  178. data/spec/handlers/class_variable_handler_spec.rb +1 -1
  179. data/spec/handlers/constant_handler_spec.rb +7 -7
  180. data/spec/handlers/{macro_handler_spec.rb → dsl_handler_spec.rb} +72 -53
  181. data/spec/handlers/examples/alias_handler_001.rb.txt +5 -5
  182. data/spec/handlers/examples/class_condition_handler_001.rb.txt +9 -9
  183. data/spec/handlers/examples/class_handler_001.rb.txt +1 -1
  184. data/spec/handlers/examples/dsl_handler_001.rb.txt +110 -0
  185. data/spec/handlers/examples/exception_handler_001.rb.txt +14 -14
  186. data/spec/handlers/examples/method_condition_handler_001.rb.txt +2 -2
  187. data/spec/handlers/examples/method_handler_001.rb.txt +16 -16
  188. data/spec/handlers/examples/mixin_handler_001.rb.txt +8 -4
  189. data/spec/handlers/examples/private_constant_handler_001.rb.txt +1 -1
  190. data/spec/handlers/examples/visibility_handler_001.rb.txt +3 -3
  191. data/spec/handlers/examples/yield_handler_001.rb.txt +13 -14
  192. data/spec/handlers/exception_handler_spec.rb +9 -9
  193. data/spec/handlers/extend_handler_spec.rb +2 -2
  194. data/spec/handlers/legacy_base_spec.rb +34 -34
  195. data/spec/handlers/method_condition_handler_spec.rb +2 -2
  196. data/spec/handlers/method_handler_spec.rb +33 -33
  197. data/spec/handlers/mixin_handler_spec.rb +13 -9
  198. data/spec/handlers/module_function_handler_spec.rb +82 -0
  199. data/spec/handlers/module_handler_spec.rb +6 -6
  200. data/spec/handlers/private_constant_handler_spec.rb +3 -3
  201. data/spec/handlers/processor_spec.rb +5 -5
  202. data/spec/handlers/ruby/base_spec.rb +10 -6
  203. data/spec/handlers/ruby/legacy/base_spec.rb +11 -7
  204. data/spec/handlers/spec_helper.rb +2 -3
  205. data/spec/handlers/visibility_handler_spec.rb +6 -6
  206. data/spec/handlers/yield_handler_spec.rb +8 -8
  207. data/spec/i18n/pot_generator_spec.rb +244 -0
  208. data/spec/i18n/text_spec.rb +69 -0
  209. data/spec/options_spec.rb +160 -0
  210. data/spec/parser/base_spec.rb +3 -3
  211. data/spec/parser/c_parser_spec.rb +31 -257
  212. data/spec/parser/examples/array.c.txt +187 -187
  213. data/spec/parser/examples/extrafile.c.txt +1 -1
  214. data/spec/parser/examples/override.c.txt +1 -1
  215. data/spec/parser/ruby/ast_node_spec.rb +1 -1
  216. data/spec/parser/ruby/legacy/statement_list_spec.rb +24 -24
  217. data/spec/parser/ruby/legacy/token_list_spec.rb +7 -7
  218. data/spec/parser/ruby/ruby_parser_spec.rb +56 -34
  219. data/spec/parser/source_parser_spec.rb +125 -65
  220. data/spec/parser/tag_parsing_spec.rb +4 -4
  221. data/spec/rake/yardoc_task_spec.rb +10 -8
  222. data/spec/registry_spec.rb +65 -36
  223. data/spec/registry_store_spec.rb +90 -40
  224. data/spec/serializers/file_system_serializer_spec.rb +12 -12
  225. data/spec/serializers/yardoc_serializer_spec.rb +2 -2
  226. data/spec/server/adapter_spec.rb +3 -3
  227. data/spec/server/commands/base_spec.rb +8 -8
  228. data/spec/server/commands/library_command_spec.rb +3 -3
  229. data/spec/server/commands/static_file_command_spec.rb +7 -7
  230. data/spec/server/doc_server_helper_spec.rb +1 -1
  231. data/spec/server/doc_server_serializer_spec.rb +6 -6
  232. data/spec/server/rack_adapter_spec.rb +3 -3
  233. data/spec/server/router_spec.rb +19 -19
  234. data/spec/server/static_caching_spec.rb +4 -4
  235. data/spec/spec_helper.rb +7 -7
  236. data/spec/tags/default_factory_spec.rb +24 -16
  237. data/spec/tags/directives_spec.rb +422 -0
  238. data/spec/tags/library_spec.rb +15 -4
  239. data/spec/tags/overload_tag_spec.rb +6 -6
  240. data/spec/tags/ref_tag_list_spec.rb +8 -8
  241. data/spec/templates/class_spec.rb +7 -7
  242. data/spec/templates/constant_spec.rb +7 -7
  243. data/spec/templates/engine_spec.rb +28 -36
  244. data/spec/templates/examples/class001.html +108 -108
  245. data/spec/templates/examples/class002.html +17 -17
  246. data/spec/templates/examples/constant001.txt +1 -1
  247. data/spec/templates/examples/method001.html +45 -45
  248. data/spec/templates/examples/method002.html +25 -25
  249. data/spec/templates/examples/method003.html +60 -60
  250. data/spec/templates/examples/method004.html +7 -7
  251. data/spec/templates/examples/method005.html +28 -28
  252. data/spec/templates/examples/module001.html +321 -321
  253. data/spec/templates/examples/module001.txt +1 -1
  254. data/spec/templates/examples/module002.html +130 -130
  255. data/spec/templates/examples/module003.html +74 -74
  256. data/spec/templates/examples/module004.html +388 -0
  257. data/spec/templates/helpers/base_helper_spec.rb +32 -32
  258. data/spec/templates/helpers/html_helper_spec.rb +87 -68
  259. data/spec/templates/helpers/html_syntax_highlight_helper_spec.rb +9 -9
  260. data/spec/templates/helpers/markup/rdoc_markup_spec.rb +16 -16
  261. data/spec/templates/helpers/markup_helper_spec.rb +31 -28
  262. data/spec/templates/helpers/method_helper_spec.rb +7 -7
  263. data/spec/templates/helpers/shared_signature_examples.rb +9 -7
  264. data/spec/templates/helpers/text_helper_spec.rb +3 -3
  265. data/spec/templates/method_spec.rb +13 -13
  266. data/spec/templates/module_spec.rb +70 -24
  267. data/spec/templates/onefile_spec.rb +32 -15
  268. data/spec/templates/section_spec.rb +23 -23
  269. data/spec/templates/spec_helper.rb +31 -1
  270. data/spec/templates/tag_spec.rb +5 -5
  271. data/spec/templates/template_spec.rb +54 -46
  272. data/spec/verifier_spec.rb +5 -5
  273. data/templates/default/class/setup.rb +2 -2
  274. data/templates/default/docstring/html/abstract.erb +1 -1
  275. data/templates/default/docstring/html/note.erb +1 -1
  276. data/templates/default/docstring/html/private.erb +1 -1
  277. data/templates/default/docstring/html/todo.erb +1 -1
  278. data/templates/default/docstring/setup.rb +2 -2
  279. data/templates/default/fulldoc/html/css/full_list.css +4 -2
  280. data/templates/default/fulldoc/html/css/style.css +50 -44
  281. data/templates/default/fulldoc/html/frames.erb +21 -6
  282. data/templates/default/fulldoc/html/full_list.erb +5 -3
  283. data/templates/default/fulldoc/html/{full_list_files.erb → full_list_file.erb} +0 -0
  284. data/templates/default/fulldoc/html/js/app.js +29 -26
  285. data/templates/default/fulldoc/html/js/full_list.js +9 -9
  286. data/templates/default/fulldoc/html/js/jquery.js +4 -16
  287. data/templates/default/fulldoc/html/setup.rb +42 -38
  288. data/templates/default/layout/dot/header.erb +1 -1
  289. data/templates/default/layout/html/breadcrumb.erb +6 -6
  290. data/templates/default/layout/html/files.erb +1 -1
  291. data/templates/default/layout/html/footer.erb +1 -1
  292. data/templates/default/layout/html/headers.erb +3 -6
  293. data/templates/default/layout/html/index.erb +1 -1
  294. data/templates/default/layout/html/layout.erb +3 -7
  295. data/templates/default/layout/html/objects.erb +1 -1
  296. data/templates/default/layout/html/script_setup.erb +5 -0
  297. data/templates/default/layout/html/search.erb +4 -1
  298. data/templates/default/layout/html/setup.rb +8 -8
  299. data/templates/default/method_details/html/method_signature.erb +10 -3
  300. data/templates/default/method_details/setup.rb +1 -0
  301. data/templates/default/module/dot/info.erb +1 -1
  302. data/templates/default/module/dot/setup.rb +2 -2
  303. data/templates/default/module/html/attribute_details.erb +1 -1
  304. data/templates/default/module/html/children.erb +1 -1
  305. data/templates/default/module/html/defines.erb +1 -1
  306. data/templates/default/module/html/inherited_methods.erb +5 -4
  307. data/templates/default/module/html/item_summary.erb +15 -5
  308. data/templates/default/module/html/method_details_list.erb +2 -2
  309. data/templates/default/module/setup.rb +25 -12
  310. data/templates/default/module/text/setup.rb +1 -1
  311. data/templates/default/onefile/html/layout.erb +1 -1
  312. data/templates/default/onefile/html/setup.rb +2 -2
  313. data/templates/default/tags/html/example.erb +4 -2
  314. data/templates/default/tags/html/option.erb +1 -1
  315. data/templates/default/tags/html/overload.erb +1 -1
  316. data/templates/default/tags/html/see.erb +1 -1
  317. data/templates/default/tags/html/tag.erb +1 -1
  318. data/templates/default/tags/setup.rb +4 -3
  319. data/templates/guide/fulldoc/html/css/style.css +8 -8
  320. data/templates/guide/fulldoc/html/js/app.js +6 -6
  321. data/templates/guide/fulldoc/html/setup.rb +12 -12
  322. data/templates/guide/layout/html/layout.erb +11 -11
  323. data/templates/guide/layout/html/setup.rb +9 -9
  324. data/templates/guide/method/html/header.erb +2 -2
  325. data/templates/guide/method/html/setup.rb +1 -1
  326. metadata +68 -18
  327. data/bin/yard-graph +0 -4
  328. data/bin/yard-server +0 -4
  329. data/docs/Glossary.md +0 -12
  330. data/lib/yard/handlers/ruby/legacy/macro_handler.rb +0 -39
  331. data/lib/yard/handlers/ruby/macro_handler.rb +0 -40
  332. data/lib/yard/handlers/ruby/macro_handler_methods.rb +0 -131
  333. data/lib/yard/parser/c_parser.rb +0 -497
  334. data/lib/yard/server/templates/default/layout/html/headers.erb +0 -16
  335. data/lib/yard/server/templates/doc_server/frames/html/frames.erb +0 -13
  336. data/lib/yard/server/templates/doc_server/frames/html/setup.rb +0 -3
  337. data/lib/yard/server/templates/doc_server/full_list/html/full_list.erb +0 -34
  338. data/lib/yard/server/templates/doc_server/full_list/html/setup.rb +0 -20
  339. data/spec/handlers/examples/macro_handler_001.rb.txt +0 -83
@@ -0,0 +1,7 @@
1
+ <% n = 1 %>
2
+ <% collect_tags.each do |tag| %>
3
+ <li class="r<%= n %> <%= tag.object.has_tag?(:deprecated) ? 'deprecated' : '' %>">
4
+ <span class="object_link"><%= tag_link(tag) %></span>
5
+ </li>
6
+ <% n = n == 2 ? 1 : 2 %>
7
+ <% end %>
@@ -0,0 +1,6 @@
1
+ def generate_tag_list
2
+ @list_title = "Tag List"
3
+ @list_type = "tag"
4
+ asset('tag_list.html', erb(:full_list))
5
+ end
6
+
@@ -0,0 +1,8 @@
1
+ def init
2
+ super
3
+ sections.place(:tag_list).after_any(:files)
4
+ end
5
+
6
+ def menu_lists
7
+ super + [{:type => 'tag', :title => 'Tags', :search_title => 'Tag List'}]
8
+ end
@@ -0,0 +1,11 @@
1
+ <h2>Tag Listing</h2>
2
+ <p>The following are a brief list of tags that can be used in YARD formatted
3
+ documentation. See <%= link_file "docs/Tags.md" %> for information on using tags.</p>
4
+ <ul id="tags" class="index_inline_list">
5
+ <% n = 1 %>
6
+ <% collect_tags.each do |tag| %>
7
+ <li class="r<%= n %>"><%= tag_link(tag) %></li>
8
+ <% n = n == 2 ? 1 : 2 %>
9
+ <% end %>
10
+ </ul>
11
+ <div class="clear"></div>
@@ -0,0 +1,18 @@
1
+ <% [["Tag", all_tags], ["Directive", all_directives]].each do |(name, list)| %>
2
+ <h2><%= name %> List</h2>
3
+
4
+ <% list.each_with_index do |tag, i| %>
5
+ <div class="method_details <%= i == 0 ? 'first' : '' %>">
6
+ <h3 class="signature"
7
+ id="<%= tag.name %>" toc-title="<%= tag_link_name(tag) %>">
8
+ <%= tag_signature tag %>
9
+ </h3>
10
+ <% if name == "Directive" %>
11
+ <%= yieldall :object => P("YARD::Tags::#{tag.text}") %>
12
+ <% else %>
13
+ <%= yieldall :object => tag.object %>
14
+ <% end %>
15
+ </div>
16
+ <% end %>
17
+
18
+ <% end%>
@@ -0,0 +1,27 @@
1
+ def init
2
+ sections :list, [T('docstring')]
3
+ end
4
+
5
+ def tag_signature(tag)
6
+ types = tag.types || []
7
+ signature = "<strong>#{tag_link_name(tag)}</strong> "
8
+ extra = nil
9
+ if sig_tag = tag.object.tag('yard.signature')
10
+ extra = sig_tag.text
11
+ end
12
+ extra = case types.first
13
+ when 'with_name'
14
+ "name description"
15
+ when 'with_types'
16
+ "[Types] description"
17
+ when 'with_types_and_name'
18
+ "name [Types] description"
19
+ when 'with_title_and_text'
20
+ "title\ndescription"
21
+ when 'with_types_and_title'
22
+ "[Types] title\ndescription"
23
+ else
24
+ "description"
25
+ end if extra.nil?
26
+ signature + h(extra).gsub(/\n/, "<br/>&nbsp;&nbsp;&nbsp;")
27
+ end
@@ -0,0 +1,65 @@
1
+ include YARD
2
+ include Templates
3
+
4
+ module TagTemplateHelper
5
+ def all_tags
6
+ Registry.all(:method).map {|m| m.tag('yard.tag') }.compact
7
+ end
8
+
9
+ def all_directives
10
+ Registry.all(:method).map {|m| m.tag('yard.directive') }.compact
11
+ end
12
+
13
+ def collect_tags
14
+ (all_tags + all_directives).sort_by {|t| t.name }
15
+ end
16
+
17
+ def tag_link(tag)
18
+ link_file("docs/Tags.md", tag_link_name(tag), tag.name)
19
+ end
20
+
21
+ def tag_link_name(tag)
22
+ prefix = tag.tag_name == 'yard.directive' ? '@!' : '@'
23
+ h(prefix + tag.name)
24
+ end
25
+
26
+ # Wrap url_for and url_for_file to rewrite object when generating docs for
27
+ # yard.tag/directive objects.
28
+ %w(url_for, url_for_file).each do |meth|
29
+ self.class.send(:define_method, meth) do
30
+ if object.is_a?(CodeObjects::Base) &&
31
+ (object.tag('yard.tag') || object.tag('yard.directive') ||
32
+ (object.type == :class && object.superclass.name == :Directive))
33
+ obj, self.object = object, Registry.root
34
+ url = super
35
+ self.object = obj
36
+ url
37
+ else
38
+ super
39
+ end
40
+ end
41
+ end
42
+
43
+ def linkify(*args)
44
+ if args.first.is_a?(String)
45
+ case args.first
46
+ when "yard:include_tags"
47
+ return T('yard_tags').run(options)
48
+ when /^tag:(\S+)/
49
+ tag_name, suffix = $1, "tag"
50
+ if tag_name =~ /^!/
51
+ tag_name, suffix = tag_name[1..-1], "directive"
52
+ end
53
+ if obj = Registry.at("YARD::Tags::Library##{tag_name}_#{suffix}")
54
+ return tag_link(obj.tag("yard.#{suffix}"))
55
+ end
56
+ log.warn "Cannot find tag: #{args.first}"
57
+ return args.first
58
+ end
59
+ end
60
+ super
61
+ end
62
+ end
63
+
64
+ Template.extra_includes << TagTemplateHelper
65
+ Engine.register_template_path(File.dirname(__FILE__))
data/lib/yard.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  module YARD
2
- VERSION = "0.7.5"
2
+ VERSION = "0.8.0"
3
3
 
4
4
  # The root path for YARD source libraries
5
5
  ROOT = File.expand_path(File.dirname(__FILE__))
@@ -32,15 +32,6 @@ end
32
32
  # Keep track of Ruby version for compatibility code
33
33
  RUBY19, RUBY18 = *(RUBY_VERSION >= "1.9.1" ? [true, false] : [false, true])
34
34
 
35
- # Whether or not continuations are (properly) supported
36
- begin
37
- begin; require 'continuation'; rescue LoadError; end
38
- cc = callcc {|cc| cc }; cc.call if cc
39
- CONTINUATIONS_SUPPORTED = true
40
- rescue Exception
41
- CONTINUATIONS_SUPPORTED = false
42
- end
43
-
44
35
  # Load Ruby core extension classes
45
36
  Dir.glob(File.join(YARD::ROOT, 'yard', 'core_ext', '*.rb')).each do |file|
46
37
  require file
data/lib/yard/autoload.rb CHANGED
@@ -15,6 +15,7 @@ module YARD
15
15
  autoload :Stats, __p('cli/stats')
16
16
  autoload :Yardoc, __p('cli/yardoc')
17
17
  autoload :YRI, __p('cli/yri')
18
+ autoload :I18n, __p('cli/i18n')
18
19
  end
19
20
 
20
21
  # A "code object" is defined as any entity in the Ruby language.
@@ -57,6 +58,26 @@ module YARD
57
58
  # parsing phase. This allows YARD as well as any custom extension to
58
59
  # analyze source and generate {CodeObjects} to be stored for later use.
59
60
  module Handlers
61
+ # CRuby Handlers
62
+ # @since 0.8.0
63
+ module C
64
+ autoload :Base, __p('handlers/c/base')
65
+
66
+ autoload :AliasHandler, __p('handlers/c/alias_handler')
67
+ autoload :AttributeHandler, __p('handlers/c/attribute_handler')
68
+ autoload :ClassHandler, __p('handlers/c/class_handler')
69
+ autoload :ConstantHandler, __p('handlers/c/constant_handler')
70
+ autoload :HandlerMethods, __p('handlers/c/handler_methods')
71
+ autoload :InitHandler, __p('handlers/c/init_handler')
72
+ autoload :MethodHandler, __p('handlers/c/method_handler')
73
+ autoload :MixinHandler, __p('handlers/c/mixin_handler')
74
+ autoload :ModuleHandler, __p('handlers/c/module_handler')
75
+ autoload :OverrideCommentHandler, __p('handlers/c/override_comment_handler')
76
+ autoload :PathHandler, __p('handlers/c/path_handler')
77
+ autoload :StructHandler, __p('handlers/c/struct_handler')
78
+ autoload :SymbolHandler, __p('handlers/c/symbol_handler')
79
+ end
80
+
60
81
  module Ruby # All Ruby handlers
61
82
  module Legacy # Handlers for old Ruby 1.8 parser
62
83
  autoload :Base, __p('handlers/ruby/legacy/base')
@@ -66,13 +87,15 @@ module YARD
66
87
  autoload :ClassHandler, __p('handlers/ruby/legacy/class_handler')
67
88
  autoload :ClassConditionHandler, __p('handlers/ruby/legacy/class_condition_handler')
68
89
  autoload :ClassVariableHandler, __p('handlers/ruby/legacy/class_variable_handler')
90
+ autoload :CommentHandler, __p('handlers/ruby/legacy/comment_handler')
69
91
  autoload :ConstantHandler, __p('handlers/ruby/legacy/constant_handler')
92
+ autoload :DSLHandler, __p('handlers/ruby/legacy/dsl_handler')
70
93
  autoload :ExceptionHandler, __p('handlers/ruby/legacy/exception_handler')
71
94
  autoload :ExtendHandler, __p('handlers/ruby/legacy/extend_handler')
72
- autoload :MacroHandler, __p('handlers/ruby/legacy/macro_handler')
73
95
  autoload :MethodHandler, __p('handlers/ruby/legacy/method_handler')
74
96
  autoload :MixinHandler, __p('handlers/ruby/legacy/mixin_handler')
75
97
  autoload :ModuleHandler, __p('handlers/ruby/legacy/module_handler')
98
+ autoload :ModuleFunctionHandler, __p('handlers/ruby/legacy/module_function_handler')
76
99
  autoload :PrivateConstantHandler, __p('handlers/ruby/legacy/private_constant_handler')
77
100
  autoload :VisibilityHandler, __p('handlers/ruby/legacy/visibility_handler')
78
101
  autoload :YieldHandler, __p('handlers/ruby/legacy/yield_handler')
@@ -85,15 +108,17 @@ module YARD
85
108
  autoload :ClassHandler, __p('handlers/ruby/class_handler')
86
109
  autoload :ClassConditionHandler, __p('handlers/ruby/class_condition_handler')
87
110
  autoload :ClassVariableHandler, __p('handlers/ruby/class_variable_handler')
111
+ autoload :CommentHandler, __p('handlers/ruby/comment_handler')
88
112
  autoload :ConstantHandler, __p('handlers/ruby/constant_handler')
113
+ autoload :DSLHandler, __p('handlers/ruby/dsl_handler')
114
+ autoload :DSLHandlerMethods, __p('handlers/ruby/dsl_handler_methods')
89
115
  autoload :ExceptionHandler, __p('handlers/ruby/exception_handler')
90
116
  autoload :ExtendHandler, __p('handlers/ruby/extend_handler')
91
- autoload :MacroHandler, __p('handlers/ruby/macro_handler')
92
- autoload :MacroHandlerMethods, __p('handlers/ruby/macro_handler_methods')
93
117
  autoload :MethodHandler, __p('handlers/ruby/method_handler')
94
118
  autoload :MethodConditionHandler, __p('handlers/ruby/method_condition_handler')
95
119
  autoload :MixinHandler, __p('handlers/ruby/mixin_handler')
96
120
  autoload :ModuleHandler, __p('handlers/ruby/module_handler')
121
+ autoload :ModuleFunctionHandler, __p('handlers/ruby/module_function_handler')
97
122
  autoload :PrivateConstantHandler, __p('handlers/ruby/private_constant_handler')
98
123
  autoload :StructHandlerMethods, __p('handlers/ruby/struct_handler_methods')
99
124
  autoload :VisibilityHandler, __p('handlers/ruby/visibility_handler')
@@ -105,9 +130,25 @@ module YARD
105
130
  autoload :Processor, __p('handlers/processor')
106
131
  end
107
132
 
133
+ # Namespace for internationalization (i18n)
134
+ # @since 0.8.0
135
+ module I18n
136
+ autoload :PotGenerator, __p('i18n/pot_generator')
137
+ autoload :Text, __p('i18n/text')
138
+ end
139
+
108
140
  # The parser namespace holds all parsing engines used by YARD.
109
141
  # Currently only Ruby and C (Ruby) parsers are implemented.
110
142
  module Parser
143
+ module C # CRuby Parsing components
144
+ autoload :BodyStatement, __p('parser/c/statement')
145
+ autoload :Comment, __p('parser/c/statement')
146
+ autoload :CommentParser, __p('parser/c/comment_parser')
147
+ autoload :CParser, __p('parser/c/c_parser')
148
+ autoload :Statement, __p('parser/c/statement')
149
+ autoload :ToplevelStatement, __p('parser/c/statement')
150
+ end
151
+
111
152
  module Ruby # Ruby parsing components.
112
153
  module Legacy # Handles Ruby parsing in Ruby 1.8.
113
154
  autoload :RipperParser, __p('parser/ruby/legacy/ruby_parser')
@@ -123,7 +164,6 @@ module YARD
123
164
  end
124
165
 
125
166
  autoload :Base, __p('parser/base')
126
- autoload :CParser, __p('parser/c_parser')
127
167
  autoload :ParserSyntaxError, __p('parser/source_parser')
128
168
  autoload :SourceParser, __p('parser/source_parser')
129
169
  autoload :UndocumentableError, __p('parser/source_parser')
@@ -162,9 +202,6 @@ module YARD
162
202
  autoload :DisplayObjectCommand, __p('server/commands/display_object_command')
163
203
  autoload :FramesCommand, __p('server/commands/frames_command')
164
204
  autoload :ListCommand, __p('server/commands/list_command')
165
- autoload :ListClassesCommand, __p('server/commands/list_command')
166
- autoload :ListFilesCommand, __p('server/commands/list_command')
167
- autoload :ListMethodsCommand, __p('server/commands/list_command')
168
205
  autoload :LibraryCommand, __p('server/commands/library_command')
169
206
  autoload :LibraryIndexCommand, __p('server/commands/library_index_command')
170
207
  autoload :SearchCommand, __p('server/commands/search_command')
@@ -186,15 +223,23 @@ module YARD
186
223
  end
187
224
 
188
225
  module Tags # Namespace for Tag components
189
- autoload :DefaultFactory, __p('tags/default_factory')
190
- autoload :DefaultTag, __p('tags/default_tag')
191
- autoload :Library, __p('tags/library')
192
- autoload :OptionTag, __p('tags/option_tag')
193
- autoload :OverloadTag, __p('tags/overload_tag')
194
- autoload :RefTag, __p('tags/ref_tag')
195
- autoload :RefTagList, __p('tags/ref_tag_list')
196
- autoload :Tag, __p('tags/tag')
197
- autoload :TagFormatError, __p('tags/tag_format_error')
226
+ autoload :AttributeDirective, __p('tags/directives')
227
+ autoload :DefaultFactory, __p('tags/default_factory')
228
+ autoload :DefaultTag, __p('tags/default_tag')
229
+ autoload :EndGroupDirective, __p('tags/directives')
230
+ autoload :GroupDirective, __p('tags/directives')
231
+ autoload :Library, __p('tags/library')
232
+ autoload :MacroDirective, __p('tags/directives')
233
+ autoload :MethodDirective, __p('tags/directives')
234
+ autoload :OptionTag, __p('tags/option_tag')
235
+ autoload :OverloadTag, __p('tags/overload_tag')
236
+ autoload :ParseDirective, __p('tags/directives')
237
+ autoload :RefTag, __p('tags/ref_tag')
238
+ autoload :RefTagList, __p('tags/ref_tag_list')
239
+ autoload :ScopeDirective, __p('tags/directives')
240
+ autoload :Tag, __p('tags/tag')
241
+ autoload :TagFormatError, __p('tags/tag_format_error')
242
+ autoload :VisibilityDirective, __p('tags/directives')
198
243
  end
199
244
 
200
245
  # Namespace for templating system
@@ -215,19 +260,22 @@ module YARD
215
260
  autoload :UMLHelper, __p('templates/helpers/uml_helper')
216
261
  end
217
262
 
218
- autoload :Engine, __p('templates/engine')
219
- autoload :ErbCache, __p('templates/erb_cache')
220
- autoload :Section, __p('templates/section')
221
- autoload :Template, __p('templates/template')
263
+ autoload :Engine, __p('templates/engine')
264
+ autoload :ErbCache, __p('templates/erb_cache')
265
+ autoload :Section, __p('templates/section')
266
+ autoload :Template, __p('templates/template')
267
+ autoload :TemplateOptions, __p('templates/template_options')
222
268
  end
223
269
 
224
- autoload :Config, __p('config')
225
- autoload :Docstring, __p('docstring')
226
- autoload :Logger, __p('logging')
227
- autoload :Registry, __p('registry')
228
- autoload :RegistryStore, __p('registry_store')
229
- autoload :StubProxy, __p('serializers/yardoc_serializer')
230
- autoload :Verifier, __p('verifier')
270
+ autoload :Config, __p('config')
271
+ autoload :Docstring, __p('docstring')
272
+ autoload :DocstringParser, __p('docstring_parser')
273
+ autoload :Logger, __p('logging')
274
+ autoload :Options, __p('options')
275
+ autoload :Registry, __p('registry')
276
+ autoload :RegistryStore, __p('registry_store')
277
+ autoload :StubProxy, __p('serializers/yardoc_serializer')
278
+ autoload :Verifier, __p('verifier')
231
279
  end
232
280
 
233
281
  undef __p
@@ -34,6 +34,9 @@ module YARD
34
34
  ' Always on in 1.8.x.') do
35
35
  YARD::Parser::SourceParser.parser_type = :ruby18
36
36
  end
37
+ opts.on('--safe', 'Enable safe mode for this instance') do
38
+ # Parsed in YARD::Config.load
39
+ end
37
40
  opts.on_tail('-q', '--quiet', 'Show no warnings.') { log.level = Logger::ERROR }
38
41
  opts.on_tail('--verbose', 'Show more information.') { log.level = Logger::INFO }
39
42
  opts.on_tail('--debug', 'Show debugging information.') { log.level = Logger::DEBUG }
@@ -56,14 +59,14 @@ module YARD
56
59
  retry
57
60
  end
58
61
 
59
- # Loads a Ruby script. If +Config.options[:safe_mode]+ is enabled,
62
+ # Loads a Ruby script. If <tt>Config.options[:safe_mode]</tt> is enabled,
60
63
  # this method will do nothing.
61
64
  #
62
65
  # @param [String] file the path to the script to load
63
66
  # @since 0.6.2
64
67
  def load_script(file)
65
68
  return if YARD::Config.options[:safe_mode]
66
- require(file.gsub(/\.rb$/, ''))
69
+ load(file)
67
70
  rescue LoadError => load_exception
68
71
  log.error "The file `#{file}' could not be loaded:\n#{load_exception}"
69
72
  exit
@@ -40,7 +40,8 @@ module YARD
40
40
  :list => List,
41
41
  :ri => YRI,
42
42
  :server => Server,
43
- :stats => Stats
43
+ :stats => Stats,
44
+ :i18n => I18n
44
45
  ]
45
46
 
46
47
  self.default_command = :doc
@@ -86,4 +87,4 @@ module YARD
86
87
  end
87
88
  end
88
89
  end
89
- end
90
+ end
data/lib/yard/cli/diff.rb CHANGED
@@ -63,7 +63,7 @@ module YARD
63
63
  end
64
64
 
65
65
  private
66
-
66
+
67
67
  def load_git_commit(commit)
68
68
  commit_path = 'git_commit' + commit.gsub(/\W/, '_')
69
69
  tmpdir = File.join(Dir.tmpdir, commit_path)
@@ -0,0 +1,69 @@
1
+ require "pathname"
2
+
3
+ module YARD
4
+ module CLI
5
+ # CLI command to support internationalization (a.k.a. i18n).
6
+ # I18n feature is based on gettext technology.
7
+ # This command generates .pot file from docstring and extra
8
+ # documentation.
9
+ #
10
+ # @since 0.8.0
11
+ # @todo Support msgminit and msgmerge features?
12
+ class I18n < Yardoc
13
+ def initialize
14
+ super
15
+ @options.serializer.basepath = "po/yard.pot"
16
+ end
17
+
18
+ def description
19
+ 'Generates .pot file from source code and extra documentation'
20
+ end
21
+
22
+ def run(*args)
23
+ if args.size == 0 || !args.first.nil?
24
+ # fail early if arguments are not valid
25
+ return unless parse_arguments(*args)
26
+ end
27
+
28
+ YARD.parse(files, excluded)
29
+
30
+ serializer = options.serializer
31
+ pot_file_path = Pathname.new(serializer.basepath).expand_path
32
+ pot_file_dir_path, pot_file_basename = pot_file_path.split
33
+ relative_base_path = Pathname.pwd.relative_path_from(pot_file_dir_path)
34
+ serializer.basepath = pot_file_dir_path.to_s
35
+ serializer.serialize(pot_file_basename.to_s,
36
+ generate_pot(relative_base_path.to_s))
37
+
38
+ true
39
+ end
40
+
41
+ private
42
+
43
+ def general_options(opts)
44
+ opts.banner = "Usage: yard i18n [options] [source_files [- extra_files]]"
45
+ opts.top.list.clear
46
+ opts.separator "(if a list of source files is omitted, "
47
+ opts.separator " {lib,app}/**/*.rb ext/**/*.c is used.)"
48
+ opts.separator ""
49
+ opts.separator "Example: yard i18n -o yard.pot - FAQ LICENSE"
50
+ opts.separator " The above example outputs .pot file for files in"
51
+ opts.separator " lib/**/*.rb to yard.pot including the extra files"
52
+ opts.separator " FAQ and LICENSE."
53
+ opts.separator ""
54
+ opts.separator "A base set of options can be specified by adding a .yardopts"
55
+ opts.separator "file to your base path containing all extra options separated"
56
+ opts.separator "by whitespace."
57
+ super(opts)
58
+ end
59
+
60
+ def generate_pot(relative_base_path)
61
+ generator = YARD::I18n::PotGenerator.new(relative_base_path)
62
+ objects = run_verifier(all_objects)
63
+ generator.parse_objects(objects)
64
+ generator.parse_files(options.files || [])
65
+ generator.generate
66
+ end
67
+ end
68
+ end
69
+ end