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,27 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + "/spec_helper"
|
|
2
|
+
|
|
3
|
+
describe YARD::Handlers::C::MixinHandler do
|
|
4
|
+
it "should add includes to modules or classes" do
|
|
5
|
+
parse_init <<-eof
|
|
6
|
+
mFoo = rb_define_module("Foo");
|
|
7
|
+
cBar = rb_define_class("Bar", rb_cObject);
|
|
8
|
+
mBaz = rb_define_module("Baz");
|
|
9
|
+
rb_include_module(cBar, mFoo);
|
|
10
|
+
rb_include_module(mBaz, mFoo);
|
|
11
|
+
eof
|
|
12
|
+
foo = Registry.at('Foo')
|
|
13
|
+
bar = Registry.at('Bar')
|
|
14
|
+
baz = Registry.at('Baz')
|
|
15
|
+
bar.mixins(:instance).should == [foo]
|
|
16
|
+
baz.mixins(:instance).should == [foo]
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
it "should add include as proxy if symbol lookup fails" do
|
|
20
|
+
parse_init <<-eof
|
|
21
|
+
mFoo = rb_define_module("Foo");
|
|
22
|
+
rb_include_module(mFoo, mXYZ);
|
|
23
|
+
eof
|
|
24
|
+
foo = Registry.at('Foo')
|
|
25
|
+
foo.mixins(:instance).should == [P('XYZ')]
|
|
26
|
+
end
|
|
27
|
+
end
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + "/spec_helper"
|
|
2
|
+
|
|
3
|
+
describe YARD::Handlers::C::ClassHandler do
|
|
4
|
+
it "should register modules" do
|
|
5
|
+
parse_init 'mFoo = rb_define_module("Foo");'
|
|
6
|
+
Registry.at('Foo').type.should == :module
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
it "should register classes under namespaces" do
|
|
10
|
+
parse_init 'mFoo = rb_define_module_under(mBar, "Foo");'
|
|
11
|
+
Registry.at('Bar::Foo').type.should == :module
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
it "should remember symbol defined with class" do
|
|
15
|
+
parse_init(<<-eof)
|
|
16
|
+
cXYZ = rb_define_module("Foo");
|
|
17
|
+
rb_define_method(cXYZ, "bar", bar, 0);
|
|
18
|
+
eof
|
|
19
|
+
Registry.at('Foo').type.should == :module
|
|
20
|
+
Registry.at('Foo#bar').should_not be_nil
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
it "should not associate declaration comments as module docstring" do
|
|
24
|
+
parse_init(<<-eof)
|
|
25
|
+
/* Docstring! */
|
|
26
|
+
mFoo = rb_define_module("Foo");
|
|
27
|
+
eof
|
|
28
|
+
Registry.at('Foo').docstring.should be_blank
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
it "should associate a file with the declaration" do
|
|
32
|
+
parse_init(<<-eof)
|
|
33
|
+
mFoo = rb_define_module("Foo");
|
|
34
|
+
eof
|
|
35
|
+
Registry.at('Foo').file.should == '(stdin)'
|
|
36
|
+
Registry.at('Foo').line.should == 2
|
|
37
|
+
end
|
|
38
|
+
end
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + "/spec_helper"
|
|
2
|
+
|
|
3
|
+
describe YARD::Handlers::C::OverrideCommentHandler do
|
|
4
|
+
[:class, :module].each do |type|
|
|
5
|
+
it "should handle Document-#{type}" do
|
|
6
|
+
parse(<<-eof)
|
|
7
|
+
void something;
|
|
8
|
+
/* Document-#{type}: A
|
|
9
|
+
* Foo bar baz
|
|
10
|
+
*/
|
|
11
|
+
void
|
|
12
|
+
eof
|
|
13
|
+
Registry.at('A').type.should == type
|
|
14
|
+
Registry.at('A').docstring.should == 'Foo bar baz'
|
|
15
|
+
Registry.at('A').file.should == '(stdin)'
|
|
16
|
+
Registry.at('A').line.should == 2
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
it "should handle multiple class/module combinations" do
|
|
21
|
+
parse(<<-eof)
|
|
22
|
+
/* Document-class: A
|
|
23
|
+
* Document-class: B
|
|
24
|
+
* Document-module: C
|
|
25
|
+
* Foo bar baz
|
|
26
|
+
*/
|
|
27
|
+
eof
|
|
28
|
+
Registry.at('A').docstring.should == 'Foo bar baz'
|
|
29
|
+
Registry.at('B').docstring.should == 'Foo bar baz'
|
|
30
|
+
Registry.at('C').docstring.should == 'Foo bar baz'
|
|
31
|
+
Registry.at('C').type == :module
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
it "should handle Document-class with inheritance" do
|
|
35
|
+
parse(<<-eof)
|
|
36
|
+
/* Document-class: A < B
|
|
37
|
+
* Foo bar baz
|
|
38
|
+
*/
|
|
39
|
+
void
|
|
40
|
+
eof
|
|
41
|
+
obj = Registry.at('A')
|
|
42
|
+
obj.type.should == :class
|
|
43
|
+
obj.docstring.should == 'Foo bar baz'
|
|
44
|
+
obj.superclass.should == P('B')
|
|
45
|
+
end
|
|
46
|
+
end
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + "/spec_helper"
|
|
2
|
+
|
|
3
|
+
describe YARD::Handlers::C::PathHandler do
|
|
4
|
+
it 'should track variable names defined under namespaces' do
|
|
5
|
+
parse_init <<-eof
|
|
6
|
+
mFoo = rb_define_module("Foo");
|
|
7
|
+
cBar = rb_define_class_under(mFoo, "Bar", rb_cObject);
|
|
8
|
+
rb_define_method(cBar, "foo", foo, 1);
|
|
9
|
+
eof
|
|
10
|
+
Registry.at('Foo::Bar').should_not be_nil
|
|
11
|
+
Registry.at('Foo::Bar#foo').should_not be_nil
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
it 'should track variable names defined under namespaces' do
|
|
15
|
+
parse_init <<-eof
|
|
16
|
+
mFoo = rb_define_module("Foo");
|
|
17
|
+
cBar = rb_define_class_under(mFoo, "Bar", rb_cObject);
|
|
18
|
+
mBaz = rb_define_module_under(cBar, "Baz");
|
|
19
|
+
rb_define_method(mBaz, "foo", foo, 1);
|
|
20
|
+
eof
|
|
21
|
+
Registry.at('Foo::Bar::Baz').should_not be_nil
|
|
22
|
+
Registry.at('Foo::Bar::Baz#foo').should_not be_nil
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
it "should handle rb_path2class() calls" do
|
|
26
|
+
parse_init <<-eof
|
|
27
|
+
somePath = rb_path2class("Foo::Bar::Baz")
|
|
28
|
+
mFoo = rb_define_module("Foo");
|
|
29
|
+
cBar = rb_define_class_under(mFoo, "Bar", rb_cObject);
|
|
30
|
+
mBaz = rb_define_module_under(cBar, "Baz");
|
|
31
|
+
rb_define_method(somePath, "foo", foo, 1);
|
|
32
|
+
eof
|
|
33
|
+
Registry.at('Foo::Bar::Baz#foo').should_not be_nil
|
|
34
|
+
end
|
|
35
|
+
end
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + "/../spec_helper"
|
|
2
|
+
|
|
3
|
+
def parse(src, file = '(stdin)')
|
|
4
|
+
YARD::Registry.clear
|
|
5
|
+
parser = YARD::Parser::SourceParser.new(:c)
|
|
6
|
+
parser.file = file
|
|
7
|
+
parser.parse(StringIO.new(src))
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def parse_init(src)
|
|
11
|
+
YARD::Registry.clear
|
|
12
|
+
YARD.parse_string("void Init_Foo() {\n#{src}\n}", :c)
|
|
13
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/spec_helper'
|
|
2
|
+
|
|
3
|
+
describe YARD::Handlers::C::StructHandler do
|
|
4
|
+
after { Registry.clear }
|
|
5
|
+
|
|
6
|
+
it "should handle Struct class definitions" do
|
|
7
|
+
parse_init <<-eof
|
|
8
|
+
rb_cRange = rb_struct_define_without_accessor(
|
|
9
|
+
"Range", rb_cFoo, range_alloc,
|
|
10
|
+
"begin", "end", "excl", NULL);
|
|
11
|
+
eof
|
|
12
|
+
Registry.at('Range').type.should == :class
|
|
13
|
+
Registry.at('Range').superclass.should == P(:Foo)
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/spec_helper'
|
|
2
|
+
|
|
3
|
+
describe "YARD::Handlers::Ruby::#{LEGACY_PARSER ? "Legacy::" : ""}ClassConditionHandler" do
|
|
4
|
+
before(:all) { parse_file :class_condition_handler_001, __FILE__ }
|
|
5
|
+
|
|
6
|
+
def verify_method(*names)
|
|
7
|
+
names.each {|name| Registry.at("A##{name}").should_not be_nil }
|
|
8
|
+
names.each {|name| Registry.at("A##{name}not").should be_nil }
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def no_undoc_error(code)
|
|
12
|
+
lambda { StubbedSourceParser.parse_string(code) }.should_not raise_error
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
it "should parse all unless blocks for complex conditions" do
|
|
16
|
+
verify_method :g
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
it "should not parse conditionals inside methods" do
|
|
20
|
+
verify_method :h
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
it "should only parse then block if condition is literal value `true`" do
|
|
24
|
+
verify_method :p
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
it "should only parse then block if condition is literal integer != 0" do
|
|
28
|
+
verify_method :o
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
it "should invert block to parse for literal condition if it's an unless block" do
|
|
32
|
+
verify_method :e
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
it "should handle conditions such as 'defined? VALUE'" do
|
|
36
|
+
verify_method :j, :k
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
it "should parse all if/elsif blocks for complex conditions" do
|
|
40
|
+
verify_method :a, :b, :c, :d
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
it "should only parse else block if condition is literal value `false`" do
|
|
44
|
+
verify_method :q
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
it "should only parse else block if condition is literal integer == 0" do
|
|
48
|
+
verify_method :n
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
it "should maintain visibility and scope state inside condition" do
|
|
52
|
+
Registry.at('A#m').visibility.should == :private
|
|
53
|
+
Registry.at('A#mnot').visibility.should == :private
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
it "should not fail on complex conditions" do
|
|
57
|
+
log.should_not_receive(:warn)
|
|
58
|
+
log.should_not_receive(:error)
|
|
59
|
+
no_undoc_error "if defined?(A) && defined?(B); puts 'hi' end"
|
|
60
|
+
no_undoc_error(<<-eof)
|
|
61
|
+
(<<-TEST) unless defined?(ABCD_MODEL_TEST)
|
|
62
|
+
'String'
|
|
63
|
+
TEST
|
|
64
|
+
eof
|
|
65
|
+
no_undoc_error "if caller.none? { |l| l =~ %r{lib/rails/generators\\.rb:(\\d+):in `lookup!'$} }; end"
|
|
66
|
+
end
|
|
67
|
+
end
|
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
|
2
|
+
|
|
3
|
+
describe "YARD::Handlers::Ruby::#{LEGACY_PARSER ? "Legacy::" : ""}ClassHandler" do
|
|
4
|
+
before(:all) { parse_file :class_handler_001, __FILE__ }
|
|
5
|
+
|
|
6
|
+
it "should parse a class block with docstring" do
|
|
7
|
+
P("A").docstring.should == "Docstring"
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
it "should handle complex class names" do
|
|
11
|
+
P("A::B::C").should_not == nil
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
it "should handle the subclassing syntax" do
|
|
15
|
+
P("A::B::C").superclass.should == P(:String)
|
|
16
|
+
P("A::X").superclass.should == Registry.at("A::B::C")
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
it "should interpret class << self as a class level block" do
|
|
20
|
+
P("A.classmethod1").should_not == nil
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
it "should interpret class << ClassName as a class level block in ClassName's namespace" do
|
|
24
|
+
P("A::B::C.Hello").should be_instance_of(CodeObjects::MethodObject)
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
it "should make visibility public when parsing a block" do
|
|
28
|
+
P("A::B::C#method1").visibility.should == :public
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
it "should set superclass type to :class if it is a Proxy" do
|
|
32
|
+
P("A::B::C").superclass.type.should == :class
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
it "should look for a superclass before creating the class if it shares the same name" do
|
|
36
|
+
P('B::A').superclass.should == P('A')
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
it "should handle class definitions in the form ::ClassName" do
|
|
40
|
+
Registry.at("MyRootClass").should_not be_nil
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
it "should handle superclass as a constant-style method (camping style < R /path/)" do
|
|
44
|
+
P('Test1').superclass.should == P(:R)
|
|
45
|
+
P('Test2').superclass.should == P(:R)
|
|
46
|
+
P('Test6').superclass.should == P(:NotDelegateClass)
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
it "should handle superclass with OStruct.new or Struct.new syntax (superclass should be OStruct/Struct)" do
|
|
50
|
+
P('Test3').superclass.should == P(:Struct)
|
|
51
|
+
P('Test4').superclass.should == P(:OStruct)
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
it "should handle DelegateClass(CLASSNAME) superclass syntax" do
|
|
55
|
+
P('Test5').superclass.should == P(:Array)
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
it "should handle a superclass of the same name in the form ::ClassName" do
|
|
59
|
+
P('Q::Logger').superclass.should == P(:Logger)
|
|
60
|
+
P('Q::Foo').superclass.should_not == P('Q::Logger')
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
["CallMethod('test')", "VSD^#}}", 'not.aclass', 'self'].each do |klass|
|
|
64
|
+
it "should raise an UndocumentableError for invalid class '#{klass}'" do
|
|
65
|
+
with_parser(:ruby18) { undoc_error "class #{klass}; end" }
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
['@@INVALID', 'hi', '$MYCLASS', 'AnotherClass.new'].each do |klass|
|
|
70
|
+
it "should raise an UndocumentableError for invalid superclass '#{klass}' but it should create the class." do
|
|
71
|
+
YARD::CodeObjects::ClassObject.should_receive(:new).with(Registry.root, 'A')
|
|
72
|
+
with_parser(:ruby18) { undoc_error "class A < #{klass}; end" }
|
|
73
|
+
Registry.at('A').superclass.should == P(:Object)
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
['not.aclass', 'self', 'AnotherClass.new'].each do |klass|
|
|
78
|
+
it "should raise an UndocumentableError if the constant class reference 'class << SomeConstant' does not point to a valid class name" do
|
|
79
|
+
with_parser(:ruby18) do
|
|
80
|
+
undoc_error <<-eof
|
|
81
|
+
CONST = #{klass}
|
|
82
|
+
class << CONST; end
|
|
83
|
+
eof
|
|
84
|
+
end
|
|
85
|
+
Registry.at(klass).should be_nil
|
|
86
|
+
end
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
it "should document 'class << SomeConstant' by using SomeConstant's value as a reference to the real class name" do
|
|
90
|
+
Registry.at('String.classmethod').should_not be_nil
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
it "should allow class << SomeRubyClass to create the class if it does not exist" do
|
|
94
|
+
Registry.at('Symbol.toString').should_not be_nil
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
it "should document 'class Exception' without running into superclass issues" do
|
|
98
|
+
Parser::SourceParser.parse_string <<-eof
|
|
99
|
+
class Exception
|
|
100
|
+
end
|
|
101
|
+
eof
|
|
102
|
+
Registry.at(:Exception).should_not be_nil
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
it "should document 'class RT < XX::RT' with proper superclass even if XX::RT is a proxy" do
|
|
106
|
+
Registry.at(:RT).should_not be_nil
|
|
107
|
+
Registry.at(:RT).superclass.should == P('XX::RT')
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
it "should not overwrite docstring with an empty one" do
|
|
111
|
+
Registry.at(:Zebra).docstring.should == "Docstring 2"
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
it "should turn 'class Const < Struct.new(:sym)' into class Const with attr :sym" do
|
|
115
|
+
obj = Registry.at("Point")
|
|
116
|
+
obj.should be_kind_of(CodeObjects::ClassObject)
|
|
117
|
+
attrs = obj.attributes[:instance]
|
|
118
|
+
[:x, :y, :z].each do |key|
|
|
119
|
+
attrs.should have_key(key)
|
|
120
|
+
attrs[key][:read].should_not be_nil
|
|
121
|
+
attrs[key][:write].should_not be_nil
|
|
122
|
+
end
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
it "should turn 'class Const < Struct.new('Name', :sym)' into class Const with attr :sym" do
|
|
126
|
+
obj = Registry.at("AnotherPoint")
|
|
127
|
+
obj.should be_kind_of(CodeObjects::ClassObject)
|
|
128
|
+
attrs = obj.attributes[:instance]
|
|
129
|
+
[:a, :b, :c].each do |key|
|
|
130
|
+
attrs.should have_key(key)
|
|
131
|
+
attrs[key][:read].should_not be_nil
|
|
132
|
+
attrs[key][:write].should_not be_nil
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
Registry.at("XPoint").should be_nil
|
|
136
|
+
end
|
|
137
|
+
|
|
138
|
+
it "should create a Struct::Name class when class Const < Struct.new('Name', :sym) is found" do
|
|
139
|
+
obj = Registry.at("Struct::XPoint")
|
|
140
|
+
obj.should_not be_nil
|
|
141
|
+
end
|
|
142
|
+
|
|
143
|
+
it "should attach attribtues to the generated Struct::Name class when Struct.new('Name') is used" do
|
|
144
|
+
obj = Registry.at("Struct::XPoint")
|
|
145
|
+
attrs = obj.attributes[:instance]
|
|
146
|
+
[:a, :b, :c].each do |key|
|
|
147
|
+
attrs.should have_key(key)
|
|
148
|
+
attrs[key][:read].should_not be_nil
|
|
149
|
+
attrs[key][:write].should_not be_nil
|
|
150
|
+
end
|
|
151
|
+
end
|
|
152
|
+
|
|
153
|
+
it "should use @attr to set attribute descriptions on Struct subclasses" do
|
|
154
|
+
obj = Registry.at("DoccedStruct#input")
|
|
155
|
+
obj.docstring.should == "the input stream"
|
|
156
|
+
end
|
|
157
|
+
|
|
158
|
+
it "should use @attr to set attribute types on Struct subclasses" do
|
|
159
|
+
obj = Registry.at("DoccedStruct#someproc")
|
|
160
|
+
obj.should_not be_nil
|
|
161
|
+
obj.tag(:return).should_not be_nil
|
|
162
|
+
obj.tag(:return).types.should == ["Proc", "#call"]
|
|
163
|
+
end
|
|
164
|
+
|
|
165
|
+
it "should default types unspecified by @attr to Object on Struct subclasses" do
|
|
166
|
+
obj = Registry.at("DoccedStruct#mode")
|
|
167
|
+
obj.should_not be_nil
|
|
168
|
+
obj.tag(:return).should_not be_nil
|
|
169
|
+
obj.tag(:return).types.should == ["Object"]
|
|
170
|
+
end
|
|
171
|
+
|
|
172
|
+
it "should create parameters for writers of Struct subclass's attributes" do
|
|
173
|
+
obj = Registry.at("DoccedStruct#input=")
|
|
174
|
+
obj.tags(:param).size.should == 1
|
|
175
|
+
obj.tag(:param).types.should == ["IO"]
|
|
176
|
+
end
|
|
177
|
+
|
|
178
|
+
["SemiDoccedStruct", "NotAStruct"].each do |struct|
|
|
179
|
+
describe("Attributes on a " + (struct == "NotAStruct" ? "class" : "struct")) do
|
|
180
|
+
it "defines both readers and writers when @attr is used on Structs" do
|
|
181
|
+
obj = Registry.at(struct)
|
|
182
|
+
attrs = obj.attributes[:instance]
|
|
183
|
+
attrs[:first][:read].should_not be_nil
|
|
184
|
+
attrs[:first][:write].should_not be_nil
|
|
185
|
+
end
|
|
186
|
+
|
|
187
|
+
it "defines only a reader when only @attr_reader is used on Structs" do
|
|
188
|
+
obj = Registry.at(struct)
|
|
189
|
+
attrs = obj.attributes[:instance]
|
|
190
|
+
attrs[:second][:read].should_not be_nil
|
|
191
|
+
attrs[:second][:write].should be_nil
|
|
192
|
+
end
|
|
193
|
+
|
|
194
|
+
it "defines only a writer when only @attr_writer is used on Structs" do
|
|
195
|
+
obj = Registry.at(struct)
|
|
196
|
+
attrs = obj.attributes[:instance]
|
|
197
|
+
attrs[:third][:read].should be_nil
|
|
198
|
+
attrs[:third][:write].should_not be_nil
|
|
199
|
+
end
|
|
200
|
+
|
|
201
|
+
it "defines a reader with correct return types when @attr_reader is used on Structs" do
|
|
202
|
+
obj = Registry.at("#{struct}#second")
|
|
203
|
+
obj.tag(:return).types.should == ["Fixnum"]
|
|
204
|
+
end
|
|
205
|
+
|
|
206
|
+
it "defines a writer with correct parameter types when @attr_writer is used on Structs" do
|
|
207
|
+
obj = Registry.at("#{struct}#third=")
|
|
208
|
+
obj.tag(:param).types.should == ["Array"]
|
|
209
|
+
end
|
|
210
|
+
|
|
211
|
+
it "defines a reader and a writer when both @attr_reader and @attr_writer are used" do
|
|
212
|
+
obj = Registry.at(struct)
|
|
213
|
+
attrs = obj.attributes[:instance]
|
|
214
|
+
attrs[:fourth][:read].should_not be_nil
|
|
215
|
+
attrs[:fourth][:write].should_not be_nil
|
|
216
|
+
end
|
|
217
|
+
|
|
218
|
+
it "uses @attr_reader for the getter when both @attr_reader and @attr_writer are given" do
|
|
219
|
+
obj = Registry.at("#{struct}#fourth")
|
|
220
|
+
obj.tag(:return).types.should == ["#read"]
|
|
221
|
+
end
|
|
222
|
+
|
|
223
|
+
it "uses @attr_writer for the setter when both @attr_reader and @attr_writer are given" do
|
|
224
|
+
obj = Registry.at("#{struct}#fourth=")
|
|
225
|
+
obj.tag(:param).types.should == ["IO"]
|
|
226
|
+
end
|
|
227
|
+
|
|
228
|
+
it "extracts text from @attr_reader" do
|
|
229
|
+
Registry.at("#{struct}#fourth").docstring.should == "returns a proc that reads"
|
|
230
|
+
end
|
|
231
|
+
|
|
232
|
+
it "extracts text from @attr_writer" do
|
|
233
|
+
Registry.at("#{struct}#fourth=").docstring.should == "sets the proc that writes stuff"
|
|
234
|
+
end
|
|
235
|
+
end
|
|
236
|
+
end
|
|
237
|
+
|
|
238
|
+
it "should inherit from a regular struct" do
|
|
239
|
+
Registry.at('RegularStruct').superclass.should == P(:Struct)
|
|
240
|
+
Registry.at('RegularStruct2').superclass.should == P(:Struct)
|
|
241
|
+
end
|
|
242
|
+
|
|
243
|
+
it "should handle inheritance from 'self'" do
|
|
244
|
+
Registry.at('Outer1::Inner1').superclass.should == Registry.at('Outer1')
|
|
245
|
+
end
|
|
246
|
+
end
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/spec_helper'
|
|
2
|
+
|
|
3
|
+
describe "YARD::Handlers::Ruby::#{LEGACY_PARSER ? "Legacy::" : ""}ClassVariableHandler" do
|
|
4
|
+
before(:all) { parse_file :class_variable_handler_001, __FILE__ }
|
|
5
|
+
|
|
6
|
+
it "should not parse class variables inside methods" do
|
|
7
|
+
obj = Registry.at("A::B::@@somevar")
|
|
8
|
+
obj.source.should == "@@somevar = \"hello\""
|
|
9
|
+
obj.value.should == '"hello"'
|
|
10
|
+
end
|
|
11
|
+
end
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/spec_helper'
|
|
2
|
+
|
|
3
|
+
describe "YARD::Handlers::Ruby::#{LEGACY_PARSER ? "Legacy::" : ""}ConstantHandler" do
|
|
4
|
+
before(:all) { parse_file :constant_handler_001, __FILE__ }
|
|
5
|
+
|
|
6
|
+
it "should not parse constants inside methods" do
|
|
7
|
+
Registry.at("A::B::SOMECONSTANT").source.should == "SOMECONSTANT= \"hello\""
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
it "should only parse valid constants" do
|
|
11
|
+
Registry.at("A::B::notaconstant").should be_nil
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
it "should maintain newlines" do
|
|
15
|
+
Registry.at("A::B::MYCONSTANT").value.gsub("\r", "").should == "A +\nB +\nC +\nD"
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
it "should turn Const = Struct.new(:sym) into class Const with attr :sym" do
|
|
19
|
+
obj = Registry.at("MyClass")
|
|
20
|
+
obj.should be_kind_of(CodeObjects::ClassObject)
|
|
21
|
+
attrs = obj.attributes[:instance]
|
|
22
|
+
[:a, :b, :c].each do |key|
|
|
23
|
+
attrs.should have_key(key)
|
|
24
|
+
attrs[key][:read].should_not be_nil
|
|
25
|
+
attrs[key][:write].should_not be_nil
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
it "should turn Const = Struct.new('Name', :sym) into class Const with attr :sym" do
|
|
30
|
+
obj = Registry.at("NotMyClass")
|
|
31
|
+
obj.should be_kind_of(CodeObjects::ClassObject)
|
|
32
|
+
attrs = obj.attributes[:instance]
|
|
33
|
+
[:b, :c].each do |key|
|
|
34
|
+
attrs.should have_key(key)
|
|
35
|
+
attrs[key][:read].should_not be_nil
|
|
36
|
+
attrs[key][:write].should_not be_nil
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
Registry.at("NotMyClass2").should be_nil
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
it "should turn Const = Struct.new into empty struct" do
|
|
43
|
+
obj = Registry.at("MyEmptyStruct")
|
|
44
|
+
obj.should_not be_nil
|
|
45
|
+
obj.attributes[:instance].should be_empty
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
it "should maintain docstrings on structs defined via constants" do
|
|
49
|
+
obj = Registry.at("DocstringStruct")
|
|
50
|
+
obj.should_not be_nil
|
|
51
|
+
obj.docstring.should == "A crazy struct."
|
|
52
|
+
obj.attributes[:instance].should_not be_empty
|
|
53
|
+
a1 = Registry.at("DocstringStruct#bar")
|
|
54
|
+
a2 = Registry.at("DocstringStruct#baz")
|
|
55
|
+
a1.docstring.should == "An attr"
|
|
56
|
+
a1.tag(:return).types.should == ["String"]
|
|
57
|
+
a2.docstring.should == "Another attr"
|
|
58
|
+
a2.tag(:return).types.should == ["Number"]
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
it "should raise undocumentable error in 1.9 parser for Struct.new assignment to non-const" do
|
|
62
|
+
undoc_error "nonconst = Struct.new"
|
|
63
|
+
end unless LEGACY_PARSER
|
|
64
|
+
end
|