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,85 @@
|
|
|
1
|
+
# (see Ruby::MethodHandler)
|
|
2
|
+
class YARD::Handlers::Ruby::Legacy::MethodHandler < YARD::Handlers::Ruby::Legacy::Base
|
|
3
|
+
handles TkDEF
|
|
4
|
+
|
|
5
|
+
process do
|
|
6
|
+
nobj = namespace
|
|
7
|
+
mscope = scope
|
|
8
|
+
|
|
9
|
+
if statement.tokens.to_s =~ /^def\s+(#{METHODMATCH})(?:(?:\s+|\s*\()(.*)(?:\)\s*$)?)?/m
|
|
10
|
+
meth, args = $1, $2
|
|
11
|
+
meth.gsub!(/\s+/,'')
|
|
12
|
+
args = tokval_list(YARD::Parser::Ruby::Legacy::TokenList.new(args), :all)
|
|
13
|
+
args.map! do |a|
|
|
14
|
+
k, v, r = *a.split(/(:)|=/, 2)
|
|
15
|
+
if r
|
|
16
|
+
k += v
|
|
17
|
+
v = r
|
|
18
|
+
end
|
|
19
|
+
[k.strip, (v ? v.strip : nil)]
|
|
20
|
+
end if args
|
|
21
|
+
else
|
|
22
|
+
raise YARD::Parser::UndocumentableError, "method: invalid name"
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
# Class method if prefixed by self(::|.) or Module(::|.)
|
|
26
|
+
if meth =~ /(?:#{NSEPQ}|#{CSEPQ})([^#{NSEP}#{CSEPQ}]+)$/
|
|
27
|
+
mscope, meth, prefix = :class, $1, $`
|
|
28
|
+
if prefix =~ /^[a-z]/ && prefix != "self"
|
|
29
|
+
raise YARD::Parser::UndocumentableError, 'method defined on object instance'
|
|
30
|
+
end
|
|
31
|
+
nobj = P(namespace, prefix) unless prefix == "self"
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
nobj = P(namespace, nobj.value) while nobj.type == :constant
|
|
35
|
+
obj = register MethodObject.new(nobj, meth, mscope) do |o|
|
|
36
|
+
o.explicit = true
|
|
37
|
+
o.parameters = args
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
# delete any aliases referencing old method
|
|
41
|
+
nobj.aliases.each do |aobj, name|
|
|
42
|
+
next unless name == obj.name
|
|
43
|
+
nobj.aliases.delete(aobj)
|
|
44
|
+
end if nobj.is_a?(NamespaceObject)
|
|
45
|
+
|
|
46
|
+
if mscope == :instance && meth == "initialize"
|
|
47
|
+
unless obj.has_tag?(:return)
|
|
48
|
+
obj.add_tag(YARD::Tags::Tag.new(:return,
|
|
49
|
+
"a new instance of #{namespace.name}", namespace.name.to_s))
|
|
50
|
+
end
|
|
51
|
+
elsif mscope == :class && obj.docstring.blank? && %w(inherited included
|
|
52
|
+
extended method_added method_removed method_undefined).include?(meth)
|
|
53
|
+
obj.add_tag(YARD::Tags::Tag.new(:private, nil))
|
|
54
|
+
elsif meth.to_s =~ /\?$/
|
|
55
|
+
if obj.tag(:return) && (obj.tag(:return).types || []).empty?
|
|
56
|
+
obj.tag(:return).types = ['Boolean']
|
|
57
|
+
elsif obj.tag(:return).nil?
|
|
58
|
+
unless obj.tags(:overload).any? {|overload| overload.tag(:return) }
|
|
59
|
+
obj.add_tag(YARD::Tags::Tag.new(:return, "", "Boolean"))
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
if obj.has_tag?(:option)
|
|
65
|
+
# create the options parameter if its missing
|
|
66
|
+
obj.tags(:option).each do |option|
|
|
67
|
+
expected_param = option.name
|
|
68
|
+
unless obj.tags(:param).find {|x| x.name == expected_param }
|
|
69
|
+
new_tag = YARD::Tags::Tag.new(:param, "a customizable set of options", "Hash", expected_param)
|
|
70
|
+
obj.add_tag(new_tag)
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
if info = obj.attr_info
|
|
76
|
+
if meth.to_s =~ /=$/ # writer
|
|
77
|
+
info[:write] = obj if info[:read]
|
|
78
|
+
else
|
|
79
|
+
info[:read] = obj if info[:write]
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
parse_block(:owner => obj) # mainly for yield/exceptions
|
|
84
|
+
end
|
|
85
|
+
end
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# (see Ruby::MixinHandler)
|
|
2
|
+
class YARD::Handlers::Ruby::Legacy::MixinHandler < YARD::Handlers::Ruby::Legacy::Base
|
|
3
|
+
handles /\Ainclude(\s|\()/
|
|
4
|
+
namespace_only
|
|
5
|
+
|
|
6
|
+
process do
|
|
7
|
+
errors = []
|
|
8
|
+
statement.tokens[1..-1].to_s.split(/\s*,\s*/).reverse.each do |mixin|
|
|
9
|
+
mixin = mixin.strip
|
|
10
|
+
begin
|
|
11
|
+
process_mixin(mixin)
|
|
12
|
+
rescue YARD::Parser::UndocumentableError => err
|
|
13
|
+
errors << err.message
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
if errors.size > 0
|
|
18
|
+
msg = errors.size == 1 ? ": #{errors[0]}" : "s: #{errors.join(", ")}"
|
|
19
|
+
raise YARD::Parser::UndocumentableError, "mixin#{msg} for class #{namespace.path}"
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
private
|
|
24
|
+
|
|
25
|
+
def process_mixin(mixin)
|
|
26
|
+
unless mixmatch = mixin[/\A(#{NAMESPACEMATCH})/, 1]
|
|
27
|
+
raise YARD::Parser::UndocumentableError
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
case obj = Proxy.new(namespace, mixmatch)
|
|
31
|
+
when ConstantObject # If a constant is included, use its value as the real object
|
|
32
|
+
obj = Proxy.new(namespace, obj.value, :module)
|
|
33
|
+
else
|
|
34
|
+
obj = Proxy.new(namespace, mixmatch, :module)
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
namespace.mixins(scope).unshift(obj) unless namespace.mixins(scope).include?(obj)
|
|
38
|
+
end
|
|
39
|
+
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# (see Ruby::ModuleFunctionHandler)
|
|
2
|
+
class YARD::Handlers::Ruby::Legacy::ModuleFunctionHandler < YARD::Handlers::Ruby::Legacy::Base
|
|
3
|
+
handles /\A(module_function)(\s|\(|$)/
|
|
4
|
+
namespace_only
|
|
5
|
+
|
|
6
|
+
process do
|
|
7
|
+
if statement.tokens.size == 1
|
|
8
|
+
self.scope = :module
|
|
9
|
+
else
|
|
10
|
+
tokval_list(statement.tokens[2..-1], :attr).each do |name|
|
|
11
|
+
instance_method = MethodObject.new(namespace, name)
|
|
12
|
+
class_method = MethodObject.new(namespace, name, :module)
|
|
13
|
+
instance_method.copy_to(class_method)
|
|
14
|
+
class_method.visibility = :public
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# (see Ruby::ModuleHandler)
|
|
2
|
+
class YARD::Handlers::Ruby::Legacy::ModuleHandler < YARD::Handlers::Ruby::Legacy::Base
|
|
3
|
+
handles TkMODULE
|
|
4
|
+
namespace_only
|
|
5
|
+
|
|
6
|
+
process do
|
|
7
|
+
modname = statement.tokens.to_s[/^module\s+(#{NAMESPACEMATCH})/, 1]
|
|
8
|
+
mod = register ModuleObject.new(namespace, modname)
|
|
9
|
+
parse_block(:namespace => mod)
|
|
10
|
+
end
|
|
11
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# (see Ruby::PrivateConstantHandler)
|
|
2
|
+
class YARD::Handlers::Ruby::Legacy::PrivateConstantHandler < YARD::Handlers::Ruby::Legacy::Base
|
|
3
|
+
handles /\Aprivate_constant(\s|\(|$)/
|
|
4
|
+
namespace_only
|
|
5
|
+
|
|
6
|
+
process do
|
|
7
|
+
tokval_list(statement.tokens[2..-1], :attr, TkCONSTANT).each do |name|
|
|
8
|
+
privatize_constant name
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
private
|
|
13
|
+
|
|
14
|
+
def privatize_constant(name)
|
|
15
|
+
const = Proxy.new(namespace, name)
|
|
16
|
+
ensure_loaded!(const)
|
|
17
|
+
const.visibility = :private
|
|
18
|
+
rescue NamespaceMissingError
|
|
19
|
+
raise UndocumentableError, "private visibility set on unrecognized constant: #{name}"
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# (see Ruby::VisibilityHandler)
|
|
2
|
+
class YARD::Handlers::Ruby::Legacy::VisibilityHandler < YARD::Handlers::Ruby::Legacy::Base
|
|
3
|
+
handles /\A(protected|private|public)(\s|\(|$)/
|
|
4
|
+
namespace_only
|
|
5
|
+
|
|
6
|
+
process do
|
|
7
|
+
vis = statement.tokens.first.text
|
|
8
|
+
if statement.tokens.size == 1
|
|
9
|
+
self.visibility = vis
|
|
10
|
+
else
|
|
11
|
+
tokval_list(statement.tokens[2..-1], :attr).each do |name|
|
|
12
|
+
MethodObject.new(namespace, name, scope) {|o| o.visibility = vis }
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# (see Ruby::YieldHandler)
|
|
2
|
+
class YARD::Handlers::Ruby::Legacy::YieldHandler < YARD::Handlers::Ruby::Legacy::Base
|
|
3
|
+
handles TkYIELD
|
|
4
|
+
|
|
5
|
+
process do
|
|
6
|
+
return unless owner.is_a?(MethodObject) # Only methods yield
|
|
7
|
+
return if owner.has_tag? :yield # Don't override yield tags
|
|
8
|
+
return if owner.has_tag? :yieldparam # Same thing.
|
|
9
|
+
|
|
10
|
+
yieldtag = YARD::Tags::Tag.new(:yield, "", [])
|
|
11
|
+
tokval_list(statement.tokens[2..-1], Token).each do |item|
|
|
12
|
+
item = item.inspect unless item.is_a?(String)
|
|
13
|
+
if item == "self"
|
|
14
|
+
yieldtag.types << '_self'
|
|
15
|
+
owner.add_tag YARD::Tags::Tag.new(:yieldparam,
|
|
16
|
+
"the object that the method was called on", owner.namespace.path, '_self')
|
|
17
|
+
elsif item == "super"
|
|
18
|
+
yieldtag.types << '_super'
|
|
19
|
+
owner.add_tag YARD::Tags::Tag.new(:yieldparam,
|
|
20
|
+
"the result of the method from the superclass", nil, '_super')
|
|
21
|
+
else
|
|
22
|
+
yieldtag.types << item
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
owner.add_tag(yieldtag) unless yieldtag.types.empty?
|
|
27
|
+
end
|
|
28
|
+
end
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
# Handles a method definition
|
|
2
|
+
class YARD::Handlers::Ruby::MethodHandler < YARD::Handlers::Ruby::Base
|
|
3
|
+
handles :def, :defs
|
|
4
|
+
|
|
5
|
+
process do
|
|
6
|
+
meth = statement.method_name(true).to_s
|
|
7
|
+
args = format_args
|
|
8
|
+
blk = statement.block
|
|
9
|
+
nobj = namespace
|
|
10
|
+
mscope = scope
|
|
11
|
+
if statement.type == :defs
|
|
12
|
+
if statement[0][0].type == :ident
|
|
13
|
+
raise YARD::Parser::UndocumentableError, 'method defined on object instance'
|
|
14
|
+
end
|
|
15
|
+
nobj = P(namespace, statement[0].source) if statement[0][0].type == :const
|
|
16
|
+
mscope = :class
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
nobj = P(namespace, nobj.value) while nobj.type == :constant
|
|
20
|
+
obj = register MethodObject.new(nobj, meth, mscope) do |o|
|
|
21
|
+
o.signature = method_signature
|
|
22
|
+
o.explicit = true
|
|
23
|
+
o.parameters = args
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
# delete any aliases referencing old method
|
|
27
|
+
nobj.aliases.each do |aobj, name|
|
|
28
|
+
next unless name == obj.name
|
|
29
|
+
nobj.aliases.delete(aobj)
|
|
30
|
+
end if nobj.is_a?(NamespaceObject)
|
|
31
|
+
|
|
32
|
+
if obj.constructor?
|
|
33
|
+
unless obj.has_tag?(:return)
|
|
34
|
+
obj.add_tag(YARD::Tags::Tag.new(:return,
|
|
35
|
+
"a new instance of #{namespace.name}", namespace.name.to_s))
|
|
36
|
+
end
|
|
37
|
+
elsif mscope == :class && obj.docstring.blank? && %w(inherited included
|
|
38
|
+
extended method_added method_removed method_undefined).include?(meth)
|
|
39
|
+
obj.add_tag(YARD::Tags::Tag.new(:private, nil))
|
|
40
|
+
elsif meth.to_s =~ /\?$/
|
|
41
|
+
if obj.tag(:return) && (obj.tag(:return).types || []).empty?
|
|
42
|
+
obj.tag(:return).types = ['Boolean']
|
|
43
|
+
elsif obj.tag(:return).nil?
|
|
44
|
+
unless obj.tags(:overload).any? {|overload| overload.tag(:return) }
|
|
45
|
+
obj.add_tag(YARD::Tags::Tag.new(:return, "", "Boolean"))
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
if obj.has_tag?(:option)
|
|
51
|
+
# create the options parameter if its missing
|
|
52
|
+
obj.tags(:option).each do |option|
|
|
53
|
+
expected_param = option.name
|
|
54
|
+
unless obj.tags(:param).find {|x| x.name == expected_param }
|
|
55
|
+
new_tag = YARD::Tags::Tag.new(:param, "a customizable set of options", "Hash", expected_param)
|
|
56
|
+
obj.add_tag(new_tag)
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
if info = obj.attr_info
|
|
62
|
+
if meth.to_s =~ /=$/ # writer
|
|
63
|
+
info[:write] = obj if info[:read]
|
|
64
|
+
else
|
|
65
|
+
info[:read] = obj if info[:write]
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
parse_block(blk, :owner => obj) # mainly for yield/exceptions
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
def format_args
|
|
73
|
+
args = statement.parameters
|
|
74
|
+
params = []
|
|
75
|
+
params += args.required_params.map {|a| [a.source, nil] } if args.required_params
|
|
76
|
+
params += args.optional_params.map {|a| [a[0].source, a[1].source] } if args.optional_params
|
|
77
|
+
params << ["*" + args.splat_param.source, nil] if args.splat_param
|
|
78
|
+
params << ["**" + args.keyword_param.source, nil] if args.keyword_param
|
|
79
|
+
params += args.required_end_params.map {|a| [a.source, nil] } if args.required_end_params
|
|
80
|
+
params << ["&" + args.block_param.source, nil] if args.block_param
|
|
81
|
+
params
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
def method_signature
|
|
85
|
+
method_name = statement.method_name(true)
|
|
86
|
+
if statement.parameters.any? {|e| e }
|
|
87
|
+
"def #{method_name}(#{statement.parameters.source})"
|
|
88
|
+
else
|
|
89
|
+
"def #{method_name}"
|
|
90
|
+
end
|
|
91
|
+
end
|
|
92
|
+
end
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# Handles the 'include' statement to mixin a module in the instance scope
|
|
2
|
+
class YARD::Handlers::Ruby::MixinHandler < YARD::Handlers::Ruby::Base
|
|
3
|
+
handles method_call(:include)
|
|
4
|
+
namespace_only
|
|
5
|
+
|
|
6
|
+
process do
|
|
7
|
+
errors = []
|
|
8
|
+
statement.parameters(false).reverse.each do |mixin|
|
|
9
|
+
begin
|
|
10
|
+
process_mixin(mixin)
|
|
11
|
+
rescue YARD::Parser::UndocumentableError => err
|
|
12
|
+
errors << err.message
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
if errors.size > 0
|
|
16
|
+
msg = errors.size == 1 ? ": #{errors[0]}" : "s: #{errors.join(", ")}"
|
|
17
|
+
raise YARD::Parser::UndocumentableError, "mixin#{msg} for class #{namespace.path}"
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
protected
|
|
22
|
+
|
|
23
|
+
def process_mixin(mixin)
|
|
24
|
+
raise YARD::Parser::UndocumentableError unless mixin.ref?
|
|
25
|
+
raise YARD::Parser::UndocumentableError if mixin.first.type == :ident
|
|
26
|
+
|
|
27
|
+
case obj = Proxy.new(namespace, mixin.source)
|
|
28
|
+
when ConstantObject # If a constant is included, use its value as the real object
|
|
29
|
+
obj = Proxy.new(namespace, obj.value, :module)
|
|
30
|
+
else
|
|
31
|
+
obj = Proxy.new(namespace, mixin.source, :module)
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
namespace.mixins(scope).unshift(obj) unless namespace.mixins(scope).include?(obj)
|
|
35
|
+
end
|
|
36
|
+
end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# Handles module_function calls to turn methods into public class methods.
|
|
2
|
+
# Also creates a private instance copy of the method.
|
|
3
|
+
class YARD::Handlers::Ruby::ModuleFunctionHandler < YARD::Handlers::Ruby::Base
|
|
4
|
+
handles method_call(:module_function)
|
|
5
|
+
namespace_only
|
|
6
|
+
|
|
7
|
+
process do
|
|
8
|
+
return if (ident = statement.jump(:ident)) == statement
|
|
9
|
+
case statement.type
|
|
10
|
+
when :var_ref, :vcall
|
|
11
|
+
self.scope = :module
|
|
12
|
+
when :fcall, :command
|
|
13
|
+
statement[1].traverse do |node|
|
|
14
|
+
case node.type
|
|
15
|
+
when :symbol; name = node.first.source
|
|
16
|
+
when :string_content; name = node.source
|
|
17
|
+
else next
|
|
18
|
+
end
|
|
19
|
+
instance_method = MethodObject.new(namespace, name)
|
|
20
|
+
class_method = MethodObject.new(namespace, name, :module)
|
|
21
|
+
instance_method.copy_to(class_method)
|
|
22
|
+
class_method.visibility = :public
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# Handles the declaration of a module
|
|
2
|
+
class YARD::Handlers::Ruby::ModuleHandler < YARD::Handlers::Ruby::Base
|
|
3
|
+
handles :module
|
|
4
|
+
namespace_only
|
|
5
|
+
|
|
6
|
+
process do
|
|
7
|
+
modname = statement[0].source
|
|
8
|
+
mod = register ModuleObject.new(namespace, modname)
|
|
9
|
+
parse_block(statement[1], :namespace => mod)
|
|
10
|
+
end
|
|
11
|
+
end
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# Sets visibility of a constant (class, module, const)
|
|
2
|
+
class YARD::Handlers::Ruby::PrivateConstantHandler < YARD::Handlers::Ruby::Base
|
|
3
|
+
handles method_call(:private_constant)
|
|
4
|
+
namespace_only
|
|
5
|
+
|
|
6
|
+
process do
|
|
7
|
+
errors = []
|
|
8
|
+
statement.parameters.each do |param|
|
|
9
|
+
next unless AstNode === param
|
|
10
|
+
begin
|
|
11
|
+
privatize_constant(param)
|
|
12
|
+
rescue UndocumentableError => err
|
|
13
|
+
errors << err.message
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
if errors.size > 0
|
|
17
|
+
msg = errors.size == 1 ? ": #{errors[0]}" : "s: #{errors.join(", ")}"
|
|
18
|
+
raise UndocumentableError, "private constant#{msg} for #{namespace.path}"
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
private
|
|
23
|
+
|
|
24
|
+
def privatize_constant(node)
|
|
25
|
+
if node.literal? || (node.type == :var_ref && node[0].type == :const)
|
|
26
|
+
node = node.jump(:tstring_content, :const)
|
|
27
|
+
const = Proxy.new(namespace, node[0])
|
|
28
|
+
ensure_loaded!(const)
|
|
29
|
+
const.visibility = :private
|
|
30
|
+
else
|
|
31
|
+
raise UndocumentableError, "invalid argument to private_constant: #{node.source}"
|
|
32
|
+
end
|
|
33
|
+
rescue NamespaceMissingError
|
|
34
|
+
raise UndocumentableError, "private visibility set on unrecognized constant: #{node[0]}"
|
|
35
|
+
end
|
|
36
|
+
end
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
# Helper methods to parse @attr_* tags on a class.
|
|
2
|
+
#
|
|
3
|
+
# @deprecated The use of +@attr+ tags are deprecated since 0.8.0 in favour of
|
|
4
|
+
# the +@!attribute+ directive. This module should not be relied on.
|
|
5
|
+
# @since 0.5.6
|
|
6
|
+
module YARD::Handlers::Ruby::StructHandlerMethods
|
|
7
|
+
include YARD::CodeObjects
|
|
8
|
+
|
|
9
|
+
# Extracts the user's defined @member tag for a given class and its member. Returns
|
|
10
|
+
# nil if the user did not define a @member tag for this struct entry.
|
|
11
|
+
#
|
|
12
|
+
# @param [ClassObject] klass the class whose tags we're searching
|
|
13
|
+
# @param [String] member the name of the struct member we need
|
|
14
|
+
# @param [Symbol] type reader method, or writer method?
|
|
15
|
+
# @return [Tags::Tag, nil] the tag matching the request, or nil if not found
|
|
16
|
+
def member_tag_for_member(klass, member, type = :read)
|
|
17
|
+
specific_tag = type == :read ? :attr_reader : :attr_writer
|
|
18
|
+
(klass.tags(specific_tag) + klass.tags(:attr)).find {|tag| tag.name == member}
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
# Retrieves all members defined in @attr* tags
|
|
22
|
+
#
|
|
23
|
+
# @param [ClassObject] klass the class with the attributes
|
|
24
|
+
# @return [Array<String>] the list of members defined as attributes on the class
|
|
25
|
+
def members_from_tags(klass)
|
|
26
|
+
tags = klass.tags(:attr) + klass.tags(:attr_reader) + klass.tags(:attr_writer)
|
|
27
|
+
tags.map {|t| t.name }.uniq
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
# Determines whether to create an attribute method based on the class's
|
|
31
|
+
# tags.
|
|
32
|
+
#
|
|
33
|
+
# @param [ClassObject] klass the class whose tags we're searching
|
|
34
|
+
# @param [String] member the name of the struct member we need
|
|
35
|
+
# @param [Symbol] type (:read) reader method, or writer method?
|
|
36
|
+
# @return [Boolean] should the attribute be created?
|
|
37
|
+
def create_member_method?(klass, member, type = :read)
|
|
38
|
+
return true if (klass.tags(:attr) + klass.tags(:attr_reader) + klass.tags(:attr_writer)).empty?
|
|
39
|
+
return true if member_tag_for_member(klass, member, type)
|
|
40
|
+
return !member_tag_for_member(klass, member, :write) if type == :read
|
|
41
|
+
return !member_tag_for_member(klass, member, :read)
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
# Gets the return type for the member in a nicely formatted string. Used
|
|
45
|
+
# to be injected into auto-generated docstrings.
|
|
46
|
+
#
|
|
47
|
+
# @param [Tags::Tag] member_tag the tag object to check for types
|
|
48
|
+
# @return [String] the user-declared type of the struct member, or [Object] if
|
|
49
|
+
# the user did not define a type for this member.
|
|
50
|
+
def return_type_from_tag(member_tag)
|
|
51
|
+
(member_tag && member_tag.types) ? member_tag.types : "Object"
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
# Creates the auto-generated docstring for the getter method of a struct's
|
|
55
|
+
# member. This is used so the generated documentation will look just like that
|
|
56
|
+
# of an attribute defined using attr_accessor.
|
|
57
|
+
#
|
|
58
|
+
# @param [ClassObject] klass the class whose members we're working with
|
|
59
|
+
# @param [String] member the name of the member we're generating documentation for
|
|
60
|
+
# @return [String] a docstring to be attached to the getter method for this member
|
|
61
|
+
def add_reader_tags(klass, new_method, member)
|
|
62
|
+
member_tag = member_tag_for_member(klass, member, :read)
|
|
63
|
+
return_type = return_type_from_tag(member_tag)
|
|
64
|
+
getter_doc_text = member_tag ? member_tag.text : "Returns the value of attribute #{member}"
|
|
65
|
+
new_method.docstring.replace(getter_doc_text)
|
|
66
|
+
new_method.add_tag YARD::Tags::Tag.new(:return, "the current value of #{member}", return_type)
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
# Creates the auto-generated docstring for the setter method of a struct's
|
|
70
|
+
# member. This is used so the generated documentation will look just like that
|
|
71
|
+
# of an attribute defined using attr_accessor.
|
|
72
|
+
#
|
|
73
|
+
# @param [ClassObject] klass the class whose members we're working with
|
|
74
|
+
# @param [String] member the name of the member we're generating documentation for
|
|
75
|
+
# @return [String] a docstring to be attached to the setter method for this member
|
|
76
|
+
def add_writer_tags(klass, new_method, member)
|
|
77
|
+
member_tag = member_tag_for_member(klass, member, :write)
|
|
78
|
+
return_type = return_type_from_tag(member_tag)
|
|
79
|
+
setter_doc_text = member_tag ? member_tag.text : "Sets the attribute #{member}"
|
|
80
|
+
new_method.docstring.replace(setter_doc_text)
|
|
81
|
+
new_method.add_tag YARD::Tags::Tag.new(:param, "the value to set the attribute #{member} to.", return_type, "value")
|
|
82
|
+
new_method.add_tag YARD::Tags::Tag.new(:return, "the newly set value", return_type)
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
# Creates and registers a class object with the given name and superclass name.
|
|
86
|
+
# Returns it for further use.
|
|
87
|
+
#
|
|
88
|
+
# @param [String] classname the name of the class
|
|
89
|
+
# @param [String] superclass the name of the superclass
|
|
90
|
+
# @return [ClassObject] the class object for further processing/method attaching
|
|
91
|
+
def create_class(classname, superclass)
|
|
92
|
+
register ClassObject.new(namespace, classname) do |o|
|
|
93
|
+
o.superclass = superclass if superclass
|
|
94
|
+
o.superclass.type = :class if o.superclass.is_a?(Proxy)
|
|
95
|
+
end
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
# Creates the setter (writer) method and attaches it to the class as an attribute.
|
|
99
|
+
# Also sets up the docstring to prettify the documentation output.
|
|
100
|
+
#
|
|
101
|
+
# @param [ClassObject] klass the class to attach the method to
|
|
102
|
+
# @param [String] member the name of the member we're generating a method for
|
|
103
|
+
def create_writer(klass, member)
|
|
104
|
+
# We want to convert these members into attributes just like
|
|
105
|
+
# as if they were declared using attr_accessor.
|
|
106
|
+
new_meth = register MethodObject.new(klass, "#{member}=", :instance) do |o|
|
|
107
|
+
o.parameters = [['value', nil]]
|
|
108
|
+
o.signature ||= "def #{member}=(value)"
|
|
109
|
+
o.source ||= "#{o.signature}\n @#{member} = value\nend"
|
|
110
|
+
end
|
|
111
|
+
add_writer_tags(klass, new_meth, member)
|
|
112
|
+
klass.attributes[:instance][member][:write] = new_meth
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
# Creates the getter (reader) method and attaches it to the class as an attribute.
|
|
116
|
+
# Also sets up the docstring to prettify the documentation output.
|
|
117
|
+
#
|
|
118
|
+
# @param [ClassObject] klass the class to attach the method to
|
|
119
|
+
# @param [String] member the name of the member we're generating a method for
|
|
120
|
+
def create_reader(klass, member)
|
|
121
|
+
new_meth = register MethodObject.new(klass, member, :instance) do |o|
|
|
122
|
+
o.signature ||= "def #{member}"
|
|
123
|
+
o.source ||= "#{o.signature}\n @#{member}\nend"
|
|
124
|
+
end
|
|
125
|
+
add_reader_tags(klass, new_meth, member)
|
|
126
|
+
klass.attributes[:instance][member][:read] = new_meth
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
# Creates the given member methods and attaches them to the given ClassObject.
|
|
130
|
+
#
|
|
131
|
+
# @param [ClassObject] klass the class to generate attributes for
|
|
132
|
+
# @param [Array<String>] members a list of member names
|
|
133
|
+
def create_attributes(klass, members)
|
|
134
|
+
# For each parameter, add reader and writers
|
|
135
|
+
members.each do |member|
|
|
136
|
+
klass.attributes[:instance][member] = SymbolHash[:read => nil, :write => nil]
|
|
137
|
+
create_writer klass, member if create_member_method?(klass, member, :write)
|
|
138
|
+
create_reader klass, member if create_member_method?(klass, member, :read)
|
|
139
|
+
end
|
|
140
|
+
end
|
|
141
|
+
end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Handles 'private', 'protected', and 'public' calls.
|
|
2
|
+
class YARD::Handlers::Ruby::VisibilityHandler < YARD::Handlers::Ruby::Base
|
|
3
|
+
handles method_call(:private)
|
|
4
|
+
handles method_call(:protected)
|
|
5
|
+
handles method_call(:public)
|
|
6
|
+
namespace_only
|
|
7
|
+
|
|
8
|
+
process do
|
|
9
|
+
return if (ident = statement.jump(:ident)) == statement
|
|
10
|
+
case statement.type
|
|
11
|
+
when :var_ref, :vcall
|
|
12
|
+
self.visibility = ident.first.to_sym
|
|
13
|
+
when :fcall, :command
|
|
14
|
+
statement[1].traverse do |node|
|
|
15
|
+
case node.type
|
|
16
|
+
when :symbol; source = node.first.source
|
|
17
|
+
when :string_content; source = node.source
|
|
18
|
+
else next
|
|
19
|
+
end
|
|
20
|
+
MethodObject.new(namespace, source, scope) {|o| o.visibility = ident.first }
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# Handles 'yield' calls
|
|
2
|
+
class YARD::Handlers::Ruby::YieldHandler < YARD::Handlers::Ruby::Base
|
|
3
|
+
handles :yield, :yield0
|
|
4
|
+
|
|
5
|
+
process do
|
|
6
|
+
return unless owner.is_a?(MethodObject) # Only methods yield
|
|
7
|
+
return if owner.has_tag? :yield # Don't override yield tags
|
|
8
|
+
return if owner.has_tag? :yieldparam # Same thing.
|
|
9
|
+
|
|
10
|
+
yieldtag = YARD::Tags::Tag.new(:yield, "", [])
|
|
11
|
+
|
|
12
|
+
if statement.type == :yield
|
|
13
|
+
statement.jump(:list).children.each do |item|
|
|
14
|
+
if item == s(:var_ref, s(:kw, "self"))
|
|
15
|
+
yieldtag.types << '_self'
|
|
16
|
+
owner.add_tag YARD::Tags::Tag.new(:yieldparam,
|
|
17
|
+
"the object that the method was called on", owner.namespace.path, '_self')
|
|
18
|
+
elsif item == s(:zsuper)
|
|
19
|
+
yieldtag.types << '_super'
|
|
20
|
+
owner.add_tag YARD::Tags::Tag.new(:yieldparam,
|
|
21
|
+
"the result of the method from the superclass", nil, '_super')
|
|
22
|
+
else
|
|
23
|
+
yieldtag.types << item.source
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
owner.add_tag(yieldtag) unless yieldtag.types.empty?
|
|
29
|
+
end
|
|
30
|
+
end
|