deg-yard 0.8.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.travis.yml +39 -0
- data/.yardopts +25 -0
- data/.yardopts_guide +19 -0
- data/.yardopts_i18n +22 -0
- data/Gemfile +35 -0
- data/LEGAL +66 -0
- data/LICENSE +22 -0
- data/README.md +609 -0
- data/Rakefile +66 -0
- data/benchmarks/builtins_vs_eval.rb +23 -0
- data/benchmarks/concat_vs_join.rb +12 -0
- data/benchmarks/erb_vs_erubis.rb +53 -0
- data/benchmarks/format_args.rb +46 -0
- data/benchmarks/generation.rb +37 -0
- data/benchmarks/marshal_vs_dbm.rb +63 -0
- data/benchmarks/parsing.rb +46 -0
- data/benchmarks/pathname_vs_string.rb +50 -0
- data/benchmarks/rdoc_vs_yardoc.rb +10 -0
- data/benchmarks/registry_store_types.rb +48 -0
- data/benchmarks/ri_vs_yri.rb +18 -0
- data/benchmarks/ripper_parser.rb +12 -0
- data/benchmarks/splat_vs_flatten.rb +12 -0
- data/benchmarks/template_erb.rb +22 -0
- data/benchmarks/template_format.rb +6 -0
- data/benchmarks/template_profile.rb +17 -0
- data/benchmarks/yri_cache.rb +19 -0
- data/bin/yard +12 -0
- data/bin/yardoc +12 -0
- data/bin/yri +12 -0
- data/docs/CodeObjects.md +115 -0
- data/docs/GettingStarted.md +592 -0
- data/docs/Handlers.md +152 -0
- data/docs/Overview.md +61 -0
- data/docs/Parser.md +191 -0
- data/docs/Tags.md +282 -0
- data/docs/TagsArch.md +123 -0
- data/docs/Templates.md +496 -0
- data/docs/WhatsNew.md +1244 -0
- data/docs/images/code-objects-class-diagram.png +0 -0
- data/docs/images/handlers-class-diagram.png +0 -0
- data/docs/images/overview-class-diagram.png +0 -0
- data/docs/images/parser-class-diagram.png +0 -0
- data/docs/images/tags-class-diagram.png +0 -0
- data/docs/templates/default/fulldoc/html/full_list_tag.erb +7 -0
- data/docs/templates/default/fulldoc/html/setup.rb +6 -0
- data/docs/templates/default/layout/html/setup.rb +8 -0
- data/docs/templates/default/layout/html/tag_list.erb +11 -0
- data/docs/templates/default/yard_tags/html/list.erb +18 -0
- data/docs/templates/default/yard_tags/html/setup.rb +27 -0
- data/docs/templates/plugin.rb +65 -0
- data/lib/rubygems_plugin.rb +4 -0
- data/lib/yard/autoload.rb +290 -0
- data/lib/yard/cli/command.rb +84 -0
- data/lib/yard/cli/command_parser.rb +92 -0
- data/lib/yard/cli/config.rb +136 -0
- data/lib/yard/cli/diff.rb +270 -0
- data/lib/yard/cli/display.rb +68 -0
- data/lib/yard/cli/gems.rb +83 -0
- data/lib/yard/cli/graph.rb +126 -0
- data/lib/yard/cli/help.rb +18 -0
- data/lib/yard/cli/i18n.rb +69 -0
- data/lib/yard/cli/list.rb +22 -0
- data/lib/yard/cli/markup_types.rb +33 -0
- data/lib/yard/cli/server.rb +253 -0
- data/lib/yard/cli/stats.rb +213 -0
- data/lib/yard/cli/yardoc.rb +752 -0
- data/lib/yard/cli/yardopts_command.rb +109 -0
- data/lib/yard/cli/yri.rb +214 -0
- data/lib/yard/code_objects/base.rb +585 -0
- data/lib/yard/code_objects/class_object.rb +143 -0
- data/lib/yard/code_objects/class_variable_object.rb +8 -0
- data/lib/yard/code_objects/constant_object.rb +13 -0
- data/lib/yard/code_objects/extended_method_object.rb +23 -0
- data/lib/yard/code_objects/extra_file_object.rb +128 -0
- data/lib/yard/code_objects/macro_object.rb +172 -0
- data/lib/yard/code_objects/method_object.rb +191 -0
- data/lib/yard/code_objects/module_object.rb +18 -0
- data/lib/yard/code_objects/namespace_object.rb +200 -0
- data/lib/yard/code_objects/proxy.rb +258 -0
- data/lib/yard/code_objects/root_object.rb +17 -0
- data/lib/yard/config.rb +269 -0
- data/lib/yard/core_ext/array.rb +15 -0
- data/lib/yard/core_ext/file.rb +65 -0
- data/lib/yard/core_ext/hash.rb +15 -0
- data/lib/yard/core_ext/insertion.rb +60 -0
- data/lib/yard/core_ext/module.rb +19 -0
- data/lib/yard/core_ext/string.rb +67 -0
- data/lib/yard/core_ext/symbol_hash.rb +73 -0
- data/lib/yard/docstring.rb +362 -0
- data/lib/yard/docstring_parser.rb +321 -0
- data/lib/yard/globals.rb +18 -0
- data/lib/yard/handlers/base.rb +597 -0
- data/lib/yard/handlers/c/alias_handler.rb +15 -0
- data/lib/yard/handlers/c/attribute_handler.rb +13 -0
- data/lib/yard/handlers/c/base.rb +110 -0
- data/lib/yard/handlers/c/class_handler.rb +26 -0
- data/lib/yard/handlers/c/constant_handler.rb +12 -0
- data/lib/yard/handlers/c/handler_methods.rb +166 -0
- data/lib/yard/handlers/c/init_handler.rb +18 -0
- data/lib/yard/handlers/c/method_handler.rb +35 -0
- data/lib/yard/handlers/c/mixin_handler.rb +13 -0
- data/lib/yard/handlers/c/module_handler.rb +16 -0
- data/lib/yard/handlers/c/override_comment_handler.rb +30 -0
- data/lib/yard/handlers/c/path_handler.rb +10 -0
- data/lib/yard/handlers/c/struct_handler.rb +12 -0
- data/lib/yard/handlers/c/symbol_handler.rb +7 -0
- data/lib/yard/handlers/processor.rb +201 -0
- data/lib/yard/handlers/ruby/alias_handler.rb +41 -0
- data/lib/yard/handlers/ruby/attribute_handler.rb +82 -0
- data/lib/yard/handlers/ruby/base.rb +164 -0
- data/lib/yard/handlers/ruby/class_condition_handler.rb +86 -0
- data/lib/yard/handlers/ruby/class_handler.rb +121 -0
- data/lib/yard/handlers/ruby/class_variable_handler.rb +16 -0
- data/lib/yard/handlers/ruby/comment_handler.rb +9 -0
- data/lib/yard/handlers/ruby/constant_handler.rb +45 -0
- data/lib/yard/handlers/ruby/dsl_handler.rb +14 -0
- data/lib/yard/handlers/ruby/dsl_handler_methods.rb +77 -0
- data/lib/yard/handlers/ruby/exception_handler.rb +26 -0
- data/lib/yard/handlers/ruby/extend_handler.rb +21 -0
- data/lib/yard/handlers/ruby/legacy/alias_handler.rb +34 -0
- data/lib/yard/handlers/ruby/legacy/attribute_handler.rb +60 -0
- data/lib/yard/handlers/ruby/legacy/base.rb +250 -0
- data/lib/yard/handlers/ruby/legacy/class_condition_handler.rb +83 -0
- data/lib/yard/handlers/ruby/legacy/class_handler.rb +111 -0
- data/lib/yard/handlers/ruby/legacy/class_variable_handler.rb +14 -0
- data/lib/yard/handlers/ruby/legacy/comment_handler.rb +9 -0
- data/lib/yard/handlers/ruby/legacy/constant_handler.rb +28 -0
- data/lib/yard/handlers/ruby/legacy/dsl_handler.rb +16 -0
- data/lib/yard/handlers/ruby/legacy/exception_handler.rb +12 -0
- data/lib/yard/handlers/ruby/legacy/extend_handler.rb +20 -0
- data/lib/yard/handlers/ruby/legacy/method_handler.rb +85 -0
- data/lib/yard/handlers/ruby/legacy/mixin_handler.rb +39 -0
- data/lib/yard/handlers/ruby/legacy/module_function_handler.rb +18 -0
- data/lib/yard/handlers/ruby/legacy/module_handler.rb +11 -0
- data/lib/yard/handlers/ruby/legacy/private_constant_handler.rb +21 -0
- data/lib/yard/handlers/ruby/legacy/visibility_handler.rb +16 -0
- data/lib/yard/handlers/ruby/legacy/yield_handler.rb +28 -0
- data/lib/yard/handlers/ruby/method_condition_handler.rb +8 -0
- data/lib/yard/handlers/ruby/method_handler.rb +92 -0
- data/lib/yard/handlers/ruby/mixin_handler.rb +36 -0
- data/lib/yard/handlers/ruby/module_function_handler.rb +26 -0
- data/lib/yard/handlers/ruby/module_handler.rb +11 -0
- data/lib/yard/handlers/ruby/private_constant_handler.rb +36 -0
- data/lib/yard/handlers/ruby/struct_handler_methods.rb +141 -0
- data/lib/yard/handlers/ruby/visibility_handler.rb +24 -0
- data/lib/yard/handlers/ruby/yield_handler.rb +30 -0
- data/lib/yard/i18n/locale.rb +74 -0
- data/lib/yard/i18n/message.rb +56 -0
- data/lib/yard/i18n/messages.rb +55 -0
- data/lib/yard/i18n/pot_generator.rb +280 -0
- data/lib/yard/i18n/text.rb +173 -0
- data/lib/yard/logging.rb +190 -0
- data/lib/yard/options.rb +216 -0
- data/lib/yard/parser/base.rb +56 -0
- data/lib/yard/parser/c/c_parser.rb +231 -0
- data/lib/yard/parser/c/comment_parser.rb +131 -0
- data/lib/yard/parser/c/statement.rb +63 -0
- data/lib/yard/parser/ruby/ast_node.rb +496 -0
- data/lib/yard/parser/ruby/legacy/ruby_lex.rb +1378 -0
- data/lib/yard/parser/ruby/legacy/ruby_parser.rb +31 -0
- data/lib/yard/parser/ruby/legacy/statement.rb +65 -0
- data/lib/yard/parser/ruby/legacy/statement_list.rb +384 -0
- data/lib/yard/parser/ruby/legacy/token_list.rb +71 -0
- data/lib/yard/parser/ruby/ruby_parser.rb +625 -0
- data/lib/yard/parser/source_parser.rb +517 -0
- data/lib/yard/rake/yardoc_task.rb +74 -0
- data/lib/yard/registry.rb +438 -0
- data/lib/yard/registry_store.rb +319 -0
- data/lib/yard/rubygems/backports/LICENSE.txt +57 -0
- data/lib/yard/rubygems/backports/MIT.txt +20 -0
- data/lib/yard/rubygems/backports/gem.rb +9 -0
- data/lib/yard/rubygems/backports/source_index.rb +370 -0
- data/lib/yard/rubygems/backports.rb +8 -0
- data/lib/yard/rubygems/doc_manager.rb +88 -0
- data/lib/yard/rubygems/specification.rb +41 -0
- data/lib/yard/serializers/base.rb +80 -0
- data/lib/yard/serializers/file_system_serializer.rb +90 -0
- data/lib/yard/serializers/process_serializer.rb +24 -0
- data/lib/yard/serializers/stdout_serializer.rb +32 -0
- data/lib/yard/serializers/yardoc_serializer.rb +124 -0
- data/lib/yard/server/adapter.rb +100 -0
- data/lib/yard/server/commands/base.rb +192 -0
- data/lib/yard/server/commands/display_file_command.rb +24 -0
- data/lib/yard/server/commands/display_object_command.rb +58 -0
- data/lib/yard/server/commands/frames_command.rb +15 -0
- data/lib/yard/server/commands/library_command.rb +148 -0
- data/lib/yard/server/commands/library_index_command.rb +24 -0
- data/lib/yard/server/commands/list_command.rb +24 -0
- data/lib/yard/server/commands/search_command.rb +78 -0
- data/lib/yard/server/commands/static_file_command.rb +57 -0
- data/lib/yard/server/doc_server_helper.rb +76 -0
- data/lib/yard/server/doc_server_serializer.rb +33 -0
- data/lib/yard/server/library_version.rb +227 -0
- data/lib/yard/server/rack_adapter.rb +88 -0
- data/lib/yard/server/router.rb +176 -0
- data/lib/yard/server/static_caching.rb +45 -0
- data/lib/yard/server/templates/default/fulldoc/html/css/custom.css +78 -0
- data/lib/yard/server/templates/default/fulldoc/html/images/processing.gif +0 -0
- data/lib/yard/server/templates/default/fulldoc/html/js/autocomplete.js +12 -0
- data/lib/yard/server/templates/default/layout/html/breadcrumb.erb +46 -0
- data/lib/yard/server/templates/default/layout/html/script_setup.erb +8 -0
- data/lib/yard/server/templates/default/layout/html/setup.rb +7 -0
- data/lib/yard/server/templates/default/method_details/html/permalink.erb +4 -0
- data/lib/yard/server/templates/default/method_details/html/setup.rb +4 -0
- data/lib/yard/server/templates/doc_server/library_list/html/contents.erb +13 -0
- data/lib/yard/server/templates/doc_server/library_list/html/headers.erb +26 -0
- data/lib/yard/server/templates/doc_server/library_list/html/library_list.erb +12 -0
- data/lib/yard/server/templates/doc_server/library_list/html/setup.rb +3 -0
- data/lib/yard/server/templates/doc_server/library_list/html/title.erb +2 -0
- data/lib/yard/server/templates/doc_server/processing/html/processing.erb +51 -0
- data/lib/yard/server/templates/doc_server/processing/html/setup.rb +3 -0
- data/lib/yard/server/templates/doc_server/search/html/search.erb +18 -0
- data/lib/yard/server/templates/doc_server/search/html/setup.rb +8 -0
- data/lib/yard/server/webrick_adapter.rb +43 -0
- data/lib/yard/server.rb +11 -0
- data/lib/yard/tags/default_factory.rb +176 -0
- data/lib/yard/tags/default_tag.rb +12 -0
- data/lib/yard/tags/directives.rb +599 -0
- data/lib/yard/tags/library.rb +630 -0
- data/lib/yard/tags/option_tag.rb +12 -0
- data/lib/yard/tags/overload_tag.rb +66 -0
- data/lib/yard/tags/ref_tag.rb +7 -0
- data/lib/yard/tags/ref_tag_list.rb +27 -0
- data/lib/yard/tags/tag.rb +57 -0
- data/lib/yard/tags/tag_format_error.rb +6 -0
- data/lib/yard/templates/engine.rb +185 -0
- data/lib/yard/templates/erb_cache.rb +22 -0
- data/lib/yard/templates/helpers/base_helper.rb +212 -0
- data/lib/yard/templates/helpers/filter_helper.rb +26 -0
- data/lib/yard/templates/helpers/html_helper.rb +599 -0
- data/lib/yard/templates/helpers/html_syntax_highlight_helper.rb +59 -0
- data/lib/yard/templates/helpers/markup/rdoc_markdown.rb +22 -0
- data/lib/yard/templates/helpers/markup/rdoc_markup.rb +106 -0
- data/lib/yard/templates/helpers/markup_helper.rb +169 -0
- data/lib/yard/templates/helpers/method_helper.rb +74 -0
- data/lib/yard/templates/helpers/module_helper.rb +19 -0
- data/lib/yard/templates/helpers/text_helper.rb +95 -0
- data/lib/yard/templates/helpers/uml_helper.rb +46 -0
- data/lib/yard/templates/section.rb +106 -0
- data/lib/yard/templates/template.rb +407 -0
- data/lib/yard/templates/template_options.rb +88 -0
- data/lib/yard/verifier.rb +148 -0
- data/lib/yard/version.rb +3 -0
- data/lib/yard.rb +71 -0
- data/po/ja.po +31118 -0
- data/spec/cli/command_parser_spec.rb +43 -0
- data/spec/cli/command_spec.rb +36 -0
- data/spec/cli/config_spec.rb +92 -0
- data/spec/cli/diff_spec.rb +260 -0
- data/spec/cli/display_spec.rb +30 -0
- data/spec/cli/gems_spec.rb +81 -0
- data/spec/cli/graph_spec.rb +17 -0
- data/spec/cli/help_spec.rb +22 -0
- data/spec/cli/i18n_spec.rb +111 -0
- data/spec/cli/list_spec.rb +8 -0
- data/spec/cli/markup_types_spec.rb +22 -0
- data/spec/cli/server_spec.rb +327 -0
- data/spec/cli/stats_spec.rb +90 -0
- data/spec/cli/yardoc_spec.rb +804 -0
- data/spec/cli/yri_spec.rb +99 -0
- data/spec/code_objects/base_spec.rb +438 -0
- data/spec/code_objects/class_object_spec.rb +225 -0
- data/spec/code_objects/code_object_list_spec.rb +33 -0
- data/spec/code_objects/constants_spec.rb +82 -0
- data/spec/code_objects/extra_file_object_spec.rb +147 -0
- data/spec/code_objects/macro_object_spec.rb +148 -0
- data/spec/code_objects/method_object_spec.rb +175 -0
- data/spec/code_objects/module_object_spec.rb +141 -0
- data/spec/code_objects/namespace_object_spec.rb +170 -0
- data/spec/code_objects/proxy_spec.rb +140 -0
- data/spec/code_objects/spec_helper.rb +3 -0
- data/spec/config_spec.rb +176 -0
- data/spec/core_ext/array_spec.rb +14 -0
- data/spec/core_ext/file_spec.rb +68 -0
- data/spec/core_ext/hash_spec.rb +14 -0
- data/spec/core_ext/insertion_spec.rb +37 -0
- data/spec/core_ext/module_spec.rb +15 -0
- data/spec/core_ext/string_spec.rb +42 -0
- data/spec/core_ext/symbol_hash_spec.rb +86 -0
- data/spec/docstring_parser_spec.rb +228 -0
- data/spec/docstring_spec.rb +335 -0
- data/spec/handlers/alias_handler_spec.rb +80 -0
- data/spec/handlers/attribute_handler_spec.rb +94 -0
- data/spec/handlers/base_spec.rb +206 -0
- data/spec/handlers/c/alias_handler_spec.rb +33 -0
- data/spec/handlers/c/attribute_handler_spec.rb +40 -0
- data/spec/handlers/c/class_handler_spec.rb +63 -0
- data/spec/handlers/c/constant_handler_spec.rb +68 -0
- data/spec/handlers/c/init_handler_spec.rb +47 -0
- data/spec/handlers/c/method_handler_spec.rb +229 -0
- data/spec/handlers/c/mixin_handler_spec.rb +27 -0
- data/spec/handlers/c/module_handler_spec.rb +38 -0
- data/spec/handlers/c/override_comment_handler_spec.rb +46 -0
- data/spec/handlers/c/path_handler_spec.rb +35 -0
- data/spec/handlers/c/spec_helper.rb +13 -0
- data/spec/handlers/c/struct_handler_spec.rb +15 -0
- data/spec/handlers/class_condition_handler_spec.rb +67 -0
- data/spec/handlers/class_handler_spec.rb +246 -0
- data/spec/handlers/class_variable_handler_spec.rb +11 -0
- data/spec/handlers/constant_handler_spec.rb +64 -0
- data/spec/handlers/dsl_handler_spec.rb +197 -0
- data/spec/handlers/examples/alias_handler_001.rb.txt +44 -0
- data/spec/handlers/examples/attribute_handler_001.rb.txt +32 -0
- data/spec/handlers/examples/class_condition_handler_001.rb.txt +69 -0
- data/spec/handlers/examples/class_handler_001.rb.txt +120 -0
- data/spec/handlers/examples/class_variable_handler_001.rb.txt +10 -0
- data/spec/handlers/examples/constant_handler_001.rb.txt +25 -0
- data/spec/handlers/examples/dsl_handler_001.rb.txt +125 -0
- data/spec/handlers/examples/exception_handler_001.rb.txt +59 -0
- data/spec/handlers/examples/extend_handler_001.rb.txt +16 -0
- data/spec/handlers/examples/method_condition_handler_001.rb.txt +10 -0
- data/spec/handlers/examples/method_handler_001.rb.txt +126 -0
- data/spec/handlers/examples/mixin_handler_001.rb.txt +37 -0
- data/spec/handlers/examples/module_handler_001.rb.txt +29 -0
- data/spec/handlers/examples/private_constant_handler_001.rb.txt +8 -0
- data/spec/handlers/examples/process_handler_001.rb.txt +11 -0
- data/spec/handlers/examples/visibility_handler_001.rb.txt +32 -0
- data/spec/handlers/examples/yield_handler_001.rb.txt +54 -0
- data/spec/handlers/exception_handler_spec.rb +48 -0
- data/spec/handlers/extend_handler_spec.rb +23 -0
- data/spec/handlers/legacy_base_spec.rb +128 -0
- data/spec/handlers/method_condition_handler_spec.rb +14 -0
- data/spec/handlers/method_handler_spec.rb +184 -0
- data/spec/handlers/mixin_handler_spec.rb +55 -0
- data/spec/handlers/module_function_handler_spec.rb +105 -0
- data/spec/handlers/module_handler_spec.rb +34 -0
- data/spec/handlers/private_constant_handler_spec.rb +24 -0
- data/spec/handlers/processor_spec.rb +34 -0
- data/spec/handlers/ruby/base_spec.rb +94 -0
- data/spec/handlers/ruby/legacy/base_spec.rb +82 -0
- data/spec/handlers/spec_helper.rb +33 -0
- data/spec/handlers/visibility_handler_spec.rb +39 -0
- data/spec/handlers/yield_handler_spec.rb +51 -0
- data/spec/i18n/locale_spec.rb +68 -0
- data/spec/i18n/message_spec.rb +52 -0
- data/spec/i18n/messages_spec.rb +67 -0
- data/spec/i18n/pot_generator_spec.rb +262 -0
- data/spec/i18n/text_spec.rb +180 -0
- data/spec/logging_spec.rb +35 -0
- data/spec/options_spec.rb +171 -0
- data/spec/parser/base_spec.rb +24 -0
- data/spec/parser/c_parser_spec.rb +171 -0
- data/spec/parser/examples/array.c.txt +3887 -0
- data/spec/parser/examples/example1.rb.txt +8 -0
- data/spec/parser/examples/extrafile.c.txt +8 -0
- data/spec/parser/examples/multifile.c.txt +22 -0
- data/spec/parser/examples/override.c.txt +424 -0
- data/spec/parser/examples/parse_in_order_001.rb.txt +2 -0
- data/spec/parser/examples/parse_in_order_002.rb.txt +2 -0
- data/spec/parser/examples/tag_handler_001.rb.txt +8 -0
- data/spec/parser/ruby/ast_node_spec.rb +33 -0
- data/spec/parser/ruby/legacy/statement_list_spec.rb +299 -0
- data/spec/parser/ruby/legacy/token_list_spec.rb +77 -0
- data/spec/parser/ruby/ruby_parser_spec.rb +334 -0
- data/spec/parser/source_parser_spec.rb +717 -0
- data/spec/parser/tag_parsing_spec.rb +18 -0
- data/spec/rake/yardoc_task_spec.rb +101 -0
- data/spec/registry_spec.rb +393 -0
- data/spec/registry_store_spec.rb +315 -0
- data/spec/rubygems/doc_manager_spec.rb +112 -0
- data/spec/serializers/data/serialized_yardoc/checksums +1 -0
- data/spec/serializers/data/serialized_yardoc/objects/Foo/bar_i.dat +0 -0
- data/spec/serializers/data/serialized_yardoc/objects/Foo/baz_i.dat +0 -0
- data/spec/serializers/data/serialized_yardoc/objects/Foo.dat +0 -0
- data/spec/serializers/data/serialized_yardoc/objects/root.dat +0 -0
- data/spec/serializers/data/serialized_yardoc/proxy_types +2 -0
- data/spec/serializers/file_system_serializer_spec.rb +124 -0
- data/spec/serializers/spec_helper.rb +2 -0
- data/spec/serializers/yardoc_serializer_spec.rb +46 -0
- data/spec/server/adapter_spec.rb +38 -0
- data/spec/server/commands/base_spec.rb +87 -0
- data/spec/server/commands/library_command_spec.rb +39 -0
- data/spec/server/commands/static_file_command_spec.rb +84 -0
- data/spec/server/doc_server_helper_spec.rb +53 -0
- data/spec/server/doc_server_serializer_spec.rb +45 -0
- data/spec/server/rack_adapter_spec.rb +20 -0
- data/spec/server/router_spec.rb +122 -0
- data/spec/server/spec_helper.rb +17 -0
- data/spec/server/static_caching_spec.rb +39 -0
- data/spec/server/webrick_servlet_spec.rb +20 -0
- data/spec/server_spec.rb +10 -0
- data/spec/spec_helper.rb +128 -0
- data/spec/tags/default_factory_spec.rb +152 -0
- data/spec/tags/default_tag_spec.rb +11 -0
- data/spec/tags/directives_spec.rb +453 -0
- data/spec/tags/library_spec.rb +34 -0
- data/spec/tags/overload_tag_spec.rb +53 -0
- data/spec/tags/ref_tag_list_spec.rb +53 -0
- data/spec/templates/class_spec.rb +44 -0
- data/spec/templates/constant_spec.rb +40 -0
- data/spec/templates/engine_spec.rb +121 -0
- data/spec/templates/examples/class001.html +280 -0
- data/spec/templates/examples/class001.txt +36 -0
- data/spec/templates/examples/class002.html +35 -0
- data/spec/templates/examples/constant001.txt +25 -0
- data/spec/templates/examples/constant002.txt +7 -0
- data/spec/templates/examples/constant003.txt +11 -0
- data/spec/templates/examples/method001.html +130 -0
- data/spec/templates/examples/method001.txt +35 -0
- data/spec/templates/examples/method002.html +86 -0
- data/spec/templates/examples/method002.txt +20 -0
- data/spec/templates/examples/method003.html +159 -0
- data/spec/templates/examples/method003.txt +45 -0
- data/spec/templates/examples/method004.html +44 -0
- data/spec/templates/examples/method004.txt +10 -0
- data/spec/templates/examples/method005.html +99 -0
- data/spec/templates/examples/method005.txt +33 -0
- data/spec/templates/examples/module001.dot +33 -0
- data/spec/templates/examples/module001.html +825 -0
- data/spec/templates/examples/module001.txt +33 -0
- data/spec/templates/examples/module002.html +318 -0
- data/spec/templates/examples/module003.html +185 -0
- data/spec/templates/examples/module004.html +387 -0
- data/spec/templates/examples/tag001.txt +82 -0
- data/spec/templates/helpers/base_helper_spec.rb +175 -0
- data/spec/templates/helpers/html_helper_spec.rb +612 -0
- data/spec/templates/helpers/html_syntax_highlight_helper_spec.rb +48 -0
- data/spec/templates/helpers/markup/rdoc_markup_spec.rb +93 -0
- data/spec/templates/helpers/markup_helper_spec.rb +135 -0
- data/spec/templates/helpers/method_helper_spec.rb +82 -0
- data/spec/templates/helpers/shared_signature_examples.rb +123 -0
- data/spec/templates/helpers/text_helper_spec.rb +44 -0
- data/spec/templates/method_spec.rb +102 -0
- data/spec/templates/module_spec.rb +181 -0
- data/spec/templates/onefile_spec.rb +64 -0
- data/spec/templates/section_spec.rb +146 -0
- data/spec/templates/spec_helper.rb +73 -0
- data/spec/templates/tag_spec.rb +51 -0
- data/spec/templates/template_spec.rb +409 -0
- data/spec/verifier_spec.rb +106 -0
- data/templates/default/class/dot/setup.rb +6 -0
- data/templates/default/class/dot/superklass.erb +3 -0
- data/templates/default/class/html/constructor_details.erb +8 -0
- data/templates/default/class/html/setup.rb +1 -0
- data/templates/default/class/html/subclasses.erb +4 -0
- data/templates/default/class/setup.rb +36 -0
- data/templates/default/class/text/setup.rb +11 -0
- data/templates/default/class/text/subclasses.erb +5 -0
- data/templates/default/constant/text/header.erb +11 -0
- data/templates/default/constant/text/setup.rb +3 -0
- data/templates/default/docstring/html/abstract.erb +4 -0
- data/templates/default/docstring/html/deprecated.erb +1 -0
- data/templates/default/docstring/html/index.erb +5 -0
- data/templates/default/docstring/html/note.erb +6 -0
- data/templates/default/docstring/html/private.erb +4 -0
- data/templates/default/docstring/html/returns_void.erb +1 -0
- data/templates/default/docstring/html/text.erb +1 -0
- data/templates/default/docstring/html/todo.erb +6 -0
- data/templates/default/docstring/setup.rb +51 -0
- data/templates/default/docstring/text/abstract.erb +2 -0
- data/templates/default/docstring/text/deprecated.erb +2 -0
- data/templates/default/docstring/text/index.erb +2 -0
- data/templates/default/docstring/text/note.erb +4 -0
- data/templates/default/docstring/text/private.erb +2 -0
- data/templates/default/docstring/text/returns_void.erb +1 -0
- data/templates/default/docstring/text/text.erb +1 -0
- data/templates/default/docstring/text/todo.erb +4 -0
- data/templates/default/fulldoc/html/css/common.css +1 -0
- data/templates/default/fulldoc/html/css/full_list.css +57 -0
- data/templates/default/fulldoc/html/css/style.css +338 -0
- data/templates/default/fulldoc/html/frames.erb +28 -0
- data/templates/default/fulldoc/html/full_list.erb +40 -0
- data/templates/default/fulldoc/html/full_list_class.erb +2 -0
- data/templates/default/fulldoc/html/full_list_file.erb +5 -0
- data/templates/default/fulldoc/html/full_list_method.erb +8 -0
- data/templates/default/fulldoc/html/js/app.js +214 -0
- data/templates/default/fulldoc/html/js/full_list.js +178 -0
- data/templates/default/fulldoc/html/js/jquery.js +4 -0
- data/templates/default/fulldoc/html/setup.rb +199 -0
- data/templates/default/layout/dot/header.erb +6 -0
- data/templates/default/layout/dot/setup.rb +14 -0
- data/templates/default/layout/html/breadcrumb.erb +13 -0
- data/templates/default/layout/html/files.erb +11 -0
- data/templates/default/layout/html/footer.erb +5 -0
- data/templates/default/layout/html/headers.erb +14 -0
- data/templates/default/layout/html/index.erb +2 -0
- data/templates/default/layout/html/layout.erb +20 -0
- data/templates/default/layout/html/listing.erb +4 -0
- data/templates/default/layout/html/objects.erb +32 -0
- data/templates/default/layout/html/script_setup.erb +5 -0
- data/templates/default/layout/html/search.erb +8 -0
- data/templates/default/layout/html/setup.rb +71 -0
- data/templates/default/method/html/header.erb +16 -0
- data/templates/default/method/setup.rb +3 -0
- data/templates/default/method/text/header.erb +1 -0
- data/templates/default/method_details/html/header.erb +3 -0
- data/templates/default/method_details/html/method_signature.erb +25 -0
- data/templates/default/method_details/html/source.erb +10 -0
- data/templates/default/method_details/setup.rb +10 -0
- data/templates/default/method_details/text/header.erb +10 -0
- data/templates/default/method_details/text/method_signature.erb +12 -0
- data/templates/default/method_details/text/setup.rb +10 -0
- data/templates/default/module/dot/child.erb +1 -0
- data/templates/default/module/dot/dependencies.erb +3 -0
- data/templates/default/module/dot/header.erb +6 -0
- data/templates/default/module/dot/info.erb +14 -0
- data/templates/default/module/dot/setup.rb +14 -0
- data/templates/default/module/html/attribute_details.erb +10 -0
- data/templates/default/module/html/attribute_summary.erb +8 -0
- data/templates/default/module/html/box_info.erb +37 -0
- data/templates/default/module/html/children.erb +8 -0
- data/templates/default/module/html/constant_summary.erb +13 -0
- data/templates/default/module/html/defines.erb +3 -0
- data/templates/default/module/html/header.erb +5 -0
- data/templates/default/module/html/inherited_attributes.erb +14 -0
- data/templates/default/module/html/inherited_constants.erb +8 -0
- data/templates/default/module/html/inherited_methods.erb +19 -0
- data/templates/default/module/html/item_summary.erb +40 -0
- data/templates/default/module/html/method_details_list.erb +9 -0
- data/templates/default/module/html/method_summary.erb +14 -0
- data/templates/default/module/html/methodmissing.erb +12 -0
- data/templates/default/module/html/pre_docstring.erb +1 -0
- data/templates/default/module/setup.rb +164 -0
- data/templates/default/module/text/children.erb +10 -0
- data/templates/default/module/text/class_meths_list.erb +8 -0
- data/templates/default/module/text/extends.erb +8 -0
- data/templates/default/module/text/header.erb +7 -0
- data/templates/default/module/text/includes.erb +8 -0
- data/templates/default/module/text/instance_meths_list.erb +8 -0
- data/templates/default/module/text/setup.rb +12 -0
- data/templates/default/onefile/html/files.erb +5 -0
- data/templates/default/onefile/html/headers.erb +6 -0
- data/templates/default/onefile/html/layout.erb +17 -0
- data/templates/default/onefile/html/readme.erb +3 -0
- data/templates/default/onefile/html/setup.rb +61 -0
- data/templates/default/root/dot/child.erb +3 -0
- data/templates/default/root/dot/setup.rb +5 -0
- data/templates/default/root/html/setup.rb +1 -0
- data/templates/default/tags/html/example.erb +11 -0
- data/templates/default/tags/html/index.erb +3 -0
- data/templates/default/tags/html/option.erb +24 -0
- data/templates/default/tags/html/overload.erb +14 -0
- data/templates/default/tags/html/see.erb +8 -0
- data/templates/default/tags/html/tag.erb +20 -0
- data/templates/default/tags/setup.rb +55 -0
- data/templates/default/tags/text/example.erb +12 -0
- data/templates/default/tags/text/index.erb +1 -0
- data/templates/default/tags/text/option.erb +20 -0
- data/templates/default/tags/text/overload.erb +19 -0
- data/templates/default/tags/text/see.erb +11 -0
- data/templates/default/tags/text/tag.erb +13 -0
- data/templates/guide/class/html/setup.rb +1 -0
- data/templates/guide/docstring/html/setup.rb +1 -0
- data/templates/guide/fulldoc/html/css/style.css +108 -0
- data/templates/guide/fulldoc/html/js/app.js +33 -0
- data/templates/guide/fulldoc/html/setup.rb +73 -0
- data/templates/guide/layout/html/layout.erb +81 -0
- data/templates/guide/layout/html/setup.rb +28 -0
- data/templates/guide/method/html/header.erb +18 -0
- data/templates/guide/method/html/setup.rb +21 -0
- data/templates/guide/module/html/header.erb +7 -0
- data/templates/guide/module/html/method_list.erb +5 -0
- data/templates/guide/module/html/setup.rb +26 -0
- data/templates/guide/onefile/html/files.erb +4 -0
- data/templates/guide/onefile/html/setup.rb +5 -0
- data/templates/guide/onefile/html/toc.erb +3 -0
- data/templates/guide/tags/html/setup.rb +8 -0
- metadata +689 -0
|
@@ -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
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
module YARD
|
|
2
|
+
module CLI
|
|
3
|
+
# Lists all constant and method names in the codebase. Uses {Yardoc} --list.
|
|
4
|
+
class List < Command
|
|
5
|
+
def description; 'Lists all constant and methods. Uses `yard doc --list`' end
|
|
6
|
+
|
|
7
|
+
# Runs the commandline utility, parsing arguments and displaying a
|
|
8
|
+
# list of objects
|
|
9
|
+
#
|
|
10
|
+
# @param [Array<String>] args the list of arguments.
|
|
11
|
+
# @return [void]
|
|
12
|
+
def run(*args)
|
|
13
|
+
if args.include?('--help')
|
|
14
|
+
log.puts "Usage: yard list [yardoc_options]"
|
|
15
|
+
log.puts "Takes the same arguments as yardoc. See yardoc --help"
|
|
16
|
+
else
|
|
17
|
+
Yardoc.run('-c', '--list', *args)
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
module YARD
|
|
2
|
+
module CLI
|
|
3
|
+
# Lists all markup types
|
|
4
|
+
# @since 0.8.6
|
|
5
|
+
class MarkupTypes < Command
|
|
6
|
+
def description; 'Lists all available markup types and libraries' end
|
|
7
|
+
|
|
8
|
+
# Runs the commandline utility, parsing arguments and displaying a
|
|
9
|
+
# list of markup types
|
|
10
|
+
#
|
|
11
|
+
# @param [Array<String>] args the list of arguments.
|
|
12
|
+
# @return [void]
|
|
13
|
+
def run(*args)
|
|
14
|
+
log.puts "Available markup types for `doc' command:"
|
|
15
|
+
log.puts
|
|
16
|
+
types = Templates::Helpers::MarkupHelper::MARKUP_PROVIDERS
|
|
17
|
+
exts = Templates::Helpers::MarkupHelper::MARKUP_EXTENSIONS
|
|
18
|
+
types.sort_by {|name, _| name.to_s }.each do |name, providers|
|
|
19
|
+
log.puts "[#{name}]"
|
|
20
|
+
libs = providers.map {|p| p[:lib] }.compact
|
|
21
|
+
if libs.size > 0
|
|
22
|
+
log.puts " Providers: #{libs.join(" ")}"
|
|
23
|
+
end
|
|
24
|
+
if exts[name]
|
|
25
|
+
log.puts " Extensions: #{exts[name].map {|e| ".#{e}"}.join(" ")}"
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
log.puts
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
module YARD
|
|
2
|
+
module CLI
|
|
3
|
+
# A local documentation server
|
|
4
|
+
# @since 0.6.0
|
|
5
|
+
class Server < Command
|
|
6
|
+
# @return [Hash] a list of options to pass to the doc server
|
|
7
|
+
attr_accessor :options
|
|
8
|
+
|
|
9
|
+
# @return [Hash] a list of options to pass to the web server
|
|
10
|
+
attr_accessor :server_options
|
|
11
|
+
|
|
12
|
+
# @return [Hash] a list of library names and yardoc files to serve
|
|
13
|
+
attr_accessor :libraries
|
|
14
|
+
|
|
15
|
+
# @return [Adapter] the adapter to use for loading the web server
|
|
16
|
+
attr_accessor :adapter
|
|
17
|
+
|
|
18
|
+
# @return [Array<String>] a list of scripts to load
|
|
19
|
+
# @since 0.6.2
|
|
20
|
+
attr_accessor :scripts
|
|
21
|
+
|
|
22
|
+
# @return [Array<String>] a list of template paths to register
|
|
23
|
+
# @since 0.6.2
|
|
24
|
+
attr_accessor :template_paths
|
|
25
|
+
|
|
26
|
+
# Creates a new instance of the Server command line utility
|
|
27
|
+
def initialize
|
|
28
|
+
super
|
|
29
|
+
self.scripts = []
|
|
30
|
+
self.template_paths = []
|
|
31
|
+
self.libraries = {}
|
|
32
|
+
self.options = SymbolHash.new(false).update(
|
|
33
|
+
:single_library => true,
|
|
34
|
+
:caching => false
|
|
35
|
+
)
|
|
36
|
+
self.server_options = {:Port => 8808}
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def description
|
|
40
|
+
"Runs a local documentation server"
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def run(*args)
|
|
44
|
+
optparse(*args)
|
|
45
|
+
|
|
46
|
+
select_adapter.setup
|
|
47
|
+
load_scripts
|
|
48
|
+
load_template_paths
|
|
49
|
+
adapter.new(libraries, options, server_options).start
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
private
|
|
53
|
+
|
|
54
|
+
def load_scripts
|
|
55
|
+
scripts.each {|file| load_script(file) }
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
def load_template_paths
|
|
59
|
+
return if YARD::Config.options[:safe_mode]
|
|
60
|
+
Templates::Engine.template_paths |= template_paths
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
def select_adapter
|
|
64
|
+
return adapter if adapter
|
|
65
|
+
require 'rubygems'
|
|
66
|
+
require 'rack'
|
|
67
|
+
self.adapter = YARD::Server::RackAdapter
|
|
68
|
+
rescue LoadError
|
|
69
|
+
self.adapter = YARD::Server::WebrickAdapter
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
def add_libraries(args)
|
|
73
|
+
(0...args.size).step(2) do |index|
|
|
74
|
+
library, dir = args[index], args[index + 1]
|
|
75
|
+
|
|
76
|
+
libver = nil
|
|
77
|
+
if dir
|
|
78
|
+
if File.exist?(dir)
|
|
79
|
+
# Provided dir contains a .yardopts file
|
|
80
|
+
libver = create_library_version_if_yardopts_exist(library, dir)
|
|
81
|
+
libver ||= YARD::Server::LibraryVersion.new(library, nil, dir)
|
|
82
|
+
end
|
|
83
|
+
else
|
|
84
|
+
# Check if this dir contains a .yardopts file
|
|
85
|
+
pwd = Dir.pwd
|
|
86
|
+
libver = create_library_version_if_yardopts_exist(library, pwd)
|
|
87
|
+
|
|
88
|
+
# Check default location
|
|
89
|
+
yfile = File.join(pwd, '.yardoc')
|
|
90
|
+
libver ||= YARD::Server::LibraryVersion.new(library, nil, yfile)
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
# Register library
|
|
94
|
+
if libver
|
|
95
|
+
libver.yardoc_file = File.expand_path(libver.yardoc_file) if libver.yardoc_file
|
|
96
|
+
libver.source_path = File.expand_path(libver.source_path) if libver.source_path
|
|
97
|
+
libraries[library] ||= []
|
|
98
|
+
libraries[library] |= [libver]
|
|
99
|
+
else
|
|
100
|
+
log.warn "Cannot find yardoc db for #{library}: #{dir.inspect}"
|
|
101
|
+
end
|
|
102
|
+
end
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
# @param [String] library The library name.
|
|
106
|
+
# @param [String, nil] dir The argument provided on the CLI after the
|
|
107
|
+
# library name. Is supposed to point to either a project directory
|
|
108
|
+
# with a Yard options file, or a yardoc db.
|
|
109
|
+
# @return [LibraryVersion, nil]
|
|
110
|
+
def create_library_version_if_yardopts_exist(library, dir)
|
|
111
|
+
if dir
|
|
112
|
+
options_file = File.join(dir, Yardoc::DEFAULT_YARDOPTS_FILE)
|
|
113
|
+
if File.exist?(options_file)
|
|
114
|
+
# Found yardopts, extract db path
|
|
115
|
+
yfile = extract_db_from_options_file(options_file)
|
|
116
|
+
db = File.expand_path(yfile, dir)
|
|
117
|
+
|
|
118
|
+
# Create libver
|
|
119
|
+
libver = YARD::Server::LibraryVersion.new(library, nil, db)
|
|
120
|
+
libver.source_path = dir
|
|
121
|
+
libver
|
|
122
|
+
end
|
|
123
|
+
end
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
def add_gems
|
|
127
|
+
require 'rubygems'
|
|
128
|
+
Gem.source_index.find_name('').each do |spec|
|
|
129
|
+
libraries[spec.name] ||= []
|
|
130
|
+
libraries[spec.name] |= [YARD::Server::LibraryVersion.new(spec.name, spec.version.to_s, nil, :gem)]
|
|
131
|
+
end
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
def add_gems_from_gemfile(gemfile = nil)
|
|
135
|
+
require 'bundler'
|
|
136
|
+
gemfile ||= "Gemfile"
|
|
137
|
+
if File.exist?("#{gemfile}.lock")
|
|
138
|
+
Bundler::LockfileParser.new(File.read("#{gemfile}.lock")).specs.each do |spec|
|
|
139
|
+
libraries[spec.name] ||= []
|
|
140
|
+
libraries[spec.name] |= [YARD::Server::LibraryVersion.new(spec.name, spec.version.to_s, nil, :gem)]
|
|
141
|
+
end
|
|
142
|
+
else
|
|
143
|
+
log.warn "Cannot find #{gemfile}.lock, ignoring --gemfile option"
|
|
144
|
+
end
|
|
145
|
+
rescue LoadError
|
|
146
|
+
log.error "Bundler not available, ignoring --gemfile option"
|
|
147
|
+
end
|
|
148
|
+
|
|
149
|
+
def optparse(*args)
|
|
150
|
+
opts = OptionParser.new
|
|
151
|
+
opts.banner = 'Usage: yard server [options] [[library yardoc_file] ...]'
|
|
152
|
+
opts.separator ''
|
|
153
|
+
opts.separator 'Example: yard server -m yard .yardoc ruby-core ../ruby/.yardoc'
|
|
154
|
+
opts.separator 'The above example serves documentation for YARD and Ruby-core'
|
|
155
|
+
opts.separator ''
|
|
156
|
+
opts.separator 'If no library/yardoc_file is specified, the server uses'
|
|
157
|
+
opts.separator 'the name of the current directory and `.yardoc` respectively'
|
|
158
|
+
opts.separator ''
|
|
159
|
+
opts.separator "General Options:"
|
|
160
|
+
opts.on('-m', '--multi-library', 'Serves documentation for multiple libraries') do
|
|
161
|
+
options[:single_library] = false
|
|
162
|
+
end
|
|
163
|
+
opts.on('-c', '--cache', 'Caches all documentation to document root (see --docroot)') do
|
|
164
|
+
options[:caching] = true
|
|
165
|
+
end
|
|
166
|
+
opts.on('-r', '--reload', 'Reparses the library code on each request') do
|
|
167
|
+
options[:incremental] = true
|
|
168
|
+
end
|
|
169
|
+
opts.on('-g', '--gems', 'Serves documentation for installed gems') do
|
|
170
|
+
add_gems
|
|
171
|
+
end
|
|
172
|
+
opts.on('-G', '--gemfile [GEMFILE]', 'Serves documentation for gems from Gemfile') do |gemfile|
|
|
173
|
+
add_gems_from_gemfile(gemfile)
|
|
174
|
+
end
|
|
175
|
+
opts.on('-t', '--template-path PATH',
|
|
176
|
+
'The template path to look for templates in. (used with -t).') do |path|
|
|
177
|
+
self.template_paths << path
|
|
178
|
+
end
|
|
179
|
+
opts.separator ''
|
|
180
|
+
opts.separator "Web Server Options:"
|
|
181
|
+
opts.on('-d', '--daemon', 'Daemonizes the server process') do
|
|
182
|
+
server_options[:daemonize] = true
|
|
183
|
+
end
|
|
184
|
+
opts.on('-B HOST', '--bind', 'The host address to bind to') do |host|
|
|
185
|
+
server_options[:Host] = host.to_s
|
|
186
|
+
end
|
|
187
|
+
opts.on('-p PORT', '--port', 'Serves documentation on PORT') do |port|
|
|
188
|
+
server_options[:Port] = port.to_i
|
|
189
|
+
end
|
|
190
|
+
opts.on('--docroot DOCROOT', 'Uses DOCROOT as document root') do |docroot|
|
|
191
|
+
server_options[:DocumentRoot] = File.expand_path(docroot)
|
|
192
|
+
end
|
|
193
|
+
opts.on('-a', '--adapter ADAPTER', 'Use the ADAPTER (full Ruby class) for web server') do |adapter|
|
|
194
|
+
if adapter.downcase == 'webrick'
|
|
195
|
+
self.adapter = YARD::Server::WebrickAdapter
|
|
196
|
+
elsif adapter.downcase == 'rack'
|
|
197
|
+
self.adapter = YARD::Server::RackAdapter
|
|
198
|
+
else
|
|
199
|
+
self.adapter = eval(adapter)
|
|
200
|
+
end
|
|
201
|
+
end
|
|
202
|
+
opts.on('-s', '--server TYPE', 'Use a specific server type eg. thin,mongrel,cgi (Rack specific)') do |type|
|
|
203
|
+
server_options[:server] = type
|
|
204
|
+
end
|
|
205
|
+
common_options(opts)
|
|
206
|
+
opts.on('-e', '--load FILE', 'A Ruby script to load before the source tree is parsed.') do |file|
|
|
207
|
+
self.scripts << file
|
|
208
|
+
end
|
|
209
|
+
parse_options(opts, args)
|
|
210
|
+
|
|
211
|
+
if args.empty? && libraries.empty?
|
|
212
|
+
# No args - try to use current dir
|
|
213
|
+
add_libraries([File.basename(Dir.pwd), nil])
|
|
214
|
+
|
|
215
|
+
# Generate doc for first time
|
|
216
|
+
libver = libraries.empty? ? nil : libraries.values.first.first
|
|
217
|
+
if libver and !File.exist?(libver.yardoc_file)
|
|
218
|
+
generate_doc_for_first_time(libver)
|
|
219
|
+
end
|
|
220
|
+
else
|
|
221
|
+
add_libraries(args)
|
|
222
|
+
options[:single_library] = false if libraries.size > 1
|
|
223
|
+
end
|
|
224
|
+
end
|
|
225
|
+
|
|
226
|
+
def generate_doc_for_first_time(libver)
|
|
227
|
+
log.enter_level(Logger::INFO) do
|
|
228
|
+
yardoc_file = libver.yardoc_file.sub /^#{Regexp.quote Dir.pwd}[\\\/]+/, ''
|
|
229
|
+
log.info "No yardoc db found in #{yardoc_file}, parsing source before starting server..."
|
|
230
|
+
end
|
|
231
|
+
Dir.chdir(libver.source_path) do
|
|
232
|
+
Yardoc.run('-n')
|
|
233
|
+
end
|
|
234
|
+
end
|
|
235
|
+
|
|
236
|
+
def extract_db_from_options_file(options_file)
|
|
237
|
+
args = File.read_binary(options_file).shell_split
|
|
238
|
+
db = YARD::Registry.yardoc_file
|
|
239
|
+
opts = OptionParser.new
|
|
240
|
+
opts.on('-b', '--db FILE') {|file| db = file }
|
|
241
|
+
|
|
242
|
+
begin
|
|
243
|
+
opts.parse!(args)
|
|
244
|
+
rescue OptionParser::ParseError
|
|
245
|
+
args.shift if args.first && args.first[0,1] != '-'
|
|
246
|
+
retry
|
|
247
|
+
end
|
|
248
|
+
|
|
249
|
+
db
|
|
250
|
+
end
|
|
251
|
+
end
|
|
252
|
+
end
|
|
253
|
+
end
|
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
module YARD
|
|
2
|
+
module CLI
|
|
3
|
+
# @since 0.6.0
|
|
4
|
+
class Stats < Yardoc
|
|
5
|
+
include Templates::Helpers::BaseHelper
|
|
6
|
+
|
|
7
|
+
# Maintains the order in which +stats_for_+ statistics methods should be
|
|
8
|
+
# printed.
|
|
9
|
+
#
|
|
10
|
+
# @see #print_statistics
|
|
11
|
+
STATS_ORDER = [:files, :modules, :classes, :constants, :methods]
|
|
12
|
+
|
|
13
|
+
# @return [Boolean] whether to parse and load registry
|
|
14
|
+
attr_accessor :parse
|
|
15
|
+
|
|
16
|
+
# @param [Boolean] parse whether to parse and load registry (see {#parse})
|
|
17
|
+
def initialize(parse = true)
|
|
18
|
+
super()
|
|
19
|
+
@parse = parse
|
|
20
|
+
@undoc_list = nil
|
|
21
|
+
@compact = false
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def description
|
|
25
|
+
"Prints documentation statistics on a set of files"
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
# Runs the commandline utility, parsing arguments and generating
|
|
29
|
+
# output if set.
|
|
30
|
+
#
|
|
31
|
+
# @param [Array<String>] args the list of arguments
|
|
32
|
+
# @return [void]
|
|
33
|
+
def run(*args)
|
|
34
|
+
parse_arguments(*args)
|
|
35
|
+
|
|
36
|
+
if use_cache
|
|
37
|
+
Registry.load!
|
|
38
|
+
elsif parse
|
|
39
|
+
YARD.parse(files, excluded)
|
|
40
|
+
Registry.save(use_cache) if save_yardoc
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
print_statistics
|
|
44
|
+
print_undocumented_objects
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
# Prints statistics for different object types
|
|
48
|
+
#
|
|
49
|
+
# To add statistics for a specific type, add a method +#stats_for_TYPE+
|
|
50
|
+
# to this class that calls {#output}.
|
|
51
|
+
def print_statistics
|
|
52
|
+
@total, @undocumented = 0, 0
|
|
53
|
+
meths = methods.map {|m| m.to_s }.grep(/^stats_for_/)
|
|
54
|
+
STATS_ORDER.each do |meth|
|
|
55
|
+
mname = "stats_for_#{meth}"
|
|
56
|
+
if meths.include?(mname)
|
|
57
|
+
send(mname)
|
|
58
|
+
meths.delete(mname)
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
meths.each {|m| send(m) }
|
|
62
|
+
if @total == 0
|
|
63
|
+
total = 0
|
|
64
|
+
else
|
|
65
|
+
total = (@total - @undocumented).to_f / @total.to_f * 100
|
|
66
|
+
end
|
|
67
|
+
log.puts("% 3.2f%% documented" % total)
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
# Prints list of undocumented objects
|
|
71
|
+
def print_undocumented_objects
|
|
72
|
+
return if !@undoc_list || @undoc_list.empty?
|
|
73
|
+
log.puts
|
|
74
|
+
log.puts "Undocumented Objects:"
|
|
75
|
+
|
|
76
|
+
objects = @undoc_list.sort_by {|o| o.file }
|
|
77
|
+
max = objects.sort_by {|o| o.path.length }.last.path.length
|
|
78
|
+
if @compact
|
|
79
|
+
objects.each do |object|
|
|
80
|
+
log.puts("%-#{max}s (%s)" % [object.path,
|
|
81
|
+
[object.file, object.line].compact.join(":")])
|
|
82
|
+
end
|
|
83
|
+
else
|
|
84
|
+
last_file = nil
|
|
85
|
+
objects.each do |object|
|
|
86
|
+
if object.file != last_file
|
|
87
|
+
log.puts
|
|
88
|
+
log.puts "(in file: #{object.file})"
|
|
89
|
+
end
|
|
90
|
+
log.puts object.path
|
|
91
|
+
last_file = object.file
|
|
92
|
+
end
|
|
93
|
+
end
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
# @return [Array<CodeObjects::Base>] all the parsed objects in the registry,
|
|
97
|
+
# removing any objects that are not visible (private, protected) depending
|
|
98
|
+
# on the arguments passed to the command.
|
|
99
|
+
def all_objects
|
|
100
|
+
@all_objects ||= run_verifier Registry.all
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
# Statistics for files
|
|
104
|
+
def stats_for_files
|
|
105
|
+
files = []
|
|
106
|
+
all_objects.each {|o| files |= [o.file] }
|
|
107
|
+
output "Files", files.size
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
# Statistics for modules
|
|
111
|
+
def stats_for_modules
|
|
112
|
+
output "Modules", *type_statistics(:module)
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
# Statistics for classes
|
|
116
|
+
def stats_for_classes
|
|
117
|
+
output "Classes", *type_statistics(:class)
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
# Statistics for constants
|
|
121
|
+
def stats_for_constants
|
|
122
|
+
output "Constants", *type_statistics(:constant)
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
# Statistics for methods
|
|
126
|
+
def stats_for_methods
|
|
127
|
+
objs = all_objects.select {|m| m.type == :method }
|
|
128
|
+
objs.reject! {|m| m.is_alias? || !m.is_explicit? }
|
|
129
|
+
undoc = objs.select {|m| m.docstring.blank? && !m.overridden_method }
|
|
130
|
+
@undoc_list |= undoc if @undoc_list
|
|
131
|
+
output "Methods", objs.size, undoc.size
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
# Prints a statistic to standard out. This method is optimized for
|
|
135
|
+
# getting Integer values, though it allows any data to be printed.
|
|
136
|
+
#
|
|
137
|
+
# @param [String] name the statistic name
|
|
138
|
+
# @param [Integer, String] data the numeric (or any) data representing
|
|
139
|
+
# the statistic. If +data+ is an Integer, it should represent the
|
|
140
|
+
# total objects of a type.
|
|
141
|
+
# @param [Integer, nil] undoc number of undocumented objects for the type
|
|
142
|
+
# @return [void]
|
|
143
|
+
def output(name, data, undoc = nil)
|
|
144
|
+
@total += data if data.is_a?(Integer) && undoc
|
|
145
|
+
@undocumented += undoc if undoc.is_a?(Integer)
|
|
146
|
+
if undoc
|
|
147
|
+
data = ("%5s (% 5d undocumented)" % [data, undoc])
|
|
148
|
+
else
|
|
149
|
+
data = "%5s" % data
|
|
150
|
+
end
|
|
151
|
+
log.puts("%-12s %s" % [name + ":", data])
|
|
152
|
+
end
|
|
153
|
+
|
|
154
|
+
private
|
|
155
|
+
|
|
156
|
+
def type_statistics(type)
|
|
157
|
+
objs = all_objects.select {|m| m.type == type }
|
|
158
|
+
undoc = objs.find_all {|m| m.docstring.blank? }
|
|
159
|
+
@undoc_list |= undoc if @undoc_list
|
|
160
|
+
[objs.size, undoc.size]
|
|
161
|
+
end
|
|
162
|
+
|
|
163
|
+
# Parses commandline options.
|
|
164
|
+
# @param [Array<String>] args each tokenized argument
|
|
165
|
+
def optparse(*args)
|
|
166
|
+
opts = OptionParser.new
|
|
167
|
+
opts.banner = "Usage: yard stats [options] [source_files]"
|
|
168
|
+
|
|
169
|
+
opts.separator "(if a list of source files is omitted, lib/**/*.rb ext/**/*.c is used.)"
|
|
170
|
+
|
|
171
|
+
general_options(opts)
|
|
172
|
+
output_options(opts)
|
|
173
|
+
tag_options(opts)
|
|
174
|
+
common_options(opts)
|
|
175
|
+
parse_options(opts, args)
|
|
176
|
+
parse_files(*args) unless args.empty?
|
|
177
|
+
end
|
|
178
|
+
|
|
179
|
+
def general_options(opts)
|
|
180
|
+
super(opts)
|
|
181
|
+
|
|
182
|
+
opts.on('--list-undoc', 'List all undocumented objects') do
|
|
183
|
+
@undoc_list = []
|
|
184
|
+
end
|
|
185
|
+
|
|
186
|
+
opts.on('--compact', 'Compact undocumented objects listing') do
|
|
187
|
+
@compact = true
|
|
188
|
+
end
|
|
189
|
+
|
|
190
|
+
opts.on('--no-public', "Don't include public methods in statistics.") do
|
|
191
|
+
visibilities.delete(:public)
|
|
192
|
+
end
|
|
193
|
+
|
|
194
|
+
opts.on('--protected', "Include protected methods in statistics.") do
|
|
195
|
+
visibilities.push(:protected)
|
|
196
|
+
end
|
|
197
|
+
|
|
198
|
+
opts.on('--private', "Include private methods in statistics.") do
|
|
199
|
+
visibilities.push(:private)
|
|
200
|
+
end
|
|
201
|
+
|
|
202
|
+
opts.on('--no-private', "Don't include objects with @private tag in statistics.") do
|
|
203
|
+
options[:verifier].add_expressions '!object.tag(:private) &&
|
|
204
|
+
(object.namespace.type == :proxy || !object.namespace.tag(:private))'
|
|
205
|
+
end
|
|
206
|
+
|
|
207
|
+
opts.on('--query QUERY', "Only includes objects that match a specific query") do |query|
|
|
208
|
+
options[:verifier].add_expressions(query.taint)
|
|
209
|
+
end
|
|
210
|
+
end
|
|
211
|
+
end
|
|
212
|
+
end
|
|
213
|
+
end
|