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,200 @@
|
|
|
1
|
+
module YARD::CodeObjects
|
|
2
|
+
# A "namespace" is any object that can store other objects within itself.
|
|
3
|
+
# The two main Ruby objects that can act as namespaces are modules
|
|
4
|
+
# ({ModuleObject}) and classes ({ClassObject}).
|
|
5
|
+
class NamespaceObject < Base
|
|
6
|
+
attr_writer :constants, :cvars, :mixins, :child, :meths
|
|
7
|
+
attr_writer :class_attributes, :instance_attributes
|
|
8
|
+
attr_writer :included_constants, :included_meths
|
|
9
|
+
|
|
10
|
+
# @return [Array<String>] a list of ordered group names inside the namespace
|
|
11
|
+
# @since 0.6.0
|
|
12
|
+
attr_accessor :groups
|
|
13
|
+
|
|
14
|
+
# The list of objects defined in this namespace
|
|
15
|
+
# @return [Array<Base>] a list of objects
|
|
16
|
+
attr_reader :children
|
|
17
|
+
|
|
18
|
+
# A hash containing two keys, class and instance, each containing
|
|
19
|
+
# the attribute name with a { :read, :write } hash for the read and
|
|
20
|
+
# write objects respectively.
|
|
21
|
+
#
|
|
22
|
+
# @example The attributes of an object
|
|
23
|
+
# >> Registry.at('YARD::Docstring').attributes
|
|
24
|
+
# => {
|
|
25
|
+
# :class => { },
|
|
26
|
+
# :instance => {
|
|
27
|
+
# :ref_tags => {
|
|
28
|
+
# :read => #<yardoc method YARD::Docstring#ref_tags>,
|
|
29
|
+
# :write => nil
|
|
30
|
+
# },
|
|
31
|
+
# :object => {
|
|
32
|
+
# :read => #<yardoc method YARD::Docstring#object>,
|
|
33
|
+
# :write => #<yardoc method YARD::Docstring#object=>
|
|
34
|
+
# },
|
|
35
|
+
# ...
|
|
36
|
+
# }
|
|
37
|
+
# }
|
|
38
|
+
# @return [Hash] a list of methods
|
|
39
|
+
attr_reader :attributes
|
|
40
|
+
|
|
41
|
+
# A hash containing two keys, :class and :instance, each containing
|
|
42
|
+
# a hash of objects and their alias names.
|
|
43
|
+
# @return [Hash] a list of methods
|
|
44
|
+
attr_reader :aliases
|
|
45
|
+
|
|
46
|
+
# Class mixins
|
|
47
|
+
# @return [Array<ModuleObject>] a list of mixins
|
|
48
|
+
attr_reader :class_mixins
|
|
49
|
+
|
|
50
|
+
# Instance mixins
|
|
51
|
+
# @return [Array<ModuleObject>] a list of mixins
|
|
52
|
+
attr_reader :instance_mixins
|
|
53
|
+
|
|
54
|
+
# Creates a new namespace object inside +namespace+ with +name+.
|
|
55
|
+
# @see Base#initialize
|
|
56
|
+
def initialize(namespace, name, *args, &block)
|
|
57
|
+
@children = CodeObjectList.new(self)
|
|
58
|
+
@class_mixins = CodeObjectList.new(self)
|
|
59
|
+
@instance_mixins = CodeObjectList.new(self)
|
|
60
|
+
@attributes = SymbolHash[:class => SymbolHash.new, :instance => SymbolHash.new]
|
|
61
|
+
@aliases = {}
|
|
62
|
+
@groups = []
|
|
63
|
+
super
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
# Only the class attributes
|
|
67
|
+
# @return [Hash] a list of method names and their read/write objects
|
|
68
|
+
# @see #attributes
|
|
69
|
+
def class_attributes
|
|
70
|
+
attributes[:class]
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
# Only the instance attributes
|
|
74
|
+
# @return [Hash] a list of method names and their read/write objects
|
|
75
|
+
# @see #attributes
|
|
76
|
+
def instance_attributes
|
|
77
|
+
attributes[:instance]
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
# Looks for a child that matches the attributes specified by +opts+.
|
|
81
|
+
#
|
|
82
|
+
# @example Finds a child by name and scope
|
|
83
|
+
# namespace.child(:name => :to_s, :scope => :instance)
|
|
84
|
+
# # => #<yardoc method MyClass#to_s>
|
|
85
|
+
# @return [Base, nil] the first matched child object, or nil
|
|
86
|
+
def child(opts = {})
|
|
87
|
+
if !opts.is_a?(Hash)
|
|
88
|
+
children.find {|o| o.name == opts.to_sym }
|
|
89
|
+
else
|
|
90
|
+
opts = SymbolHash[opts]
|
|
91
|
+
children.find do |obj|
|
|
92
|
+
opts.each do |meth, value|
|
|
93
|
+
break false if !(value.is_a?(Array) ? value.include?(obj[meth]) : obj[meth] == value)
|
|
94
|
+
end
|
|
95
|
+
end
|
|
96
|
+
end
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
# Returns all methods that match the attributes specified by +opts+. If
|
|
100
|
+
# no options are provided, returns all methods.
|
|
101
|
+
#
|
|
102
|
+
# @example Finds all private and protected class methods
|
|
103
|
+
# namespace.meths(:visibility => [:private, :protected], :scope => :class)
|
|
104
|
+
# # => [#<yardoc method MyClass.privmeth>, #<yardoc method MyClass.protmeth>]
|
|
105
|
+
# @option opts [Array<Symbol>, Symbol] :visibility ([:public, :private,
|
|
106
|
+
# :protected]) the visibility of the methods to list. Can be an array or
|
|
107
|
+
# single value.
|
|
108
|
+
# @option opts [Array<Symbol>, Symbol] :scope ([:class, :instance]) the
|
|
109
|
+
# scope of the methods to list. Can be an array or single value.
|
|
110
|
+
# @option opts [Boolean] :included (true) whether to include mixed in
|
|
111
|
+
# methods in the list.
|
|
112
|
+
# @return [Array<MethodObject>] a list of method objects
|
|
113
|
+
def meths(opts = {})
|
|
114
|
+
opts = SymbolHash[
|
|
115
|
+
:visibility => [:public, :private, :protected],
|
|
116
|
+
:scope => [:class, :instance],
|
|
117
|
+
:included => true
|
|
118
|
+
].update(opts)
|
|
119
|
+
|
|
120
|
+
opts[:visibility] = [opts[:visibility]].flatten
|
|
121
|
+
opts[:scope] = [opts[:scope]].flatten
|
|
122
|
+
|
|
123
|
+
ourmeths = children.select do |o|
|
|
124
|
+
o.is_a?(MethodObject) &&
|
|
125
|
+
opts[:visibility].include?(o.visibility) &&
|
|
126
|
+
opts[:scope].include?(o.scope)
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
ourmeths + (opts[:included] ? included_meths(opts) : [])
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
# Returns methods included from any mixins that match the attributes
|
|
133
|
+
# specified by +opts+. If no options are specified, returns all included
|
|
134
|
+
# methods.
|
|
135
|
+
#
|
|
136
|
+
# @option opts [Array<Symbol>, Symbol] :visibility ([:public, :private,
|
|
137
|
+
# :protected]) the visibility of the methods to list. Can be an array or
|
|
138
|
+
# single value.
|
|
139
|
+
# @option opts [Array<Symbol>, Symbol] :scope ([:class, :instance]) the
|
|
140
|
+
# scope of the methods to list. Can be an array or single value.
|
|
141
|
+
# @option opts [Boolean] :included (true) whether to include mixed in
|
|
142
|
+
# methods in the list.
|
|
143
|
+
# @see #meths
|
|
144
|
+
def included_meths(opts = {})
|
|
145
|
+
opts = SymbolHash[:scope => [:instance, :class]].update(opts)
|
|
146
|
+
[opts[:scope]].flatten.map do |scope|
|
|
147
|
+
mixins(scope).inject([]) do |list, mixin|
|
|
148
|
+
next list if mixin.is_a?(Proxy)
|
|
149
|
+
arr = mixin.meths(opts.merge(:scope => :instance)).reject do |o|
|
|
150
|
+
next false if opts[:all]
|
|
151
|
+
child(:name => o.name, :scope => scope) || list.find {|o2| o2.name == o.name }
|
|
152
|
+
end
|
|
153
|
+
arr.map! {|o| ExtendedMethodObject.new(o) } if scope == :class
|
|
154
|
+
list + arr
|
|
155
|
+
end
|
|
156
|
+
end.flatten
|
|
157
|
+
end
|
|
158
|
+
|
|
159
|
+
# Returns all constants in the namespace
|
|
160
|
+
#
|
|
161
|
+
# @option opts [Boolean] :included (true) whether or not to include
|
|
162
|
+
# mixed in constants in list
|
|
163
|
+
# @return [Array<ConstantObject>] a list of constant objects
|
|
164
|
+
def constants(opts = {})
|
|
165
|
+
opts = SymbolHash[:included => true].update(opts)
|
|
166
|
+
consts = children.select {|o| o.is_a? ConstantObject }
|
|
167
|
+
consts + (opts[:included] ? included_constants : [])
|
|
168
|
+
end
|
|
169
|
+
|
|
170
|
+
# Returns constants included from any mixins
|
|
171
|
+
# @return [Array<ConstantObject>] a list of constant objects
|
|
172
|
+
def included_constants
|
|
173
|
+
instance_mixins.inject([]) do |list, mixin|
|
|
174
|
+
if mixin.respond_to? :constants
|
|
175
|
+
list += mixin.constants.reject do |o|
|
|
176
|
+
child(:name => o.name) || list.find {|o2| o2.name == o.name }
|
|
177
|
+
end
|
|
178
|
+
else
|
|
179
|
+
list
|
|
180
|
+
end
|
|
181
|
+
end
|
|
182
|
+
end
|
|
183
|
+
|
|
184
|
+
# Returns class variables defined in this namespace.
|
|
185
|
+
# @return [Array<ClassVariableObject>] a list of class variable objects
|
|
186
|
+
def cvars
|
|
187
|
+
children.select {|o| o.is_a? ClassVariableObject }
|
|
188
|
+
end
|
|
189
|
+
|
|
190
|
+
# Returns for specific scopes. If no scopes are provided, returns all mixins.
|
|
191
|
+
# @param [Array<Symbol>] scopes a list of scopes (:class, :instance) to
|
|
192
|
+
# return mixins for. If this is empty, all scopes will be returned.
|
|
193
|
+
# @return [Array<ModuleObject>] a list of mixins
|
|
194
|
+
def mixins(*scopes)
|
|
195
|
+
return class_mixins if scopes == [:class]
|
|
196
|
+
return instance_mixins if scopes == [:instance]
|
|
197
|
+
class_mixins | instance_mixins
|
|
198
|
+
end
|
|
199
|
+
end
|
|
200
|
+
end
|
|
@@ -0,0 +1,258 @@
|
|
|
1
|
+
module YARD
|
|
2
|
+
module CodeObjects
|
|
3
|
+
# A special type of +NoMethodError+ when raised from a {Proxy}
|
|
4
|
+
class ProxyMethodError < NoMethodError; end
|
|
5
|
+
|
|
6
|
+
# The Proxy class is a way to lazily resolve code objects in
|
|
7
|
+
# cases where the object may not yet exist. A proxy simply stores
|
|
8
|
+
# an unresolved path until a method is called on the object, at which
|
|
9
|
+
# point it does a lookup using {Registry.resolve}. If the object is
|
|
10
|
+
# not found, a warning is raised and {ProxyMethodError} might be raised.
|
|
11
|
+
#
|
|
12
|
+
# @example Creates a Proxy to the String class from a module
|
|
13
|
+
# # When the String class is parsed this method will
|
|
14
|
+
# # begin to act like the String ClassObject.
|
|
15
|
+
# Proxy.new(mymoduleobj, "String")
|
|
16
|
+
# @see Registry.resolve
|
|
17
|
+
# @see ProxyMethodError
|
|
18
|
+
class Proxy
|
|
19
|
+
def self.===(other) other.is_a?(self) end
|
|
20
|
+
|
|
21
|
+
attr_reader :namespace
|
|
22
|
+
alias_method :parent, :namespace
|
|
23
|
+
|
|
24
|
+
# Creates a new Proxy
|
|
25
|
+
#
|
|
26
|
+
# @raise [ArgumentError] if namespace is not a NamespaceObject
|
|
27
|
+
# @return [Proxy] self
|
|
28
|
+
def initialize(namespace, name, type = nil)
|
|
29
|
+
namespace = Registry.root if !namespace || namespace == :root
|
|
30
|
+
|
|
31
|
+
if name =~ /^#{NSEPQ}/
|
|
32
|
+
namespace = Registry.root
|
|
33
|
+
name = name[2..-1]
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
if name =~ /(?:#{NSEPQ}|#{ISEPQ}|#{CSEPQ})([^#{NSEPQ}#{ISEPQ}#{CSEPQ}]+)$/
|
|
37
|
+
@orignamespace, @origname = namespace, name
|
|
38
|
+
@imethod = true if name.include? ISEP
|
|
39
|
+
namespace = Proxy.new(namespace, $`) unless $`.empty?
|
|
40
|
+
name = $1
|
|
41
|
+
else
|
|
42
|
+
@orignamespace, @origname, @imethod = nil, nil, nil
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
@name = name.to_sym
|
|
46
|
+
@namespace = namespace
|
|
47
|
+
@obj = nil
|
|
48
|
+
@imethod ||= nil
|
|
49
|
+
self.type = type
|
|
50
|
+
|
|
51
|
+
if @namespace.is_a?(ConstantObject)
|
|
52
|
+
@origname = nil # forget these for a constant
|
|
53
|
+
@orignamespace = nil
|
|
54
|
+
@namespace = Proxy.new(@namespace.namespace, @namespace.value)
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
unless @namespace.is_a?(NamespaceObject) or @namespace.is_a?(Proxy)
|
|
58
|
+
raise ArgumentError, "Invalid namespace object: #{namespace}"
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
# If the name begins with "::" (like "::String")
|
|
62
|
+
# this is definitely a root level object, so
|
|
63
|
+
# remove the namespace and attach it to the root
|
|
64
|
+
if @name =~ /^#{NSEPQ}/
|
|
65
|
+
@name.gsub!(/^#{NSEPQ}/, '')
|
|
66
|
+
@namespace = Registry.root
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
# (see Base#name)
|
|
71
|
+
def name(prefix = false)
|
|
72
|
+
prefix ? (@imethod ? ISEP : '') + @name.to_s : @name
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
# Returns a text representation of the Proxy
|
|
76
|
+
# @return [String] the object's #inspect method or P(OBJECTPATH)
|
|
77
|
+
def inspect
|
|
78
|
+
if obj = to_obj
|
|
79
|
+
obj.inspect
|
|
80
|
+
else
|
|
81
|
+
"P(#{path})"
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
# If the proxy resolves to an object, returns its path, otherwise
|
|
86
|
+
# guesses at the correct path using the original namespace and name.
|
|
87
|
+
#
|
|
88
|
+
# @return [String] the assumed path of the proxy (or the real path
|
|
89
|
+
# of the resolved object)
|
|
90
|
+
def path
|
|
91
|
+
if obj = to_obj
|
|
92
|
+
obj.path
|
|
93
|
+
else
|
|
94
|
+
proxy_path
|
|
95
|
+
end
|
|
96
|
+
end
|
|
97
|
+
alias to_s path
|
|
98
|
+
alias to_str path
|
|
99
|
+
alias title path
|
|
100
|
+
|
|
101
|
+
# @return [Boolean]
|
|
102
|
+
def is_a?(klass)
|
|
103
|
+
if obj = to_obj
|
|
104
|
+
obj.is_a?(klass)
|
|
105
|
+
else
|
|
106
|
+
self.class <= klass
|
|
107
|
+
end
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
# @return [Boolean]
|
|
111
|
+
def ===(other)
|
|
112
|
+
if obj = to_obj
|
|
113
|
+
obj === other
|
|
114
|
+
else
|
|
115
|
+
self.class <= other.class
|
|
116
|
+
end
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
# @return [Boolean]
|
|
120
|
+
def <=>(other)
|
|
121
|
+
if other.respond_to? :path
|
|
122
|
+
path <=> other.path
|
|
123
|
+
else
|
|
124
|
+
false
|
|
125
|
+
end
|
|
126
|
+
end
|
|
127
|
+
|
|
128
|
+
# @return [Boolean]
|
|
129
|
+
def equal?(other)
|
|
130
|
+
if other.respond_to? :path
|
|
131
|
+
path == other.path
|
|
132
|
+
else
|
|
133
|
+
false
|
|
134
|
+
end
|
|
135
|
+
end
|
|
136
|
+
alias == equal?
|
|
137
|
+
|
|
138
|
+
# @return [Integer] the object's hash value (for equality checking)
|
|
139
|
+
def hash; path.hash end
|
|
140
|
+
|
|
141
|
+
# Returns the class name of the object the proxy is mimicking, if
|
|
142
|
+
# resolved. Otherwise returns +Proxy+.
|
|
143
|
+
# @return [Class] the resolved object's class or +Proxy+
|
|
144
|
+
def class
|
|
145
|
+
if obj = to_obj
|
|
146
|
+
obj.class
|
|
147
|
+
else
|
|
148
|
+
Proxy
|
|
149
|
+
end
|
|
150
|
+
end
|
|
151
|
+
|
|
152
|
+
# Returns the type of the proxy. If it cannot be resolved at the
|
|
153
|
+
# time of the call, it will either return the inferred proxy type
|
|
154
|
+
# (see {#type=}) or +:proxy+
|
|
155
|
+
# @return [Symbol] the Proxy's type
|
|
156
|
+
# @see #type=
|
|
157
|
+
def type
|
|
158
|
+
if obj = to_obj
|
|
159
|
+
obj.type
|
|
160
|
+
else
|
|
161
|
+
@type || :proxy
|
|
162
|
+
end
|
|
163
|
+
end
|
|
164
|
+
|
|
165
|
+
# Allows a parser to infer the type of the proxy by its path.
|
|
166
|
+
# @param [#to_sym] type the proxy's inferred type
|
|
167
|
+
# @return [void]
|
|
168
|
+
def type=(type) @type = type ? type.to_sym : nil end
|
|
169
|
+
|
|
170
|
+
# @return [Boolean]
|
|
171
|
+
def instance_of?(klass)
|
|
172
|
+
self.class == klass
|
|
173
|
+
end
|
|
174
|
+
|
|
175
|
+
# @return [Boolean]
|
|
176
|
+
def kind_of?(klass)
|
|
177
|
+
self.class <= klass
|
|
178
|
+
end
|
|
179
|
+
|
|
180
|
+
# @return [Boolean]
|
|
181
|
+
def respond_to?(meth, include_private = false)
|
|
182
|
+
if obj = to_obj
|
|
183
|
+
obj.respond_to?(meth, include_private)
|
|
184
|
+
else
|
|
185
|
+
super
|
|
186
|
+
end
|
|
187
|
+
end
|
|
188
|
+
|
|
189
|
+
# Dispatches the method to the resolved object.
|
|
190
|
+
#
|
|
191
|
+
# @raise [ProxyMethodError] if the proxy cannot find the real object
|
|
192
|
+
def method_missing(meth, *args, &block)
|
|
193
|
+
if obj = to_obj
|
|
194
|
+
obj.__send__(meth, *args, &block)
|
|
195
|
+
else
|
|
196
|
+
log.warn "Load Order / Name Resolution Problem on #{path}:"
|
|
197
|
+
log.warn "-"
|
|
198
|
+
log.warn "Something is trying to call #{meth} on object #{path} before it has been recognized."
|
|
199
|
+
log.warn "This error usually means that you need to modify the order in which you parse files"
|
|
200
|
+
log.warn "so that #{path} is parsed before methods or other objects attempt to access it."
|
|
201
|
+
log.warn "-"
|
|
202
|
+
log.warn "YARD will recover from this error and continue to parse but you *may* have problems"
|
|
203
|
+
log.warn "with your generated documentation. You should probably fix this."
|
|
204
|
+
log.warn "-"
|
|
205
|
+
begin
|
|
206
|
+
super
|
|
207
|
+
rescue NoMethodError
|
|
208
|
+
raise ProxyMethodError, "Proxy cannot call method ##{meth} on object '#{path}'"
|
|
209
|
+
end
|
|
210
|
+
end
|
|
211
|
+
end
|
|
212
|
+
|
|
213
|
+
# This class is never a root object
|
|
214
|
+
def root?; false end
|
|
215
|
+
|
|
216
|
+
private
|
|
217
|
+
|
|
218
|
+
# @note this method fixes a bug in 1.9.2: http://gist.github.com/437136
|
|
219
|
+
def to_ary; nil end
|
|
220
|
+
|
|
221
|
+
# Attempts to find the object that this unresolved object
|
|
222
|
+
# references by checking if any objects by this name are
|
|
223
|
+
# registered all the way up the namespace tree.
|
|
224
|
+
#
|
|
225
|
+
# @return [Base, nil] the registered code object or nil
|
|
226
|
+
def to_obj
|
|
227
|
+
return @obj if @obj
|
|
228
|
+
if @obj = Registry.resolve(@namespace, (@imethod ? ISEP : '') + @name.to_s, false, false, @type)
|
|
229
|
+
if @origname && @origname.include?("::") && !@obj.path.include?(@origname)
|
|
230
|
+
# the object's path should include the original proxy namespace,
|
|
231
|
+
# otherwise it's (probably) not the right object.
|
|
232
|
+
@obj = nil
|
|
233
|
+
else
|
|
234
|
+
@namespace = @obj.namespace
|
|
235
|
+
@name = @obj.name
|
|
236
|
+
end
|
|
237
|
+
end
|
|
238
|
+
@obj
|
|
239
|
+
end
|
|
240
|
+
|
|
241
|
+
def proxy_path
|
|
242
|
+
if @namespace.root?
|
|
243
|
+
(@imethod ? ISEP : "") + name.to_s
|
|
244
|
+
elsif @origname
|
|
245
|
+
if @origname =~ /^[A-Z]/
|
|
246
|
+
@origname
|
|
247
|
+
else
|
|
248
|
+
[namespace.path, @origname].join
|
|
249
|
+
end
|
|
250
|
+
elsif name.to_s =~ /^[A-Z]/ # const
|
|
251
|
+
name.to_s
|
|
252
|
+
else # class meth?
|
|
253
|
+
[namespace.path, name.to_s].join(CSEP)
|
|
254
|
+
end
|
|
255
|
+
end
|
|
256
|
+
end
|
|
257
|
+
end
|
|
258
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
module YARD
|
|
2
|
+
module CodeObjects
|
|
3
|
+
# Represents the root namespace object (the invisible Ruby module that
|
|
4
|
+
# holds all top level modules, class and other objects).
|
|
5
|
+
class RootObject < ModuleObject
|
|
6
|
+
def path; @path ||= "" end
|
|
7
|
+
def inspect; @inspect ||= "#<yardoc root>" end
|
|
8
|
+
def root?; true end
|
|
9
|
+
def title; 'Top Level Namespace' end
|
|
10
|
+
def equal?(other)
|
|
11
|
+
other == :root ? true : super(other)
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def hash; :root.hash end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|