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,225 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/spec_helper'
|
|
2
|
+
|
|
3
|
+
describe YARD::CodeObjects::ClassObject do
|
|
4
|
+
describe '#inheritance_tree' do
|
|
5
|
+
before(:all) do
|
|
6
|
+
Registry.clear
|
|
7
|
+
@mixin = ModuleObject.new(:root, :SomeMixin)
|
|
8
|
+
@mixin2 = ModuleObject.new(:root, :SomeMixin2)
|
|
9
|
+
@mixin2.instance_mixins << @mixin
|
|
10
|
+
@mixin3 = ModuleObject.new(:root, :SomeMixin3)
|
|
11
|
+
@mixin4 = ModuleObject.new(:root, :SomeMixin4)
|
|
12
|
+
@mixin2.instance_mixins << @mixin3
|
|
13
|
+
@superyard = ClassObject.new(:root, :SuperYard)
|
|
14
|
+
@superyard.superclass = P("String")
|
|
15
|
+
@superyard.instance_mixins << @mixin2
|
|
16
|
+
@superyard.class_mixins << @mixin4
|
|
17
|
+
@yard = ClassObject.new(:root, :YARD)
|
|
18
|
+
@yard.superclass = @superyard
|
|
19
|
+
@yard.instance_mixins << @mixin
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
it "should show the proper inheritance tree" do
|
|
23
|
+
@yard.inheritance_tree.should == [@yard, @superyard, P(:String)]
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
it "should show proper inheritance tree when mixins are included" do
|
|
27
|
+
@yard.inheritance_tree(true).should == [@yard, @mixin, @superyard, @mixin4, @mixin2, @mixin3, P(:String)]
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
it "should not modify the object's mixin list when mixins are included" do
|
|
31
|
+
@class1 = ClassObject.new(:root, :A)
|
|
32
|
+
@class2 = ClassObject.new(:root, :B)
|
|
33
|
+
@class2.superclass = @class1
|
|
34
|
+
|
|
35
|
+
@class2.inheritance_tree(true)
|
|
36
|
+
@class2.mixins.should == []
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
it "should list class mixins in inheritance tree" do
|
|
40
|
+
mod = ModuleObject.new(:root, :ClassMethods)
|
|
41
|
+
klass = ClassObject.new(:root, :ReceivingClass)
|
|
42
|
+
klass.class_mixins << mod
|
|
43
|
+
klass.inheritance_tree(true).should == [klass, mod]
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
describe "#meths / #inherited_meths" do
|
|
48
|
+
before(:all) do
|
|
49
|
+
Registry.clear
|
|
50
|
+
|
|
51
|
+
YARD.parse_string <<-eof
|
|
52
|
+
class SuperYard < String
|
|
53
|
+
def foo; end
|
|
54
|
+
def foo2; end
|
|
55
|
+
def bar; end
|
|
56
|
+
def middle; end
|
|
57
|
+
protected :foo2
|
|
58
|
+
private
|
|
59
|
+
def self.bar; end
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
class MiddleYard < SuperYard
|
|
63
|
+
def middle; end
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
class YARD < MiddleYard
|
|
67
|
+
def mymethod; end
|
|
68
|
+
def bar; end
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
module IncludedYard
|
|
72
|
+
def foo; end
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
class FinalYard < SuperYard
|
|
76
|
+
include IncludedYard
|
|
77
|
+
end
|
|
78
|
+
eof
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
it "should show inherited methods by default" do
|
|
82
|
+
meths = P(:YARD).meths
|
|
83
|
+
meths.should include(P("YARD#mymethod"))
|
|
84
|
+
meths.should include(P("SuperYard#foo"))
|
|
85
|
+
meths.should include(P("SuperYard#foo2"))
|
|
86
|
+
meths.should include(P("SuperYard.bar"))
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
it "should allow :inherited to be set to false" do
|
|
90
|
+
meths = P(:YARD).meths(:inherited => false)
|
|
91
|
+
meths.should include(P("YARD#mymethod"))
|
|
92
|
+
meths.should_not include(P("SuperYard#foo"))
|
|
93
|
+
meths.should_not include(P("SuperYard#foo2"))
|
|
94
|
+
meths.should_not include(P("SuperYard.bar"))
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
it "should not show overridden methods" do
|
|
98
|
+
meths = P(:YARD).meths
|
|
99
|
+
meths.should include(P("YARD#bar"))
|
|
100
|
+
meths.should_not include(P("SuperYard#bar"))
|
|
101
|
+
|
|
102
|
+
meths = P(:YARD).inherited_meths
|
|
103
|
+
meths.should_not include(P("YARD#bar"))
|
|
104
|
+
meths.should_not include(P("YARD#mymethod"))
|
|
105
|
+
meths.should include(P("SuperYard#foo"))
|
|
106
|
+
meths.should include(P("SuperYard#foo2"))
|
|
107
|
+
meths.should include(P("SuperYard.bar"))
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
it "should not show inherited methods overridden by other subclasses" do
|
|
111
|
+
meths = P(:YARD).inherited_meths
|
|
112
|
+
meths.should include(P('MiddleYard#middle'))
|
|
113
|
+
meths.should_not include(P('SuperYard#middle'))
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
it "should show mixed in methods before superclass method" do
|
|
117
|
+
meths = P(:FinalYard).meths
|
|
118
|
+
meths.should include(P('IncludedYard#foo'))
|
|
119
|
+
meths.should_not include(P('SuperYard#foo'))
|
|
120
|
+
end
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
describe "#constants / #inherited_constants" do
|
|
124
|
+
before(:all) do
|
|
125
|
+
Registry.clear
|
|
126
|
+
|
|
127
|
+
Parser::SourceParser.parse_string <<-eof
|
|
128
|
+
class YARD
|
|
129
|
+
CONST1 = 1
|
|
130
|
+
CONST2 = "hello"
|
|
131
|
+
CONST4 = 0
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
class SUPERYARD < YARD
|
|
135
|
+
CONST4 = 5
|
|
136
|
+
end
|
|
137
|
+
|
|
138
|
+
class SubYard < SUPERYARD
|
|
139
|
+
CONST2 = "hi"
|
|
140
|
+
CONST3 = "foo"
|
|
141
|
+
end
|
|
142
|
+
eof
|
|
143
|
+
end
|
|
144
|
+
|
|
145
|
+
it "should list inherited constants by default" do
|
|
146
|
+
consts = P(:SubYard).constants
|
|
147
|
+
consts.should include(P("YARD::CONST1"))
|
|
148
|
+
consts.should include(P("SubYard::CONST3"))
|
|
149
|
+
|
|
150
|
+
consts = P(:SubYard).inherited_constants
|
|
151
|
+
consts.should include(P("YARD::CONST1"))
|
|
152
|
+
consts.should_not include(P("YARD::CONST2"))
|
|
153
|
+
consts.should_not include(P("SubYard::CONST2"))
|
|
154
|
+
consts.should_not include(P("SubYard::CONST3"))
|
|
155
|
+
end
|
|
156
|
+
|
|
157
|
+
it "should not list inherited constants if turned off" do
|
|
158
|
+
consts = P(:SubYard).constants(:inherited => false)
|
|
159
|
+
consts.should_not include(P("YARD::CONST1"))
|
|
160
|
+
consts.should include(P("SubYard::CONST3"))
|
|
161
|
+
end
|
|
162
|
+
|
|
163
|
+
it "should not include an inherited constant if it is overridden by the object" do
|
|
164
|
+
consts = P(:SubYard).constants
|
|
165
|
+
consts.should include(P("SubYard::CONST2"))
|
|
166
|
+
consts.should_not include(P("YARD::CONST2"))
|
|
167
|
+
end
|
|
168
|
+
|
|
169
|
+
it "should not include an inherited constant if it is overridden by another subclass" do
|
|
170
|
+
consts = P(:SubYard).inherited_constants
|
|
171
|
+
consts.should include(P("SUPERYARD::CONST4"))
|
|
172
|
+
consts.should_not include(P("YARD::CONST4"))
|
|
173
|
+
end
|
|
174
|
+
|
|
175
|
+
it "should not set a superclass on BasicObject class" do
|
|
176
|
+
o = ClassObject.new(:root, :Object)
|
|
177
|
+
o.superclass.should == P(:BasicObject)
|
|
178
|
+
end
|
|
179
|
+
|
|
180
|
+
it "should set superclass of Object to BasicObject" do
|
|
181
|
+
o = ClassObject.new(:root, :BasicObject)
|
|
182
|
+
o.superclass.should be_nil
|
|
183
|
+
end
|
|
184
|
+
|
|
185
|
+
it "should raise ArgumentError if superclass == self" do
|
|
186
|
+
lambda do
|
|
187
|
+
o = ClassObject.new(:root, :Object) do |o|
|
|
188
|
+
o.superclass = :Object
|
|
189
|
+
end
|
|
190
|
+
end.should raise_error(ArgumentError)
|
|
191
|
+
end
|
|
192
|
+
|
|
193
|
+
it "should tell the world if it is an exception class" do
|
|
194
|
+
o = ClassObject.new(:root, :MyClass)
|
|
195
|
+
o2 = ClassObject.new(:root, :OtherClass)
|
|
196
|
+
o2.superclass = :SystemCallError
|
|
197
|
+
o3 = ClassObject.new(:root, :StandardError)
|
|
198
|
+
o3.superclass = :Object
|
|
199
|
+
o4 = ClassObject.new(:root, :Object)
|
|
200
|
+
|
|
201
|
+
o.superclass = :Object
|
|
202
|
+
o.is_exception?.should == false
|
|
203
|
+
|
|
204
|
+
o.superclass = :Exception
|
|
205
|
+
o.is_exception?.should == true
|
|
206
|
+
|
|
207
|
+
o.superclass = :NoMethodError
|
|
208
|
+
o.is_exception?.should == true
|
|
209
|
+
|
|
210
|
+
o.superclass = o2
|
|
211
|
+
o.is_exception?.should == true
|
|
212
|
+
|
|
213
|
+
o.superclass = o3
|
|
214
|
+
o.is_exception?.should == true
|
|
215
|
+
end
|
|
216
|
+
|
|
217
|
+
it "should not raise ArgumentError if superclass is proxy in different namespace" do
|
|
218
|
+
lambda do
|
|
219
|
+
o = ClassObject.new(:root, :X) do |o|
|
|
220
|
+
o.superclass = P('OTHER::X')
|
|
221
|
+
end
|
|
222
|
+
end.should_not raise_error(ArgumentError)
|
|
223
|
+
end
|
|
224
|
+
end
|
|
225
|
+
end
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/spec_helper'
|
|
2
|
+
|
|
3
|
+
describe YARD::CodeObjects::CodeObjectList do
|
|
4
|
+
before { Registry.clear }
|
|
5
|
+
|
|
6
|
+
it "pushing a value should only allow CodeObjects::Base, String or Symbol" do
|
|
7
|
+
list = CodeObjectList.new(nil)
|
|
8
|
+
lambda { list.push(:hash => 1) }.should raise_error(ArgumentError)
|
|
9
|
+
list << "Test"
|
|
10
|
+
list << :Test2
|
|
11
|
+
list << ModuleObject.new(nil, :YARD)
|
|
12
|
+
list.size.should == 3
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
it "added value should be a proxy if parameter was String or Symbol" do
|
|
16
|
+
list = CodeObjectList.new(nil)
|
|
17
|
+
list << "Test"
|
|
18
|
+
list.first.class.should == Proxy
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
it "should contain a unique list of objects" do
|
|
22
|
+
obj = ModuleObject.new(nil, :YARD)
|
|
23
|
+
list = CodeObjectList.new(nil)
|
|
24
|
+
|
|
25
|
+
list << P(:YARD)
|
|
26
|
+
list << obj
|
|
27
|
+
list.size.should == 1
|
|
28
|
+
|
|
29
|
+
list << :Test
|
|
30
|
+
list << "Test"
|
|
31
|
+
list.size.should == 2
|
|
32
|
+
end
|
|
33
|
+
end
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/spec_helper'
|
|
2
|
+
|
|
3
|
+
describe YARD::CodeObjects, "CONSTANTMATCH" do
|
|
4
|
+
it "should match a constant" do
|
|
5
|
+
"Constant"[CodeObjects::CONSTANTMATCH].should == "Constant"
|
|
6
|
+
"identifier"[CodeObjects::CONSTANTMATCH].should be_nil
|
|
7
|
+
"File.new"[CodeObjects::CONSTANTMATCH].should == "File"
|
|
8
|
+
end
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
describe YARD::CodeObjects, "NAMESPACEMATCH" do
|
|
12
|
+
it "should match a namespace (multiple constants with ::)" do
|
|
13
|
+
"Constant"[CodeObjects::NAMESPACEMATCH].should == "Constant"
|
|
14
|
+
"A::B::C.new"[CodeObjects::NAMESPACEMATCH].should == "A::B::C"
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
describe YARD::CodeObjects, "METHODNAMEMATCH" do
|
|
19
|
+
it "should match a method name" do
|
|
20
|
+
"method"[CodeObjects::METHODNAMEMATCH].should == "method"
|
|
21
|
+
"[]()"[CodeObjects::METHODNAMEMATCH].should == "[]"
|
|
22
|
+
"-@"[CodeObjects::METHODNAMEMATCH].should == "-@"
|
|
23
|
+
"method?"[CodeObjects::METHODNAMEMATCH].should == "method?"
|
|
24
|
+
"method!!"[CodeObjects::METHODNAMEMATCH].should == "method!"
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
describe YARD::CodeObjects, "METHODMATCH" do
|
|
29
|
+
it "should match a full class method path" do
|
|
30
|
+
"method"[CodeObjects::METHODMATCH].should == "method"
|
|
31
|
+
"A::B::C.method?"[CodeObjects::METHODMATCH].should == "A::B::C.method?"
|
|
32
|
+
"A::B::C :: method"[CodeObjects::METHODMATCH].should == "A::B::C :: method"
|
|
33
|
+
"SomeClass . method"[CodeObjects::METHODMATCH].should == "SomeClass . method"
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
it "should match self.method" do
|
|
37
|
+
"self :: method!"[CodeObjects::METHODMATCH].should == "self :: method!"
|
|
38
|
+
"self.is_a?"[CodeObjects::METHODMATCH].should == "self.is_a?"
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
describe YARD::CodeObjects, "BUILTIN_EXCEPTIONS" do
|
|
43
|
+
it "should include all base exceptions" do
|
|
44
|
+
YARD::CodeObjects::BUILTIN_EXCEPTIONS.each do |name|
|
|
45
|
+
eval(name).should <= Exception
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
describe YARD::CodeObjects, "BUILTIN_CLASSES" do
|
|
51
|
+
it "should include all base classes" do
|
|
52
|
+
YARD::CodeObjects::BUILTIN_CLASSES.each do |name|
|
|
53
|
+
next if name == "MatchingData" && !defined?(::MatchingData)
|
|
54
|
+
next if name == "Continuation"
|
|
55
|
+
eval(name).should be_instance_of(Class)
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
it "should include all exceptions" do
|
|
60
|
+
YARD::CodeObjects::BUILTIN_EXCEPTIONS.each do |name|
|
|
61
|
+
YARD::CodeObjects::BUILTIN_CLASSES.should include(name)
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
describe YARD::CodeObjects, "BUILTIN_ALL" do
|
|
67
|
+
it "should include classes modules and exceptions" do
|
|
68
|
+
a = YARD::CodeObjects::BUILTIN_ALL
|
|
69
|
+
b = YARD::CodeObjects::BUILTIN_CLASSES
|
|
70
|
+
c = YARD::CodeObjects::BUILTIN_MODULES
|
|
71
|
+
a.should == b+c
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
describe YARD::CodeObjects, "BUILTIN_MODULES" do
|
|
76
|
+
it "should include all base modules" do
|
|
77
|
+
YARD::CodeObjects::BUILTIN_MODULES.each do |name|
|
|
78
|
+
next if YARD.ruby19? && ["Precision"].include?(name)
|
|
79
|
+
eval(name).should be_instance_of(Module)
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
end
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/spec_helper'
|
|
2
|
+
|
|
3
|
+
describe YARD::CodeObjects::ExtraFileObject do
|
|
4
|
+
describe '#initialize' do
|
|
5
|
+
it "should attempt to read contents from filesystem if contents=nil" do
|
|
6
|
+
File.should_receive(:read).with('file.txt').and_return('')
|
|
7
|
+
ExtraFileObject.new('file.txt')
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
it "should raise Errno::ENOENT if contents=nil and file does not exist" do
|
|
11
|
+
lambda { ExtraFileObject.new('file.txt') }.should raise_error(Errno::ENOENT)
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
it "should not attempt to read from disk if contents are provided" do
|
|
15
|
+
ExtraFileObject.new('file.txt', 'CONTENTS')
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
it "should set filename to filename" do
|
|
19
|
+
file = ExtraFileObject.new('a/b/c/file.txt', 'CONTENTS')
|
|
20
|
+
file.filename.should == "a/b/c/file.txt"
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
it "should parse out attributes at top of the file" do
|
|
24
|
+
file = ExtraFileObject.new('file.txt', "# @title X\n# @some_attribute Y\nFOO BAR")
|
|
25
|
+
file.attributes[:title].should == "X"
|
|
26
|
+
file.attributes[:some_attribute].should == "Y"
|
|
27
|
+
file.contents.should == "FOO BAR"
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
it "should allow whitespace prior to '#' marker when parsing attributes" do
|
|
31
|
+
file = ExtraFileObject.new('file.txt', " \t # @title X\nFOO BAR")
|
|
32
|
+
file.attributes[:title].should == "X"
|
|
33
|
+
file.contents.should == "FOO BAR"
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
it "should parse out old-style #!markup shebang format" do
|
|
37
|
+
file = ExtraFileObject.new('file.txt', "#!foobar\nHello")
|
|
38
|
+
file.attributes[:markup].should == "foobar"
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
it "should not parse old-style #!markup if any whitespace is found" do
|
|
42
|
+
file = ExtraFileObject.new('file.txt', " #!foobar\nHello")
|
|
43
|
+
file.attributes[:markup].should be_nil
|
|
44
|
+
file.contents.should == " #!foobar\nHello"
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
it "should not parse out attributes if there are newlines prior to attributes" do
|
|
48
|
+
file = ExtraFileObject.new('file.txt', "\n# @title\nFOO BAR")
|
|
49
|
+
file.attributes.should be_empty
|
|
50
|
+
file.contents.should == "\n# @title\nFOO BAR"
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
it "should set contents to data after attributes" do
|
|
54
|
+
file = ExtraFileObject.new('file.txt', "# @title\nFOO BAR")
|
|
55
|
+
file.contents.should == "FOO BAR"
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
it "should preserve newlines" do
|
|
59
|
+
file = ExtraFileObject.new('file.txt', "FOO\r\nBAR\nBAZ")
|
|
60
|
+
file.contents.should == "FOO\r\nBAR\nBAZ"
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
it "should not include newlines in attribute data" do
|
|
64
|
+
file = ExtraFileObject.new('file.txt', "# @title FooBar\r\nHello world")
|
|
65
|
+
file.attributes[:title].should == "FooBar"
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
it "should force encoding to @encoding attribute if present" do
|
|
69
|
+
log.should_not_receive(:warn)
|
|
70
|
+
data = "# @encoding sjis\nFOO"
|
|
71
|
+
data.force_encoding('binary')
|
|
72
|
+
file = ExtraFileObject.new('file.txt', data)
|
|
73
|
+
['Shift_JIS', 'Windows-31J'].should include(file.contents.encoding.to_s)
|
|
74
|
+
end if YARD.ruby19?
|
|
75
|
+
|
|
76
|
+
it "should warn if @encoding is invalid" do
|
|
77
|
+
log.should_receive(:warn).with("Invalid encoding `INVALID' in file.txt")
|
|
78
|
+
data = "# @encoding INVALID\nFOO"
|
|
79
|
+
encoding = data.encoding
|
|
80
|
+
file = ExtraFileObject.new('file.txt', data)
|
|
81
|
+
file.contents.encoding.should == encoding
|
|
82
|
+
end if YARD.ruby19?
|
|
83
|
+
|
|
84
|
+
it "should ignore encoding in 1.8.x (or encoding-unaware platforms)" do
|
|
85
|
+
log.should_not_receive(:warn)
|
|
86
|
+
file = ExtraFileObject.new('file.txt', "# @encoding INVALID\nFOO")
|
|
87
|
+
end if YARD.ruby18?
|
|
88
|
+
|
|
89
|
+
it "should attempt to re-parse data as 8bit ascii if parsing fails" do
|
|
90
|
+
log.should_not_receive(:warn)
|
|
91
|
+
str, out = *(["\xB0"] * 2)
|
|
92
|
+
if str.respond_to?(:force_encoding)
|
|
93
|
+
str.force_encoding('utf-8')
|
|
94
|
+
out.force_encoding('binary')
|
|
95
|
+
end
|
|
96
|
+
file = ExtraFileObject.new('file.txt', str)
|
|
97
|
+
file.contents.should == out
|
|
98
|
+
end
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
describe '#name' do
|
|
102
|
+
it "should be set to basename (not extension) of filename" do
|
|
103
|
+
file = ExtraFileObject.new('file.txt', '')
|
|
104
|
+
file.name.should == 'file'
|
|
105
|
+
end
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
describe '#title' do
|
|
109
|
+
it "should return @title attribute if present" do
|
|
110
|
+
file = ExtraFileObject.new('file.txt', '# @title FOO')
|
|
111
|
+
file.title.should == 'FOO'
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
it "should return #name if no @title attribute exists" do
|
|
115
|
+
file = ExtraFileObject.new('file.txt', '')
|
|
116
|
+
file.title.should == 'file'
|
|
117
|
+
end
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
describe '#locale=' do
|
|
121
|
+
it "should translate contents" do
|
|
122
|
+
file = ExtraFileObject.new('file.txt', 'Hello')
|
|
123
|
+
file.locale = 'fr'
|
|
124
|
+
fr_locale = I18n::Locale.new('fr')
|
|
125
|
+
fr_messages = fr_locale.instance_variable_get(:@messages)
|
|
126
|
+
fr_messages["Hello"] = 'Bonjour'
|
|
127
|
+
Registry.should_receive(:locale).with('fr').and_return(fr_locale)
|
|
128
|
+
file.contents.should == 'Bonjour'
|
|
129
|
+
end
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
describe '#==' do
|
|
133
|
+
it "should define equality on filename alone" do
|
|
134
|
+
file1 = ExtraFileObject.new('file.txt', 'A')
|
|
135
|
+
file2 = ExtraFileObject.new('file.txt', 'B')
|
|
136
|
+
file1.should == file2
|
|
137
|
+
file1.should be_eql(file2)
|
|
138
|
+
file1.should be_equal(file2)
|
|
139
|
+
|
|
140
|
+
# Another way to test the equality interface
|
|
141
|
+
a = [file1]
|
|
142
|
+
a |= [file2]
|
|
143
|
+
a.size.should == 1
|
|
144
|
+
end
|
|
145
|
+
|
|
146
|
+
end
|
|
147
|
+
end
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/spec_helper'
|
|
2
|
+
|
|
3
|
+
describe YARD::CodeObjects::MacroObject do
|
|
4
|
+
before do
|
|
5
|
+
Registry.clear
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
describe '.create' do
|
|
9
|
+
def create(*args) MacroObject.create(*args) end
|
|
10
|
+
|
|
11
|
+
it "should create an object" do
|
|
12
|
+
create('foo', '')
|
|
13
|
+
obj = Registry.at('.macro.foo')
|
|
14
|
+
obj.should_not be_nil
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
it "should use identity map" do
|
|
18
|
+
obj1 = create('foo', '')
|
|
19
|
+
obj2 = create('foo', '')
|
|
20
|
+
obj1.object_id.should == obj2.object_id
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
it "should allow specifying of macro data" do
|
|
24
|
+
obj = create('foo', 'MACRODATA')
|
|
25
|
+
obj.macro_data.should == 'MACRODATA'
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
it "should attach if a method object is provided" do
|
|
29
|
+
obj = create('foo', 'MACRODATA', P('Foo.property'))
|
|
30
|
+
obj.method_object.should == P('Foo.property')
|
|
31
|
+
obj.should be_attached
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
describe '.find' do
|
|
36
|
+
before { MacroObject.create('foo', 'DATA') }
|
|
37
|
+
|
|
38
|
+
it "should search for an object by name" do
|
|
39
|
+
MacroObject.find('foo').macro_data.should == 'DATA'
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
it "should accept Symbol" do
|
|
43
|
+
MacroObject.find(:foo).macro_data.should == 'DATA'
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
describe '.find_or_create' do
|
|
48
|
+
it "should look up name if @!macro is present and find object" do
|
|
49
|
+
macro1 = MacroObject.create('foo', 'FOO')
|
|
50
|
+
macro2 = MacroObject.find_or_create('foo', "a b c")
|
|
51
|
+
macro1.should == macro2
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
it "should create new macro if macro by that name does not exist" do
|
|
55
|
+
MacroObject.find_or_create('foo', "@!method $1")
|
|
56
|
+
MacroObject.find('foo').macro_data.should == "@!method $1"
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
describe '.apply' do
|
|
61
|
+
before do
|
|
62
|
+
@args = %w(foo a b c)
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
def apply(comments)
|
|
66
|
+
MacroObject.apply(comments, @args)
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
it "should only expand macros if @macro is present" do
|
|
70
|
+
apply("$1$2$3").should == "$1$2$3"
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
it "should handle macro text inside block" do
|
|
74
|
+
apply("@!macro\n foo$1$2$3\nfoobaz").should == "fooabc\nfoobaz"
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
it "should append docstring to existing macro" do
|
|
78
|
+
macro = MacroObject.create('name', '$3$2$1')
|
|
79
|
+
result = MacroObject.apply("@!macro name\nfoobar", @args)
|
|
80
|
+
result.should == "cba\nfoobar"
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
it "should use only non macro data if docstring is an existing macro" do
|
|
84
|
+
data = "@!macro name\n $3$2$1\nEXTRA"
|
|
85
|
+
result = MacroObject.apply(data, @args, 'SOURCE')
|
|
86
|
+
result.should == "cba\nEXTRA"
|
|
87
|
+
MacroObject.apply("@!macro name\nFOO", @args).should == "cba\nFOO"
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
it "should create macros if they don't exist" do
|
|
91
|
+
result = MacroObject.apply("@!macro name\n foo!$1", @args, 'SOURCE')
|
|
92
|
+
result.should == "foo!a"
|
|
93
|
+
MacroObject.find('name').macro_data.should == 'foo!$1'
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
it "should keep other tags" do
|
|
97
|
+
apply("@!macro\n foo$1$2$3\n@param name foo\nfoo").should ==
|
|
98
|
+
"fooabc\nfoo\n@param name\n foo"
|
|
99
|
+
end
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
describe '.expand' do
|
|
103
|
+
def expand(comments)
|
|
104
|
+
args = %w(foo a b c)
|
|
105
|
+
full_line = 'foo :bar, :baz'
|
|
106
|
+
MacroObject.expand(comments, args, full_line)
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
it "should allow escaping of macro syntax" do
|
|
110
|
+
expand("$1\\$2$3").should == "a$2c"
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
it "should replace $* with the whole statement" do
|
|
114
|
+
expand("$* ${*}").should == "foo :bar, :baz foo :bar, :baz"
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
it "should replace $0 with method name" do
|
|
118
|
+
expand("$0 ${0}").should == "foo foo"
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
it "should replace all $N values with the Nth argument in the method call" do
|
|
122
|
+
expand("$1$2$3${3}\nfoobar").should == "abcc\nfoobar"
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
it "should replace ${N-M} ranges with N-M arguments (incl. commas)" do
|
|
126
|
+
expand("${1-2}x").should == "a, bx"
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
it "should handle open ended ranges (${N-})" do
|
|
130
|
+
expand("${2-}").should == "b, c"
|
|
131
|
+
end
|
|
132
|
+
|
|
133
|
+
it "should handle negative indexes ($-N)" do
|
|
134
|
+
expand("$-1 ${-2-} ${-2--2}").should == "c b, c b"
|
|
135
|
+
end
|
|
136
|
+
|
|
137
|
+
it "should accept Docstring objects" do
|
|
138
|
+
expand(Docstring.new("$1\n@param name foo")).should == "a\n@param name foo"
|
|
139
|
+
end
|
|
140
|
+
end
|
|
141
|
+
|
|
142
|
+
describe '#expand' do
|
|
143
|
+
it "should expand macro given its data" do
|
|
144
|
+
macro = MacroObject.create_docstring('foo', '$1 $2 THREE!')
|
|
145
|
+
macro.expand(['NAME', 'ONE', 'TWO']).should == "ONE TWO THREE!"
|
|
146
|
+
end
|
|
147
|
+
end
|
|
148
|
+
end
|