yard 0.9.5 → 0.9.6
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of yard might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/.yardopts +0 -0
- data/CHANGELOG.md +20 -0
- data/LEGAL +0 -0
- data/LICENSE +0 -0
- data/README.md +70 -35
- data/Rakefile +10 -39
- data/benchmarks/builtins_vs_eval.rb +9 -8
- data/benchmarks/concat_vs_join.rb +1 -0
- data/benchmarks/erb_vs_erubis.rb +3 -2
- data/benchmarks/format_args.rb +1 -0
- data/benchmarks/generation.rb +2 -1
- data/benchmarks/marshal_vs_dbm.rb +2 -1
- data/benchmarks/parsing.rb +1 -1
- data/benchmarks/pathname_vs_string.rb +1 -0
- data/benchmarks/rdoc_vs_yardoc.rb +2 -1
- data/benchmarks/registry_store_types.rb +1 -0
- data/benchmarks/ri_vs_yri.rb +1 -0
- data/benchmarks/ripper_parser.rb +2 -1
- data/benchmarks/splat_vs_flatten.rb +4 -3
- data/benchmarks/template_erb.rb +2 -1
- data/benchmarks/template_format.rb +1 -0
- data/benchmarks/template_profile.rb +4 -3
- data/benchmarks/yri_cache.rb +2 -1
- data/bin/yard +2 -1
- data/bin/yardoc +2 -1
- data/bin/yri +2 -1
- data/docs/CodeObjects.md +0 -0
- data/docs/GettingStarted.md +0 -0
- data/docs/Handlers.md +0 -0
- data/docs/Overview.md +0 -0
- data/docs/Parser.md +0 -0
- data/docs/Tags.md +0 -0
- data/docs/TagsArch.md +0 -0
- data/docs/Templates.md +0 -0
- data/docs/WhatsNew.md +0 -0
- data/docs/images/code-objects-class-diagram.png +0 -0
- data/docs/images/tags-class-diagram.png +0 -0
- data/docs/templates/default/fulldoc/html/full_list_tag.erb +0 -0
- data/docs/templates/default/fulldoc/html/setup.rb +1 -1
- data/docs/templates/default/layout/html/setup.rb +1 -0
- data/docs/templates/default/layout/html/tag_list.erb +0 -0
- data/docs/templates/default/yard_tags/html/list.erb +0 -0
- data/docs/templates/default/yard_tags/html/setup.rb +18 -19
- data/docs/templates/plugin.rb +18 -13
- data/lib/rubygems_plugin.rb +1 -0
- data/lib/yard.rb +5 -6
- data/lib/yard/autoload.rb +4 -0
- data/lib/yard/cli/command.rb +3 -2
- data/lib/yard/cli/command_parser.rb +4 -3
- data/lib/yard/cli/config.rb +5 -4
- data/lib/yard/cli/diff.rb +39 -39
- data/lib/yard/cli/display.rb +2 -1
- data/lib/yard/cli/gems.rb +6 -5
- data/lib/yard/cli/graph.rb +4 -5
- data/lib/yard/cli/help.rb +4 -2
- data/lib/yard/cli/i18n.rb +2 -1
- data/lib/yard/cli/list.rb +2 -1
- data/lib/yard/cli/markup_types.rb +4 -5
- data/lib/yard/cli/server.rb +27 -24
- data/lib/yard/cli/stats.rb +20 -16
- data/lib/yard/cli/yardoc.rb +22 -19
- data/lib/yard/cli/yardopts_command.rb +3 -2
- data/lib/yard/cli/yri.rb +26 -25
- data/lib/yard/code_objects/base.rb +41 -37
- data/lib/yard/code_objects/class_object.rb +3 -2
- data/lib/yard/code_objects/class_variable_object.rb +2 -1
- data/lib/yard/code_objects/constant_object.rb +2 -1
- data/lib/yard/code_objects/extended_method_object.rb +2 -1
- data/lib/yard/code_objects/extra_file_object.rb +1 -0
- data/lib/yard/code_objects/macro_object.rb +10 -10
- data/lib/yard/code_objects/method_object.rb +15 -13
- data/lib/yard/code_objects/module_object.rb +1 -0
- data/lib/yard/code_objects/namespace_mapper.rb +1 -0
- data/lib/yard/code_objects/namespace_object.rb +2 -5
- data/lib/yard/code_objects/proxy.rb +35 -53
- data/lib/yard/code_objects/root_object.rb +3 -1
- data/lib/yard/config.rb +8 -9
- data/lib/yard/core_ext/array.rb +1 -0
- data/lib/yard/core_ext/file.rb +4 -3
- data/lib/yard/core_ext/hash.rb +3 -2
- data/lib/yard/core_ext/insertion.rb +7 -4
- data/lib/yard/core_ext/module.rb +2 -1
- data/lib/yard/core_ext/string.rb +5 -4
- data/lib/yard/core_ext/symbol_hash.rb +8 -6
- data/lib/yard/docstring.rb +26 -15
- data/lib/yard/docstring_parser.rb +61 -61
- data/lib/yard/gem_index.rb +17 -0
- data/lib/yard/globals.rb +6 -2
- data/lib/yard/handlers/base.rb +22 -23
- data/lib/yard/handlers/c/alias_handler.rb +3 -2
- data/lib/yard/handlers/c/attribute_handler.rb +2 -2
- data/lib/yard/handlers/c/base.rb +13 -13
- data/lib/yard/handlers/c/class_handler.rb +1 -0
- data/lib/yard/handlers/c/constant_handler.rb +3 -2
- data/lib/yard/handlers/c/handler_methods.rb +24 -25
- data/lib/yard/handlers/c/init_handler.rb +4 -2
- data/lib/yard/handlers/c/method_handler.rb +7 -6
- data/lib/yard/handlers/c/mixin_handler.rb +3 -1
- data/lib/yard/handlers/c/module_handler.rb +1 -0
- data/lib/yard/handlers/c/override_comment_handler.rb +2 -1
- data/lib/yard/handlers/c/path_handler.rb +1 -0
- data/lib/yard/handlers/c/struct_handler.rb +1 -0
- data/lib/yard/handlers/c/symbol_handler.rb +2 -1
- data/lib/yard/handlers/processor.rb +14 -15
- data/lib/yard/handlers/ruby/alias_handler.rb +4 -2
- data/lib/yard/handlers/ruby/attribute_handler.rb +11 -6
- data/lib/yard/handlers/ruby/base.rb +5 -4
- data/lib/yard/handlers/ruby/class_condition_handler.rb +4 -3
- data/lib/yard/handlers/ruby/class_handler.rb +7 -9
- data/lib/yard/handlers/ruby/class_variable_handler.rb +2 -1
- data/lib/yard/handlers/ruby/comment_handler.rb +1 -0
- data/lib/yard/handlers/ruby/constant_handler.rb +9 -5
- data/lib/yard/handlers/ruby/decorator_handler_methods.rb +15 -28
- data/lib/yard/handlers/ruby/dsl_handler.rb +1 -0
- data/lib/yard/handlers/ruby/dsl_handler_methods.rb +7 -6
- data/lib/yard/handlers/ruby/exception_handler.rb +1 -0
- data/lib/yard/handlers/ruby/extend_handler.rb +1 -0
- data/lib/yard/handlers/ruby/legacy/alias_handler.rb +6 -4
- data/lib/yard/handlers/ruby/legacy/attribute_handler.rb +12 -7
- data/lib/yard/handlers/ruby/legacy/base.rb +21 -26
- data/lib/yard/handlers/ruby/legacy/class_condition_handler.rb +7 -7
- data/lib/yard/handlers/ruby/legacy/class_handler.rb +7 -5
- data/lib/yard/handlers/ruby/legacy/class_variable_handler.rb +2 -1
- data/lib/yard/handlers/ruby/legacy/comment_handler.rb +1 -0
- data/lib/yard/handlers/ruby/legacy/constant_handler.rb +2 -1
- data/lib/yard/handlers/ruby/legacy/dsl_handler.rb +1 -0
- data/lib/yard/handlers/ruby/legacy/exception_handler.rb +2 -1
- data/lib/yard/handlers/ruby/legacy/extend_handler.rb +2 -1
- data/lib/yard/handlers/ruby/legacy/method_handler.rb +11 -6
- data/lib/yard/handlers/ruby/legacy/mixin_handler.rb +5 -5
- data/lib/yard/handlers/ruby/legacy/module_function_handler.rb +2 -1
- data/lib/yard/handlers/ruby/legacy/module_handler.rb +2 -1
- data/lib/yard/handlers/ruby/legacy/private_class_method_handler.rb +2 -1
- data/lib/yard/handlers/ruby/legacy/private_constant_handler.rb +2 -1
- data/lib/yard/handlers/ruby/legacy/visibility_handler.rb +3 -2
- data/lib/yard/handlers/ruby/legacy/yield_handler.rb +1 -0
- data/lib/yard/handlers/ruby/method_condition_handler.rb +2 -1
- data/lib/yard/handlers/ruby/method_handler.rb +9 -11
- data/lib/yard/handlers/ruby/mixin_handler.rb +2 -1
- data/lib/yard/handlers/ruby/module_function_handler.rb +2 -1
- data/lib/yard/handlers/ruby/module_handler.rb +2 -1
- data/lib/yard/handlers/ruby/private_class_method_handler.rb +1 -0
- data/lib/yard/handlers/ruby/private_constant_handler.rb +2 -2
- data/lib/yard/handlers/ruby/public_class_method_handler.rb +1 -0
- data/lib/yard/handlers/ruby/struct_handler_methods.rb +5 -4
- data/lib/yard/handlers/ruby/visibility_handler.rb +1 -0
- data/lib/yard/handlers/ruby/yield_handler.rb +1 -0
- data/lib/yard/i18n/locale.rb +1 -0
- data/lib/yard/i18n/message.rb +5 -4
- data/lib/yard/i18n/messages.rb +2 -1
- data/lib/yard/i18n/po_parser.rb +5 -4
- data/lib/yard/i18n/pot_generator.rb +8 -8
- data/lib/yard/i18n/text.rb +9 -9
- data/lib/yard/logging.rb +9 -6
- data/lib/yard/options.rb +8 -7
- data/lib/yard/parser/base.rb +3 -2
- data/lib/yard/parser/c/c_parser.rb +22 -21
- data/lib/yard/parser/c/comment_parser.rb +9 -6
- data/lib/yard/parser/c/statement.rb +1 -0
- data/lib/yard/parser/ruby/ast_node.rb +20 -18
- data/lib/yard/parser/ruby/legacy/ruby_lex.rb +99 -122
- data/lib/yard/parser/ruby/legacy/ruby_parser.rb +3 -2
- data/lib/yard/parser/ruby/legacy/statement.rb +4 -3
- data/lib/yard/parser/ruby/legacy/statement_list.rb +52 -42
- data/lib/yard/parser/ruby/legacy/token_list.rb +16 -13
- data/lib/yard/parser/ruby/ruby_parser.rb +87 -63
- data/lib/yard/parser/ruby/token_resolver.rb +156 -0
- data/lib/yard/parser/source_parser.rb +28 -20
- data/lib/yard/rake/yardoc_task.rb +3 -3
- data/lib/yard/registry.rb +14 -16
- data/lib/yard/registry_resolver.rb +36 -20
- data/lib/yard/registry_store.rb +19 -15
- data/lib/yard/rubygems/backports.rb +2 -0
- data/lib/yard/rubygems/backports/LICENSE.txt +0 -0
- data/lib/yard/rubygems/backports/MIT.txt +0 -0
- data/lib/yard/rubygems/backports/gem.rb +1 -0
- data/lib/yard/rubygems/backports/source_index.rb +25 -30
- data/lib/yard/rubygems/doc_manager.rb +10 -8
- data/lib/yard/rubygems/hook.rb +11 -18
- data/lib/yard/rubygems/specification.rb +1 -0
- data/lib/yard/serializers/base.rb +5 -2
- data/lib/yard/serializers/file_system_serializer.rb +7 -6
- data/lib/yard/serializers/process_serializer.rb +2 -2
- data/lib/yard/serializers/stdout_serializer.rb +8 -6
- data/lib/yard/serializers/yardoc_serializer.rb +31 -26
- data/lib/yard/server.rb +2 -1
- data/lib/yard/server/adapter.rb +1 -1
- data/lib/yard/server/commands/base.rb +15 -2
- data/lib/yard/server/commands/display_file_command.rb +2 -2
- data/lib/yard/server/commands/display_object_command.rb +6 -3
- data/lib/yard/server/commands/frames_command.rb +1 -0
- data/lib/yard/server/commands/library_command.rb +50 -14
- data/lib/yard/server/commands/library_index_command.rb +5 -4
- data/lib/yard/server/commands/list_command.rb +1 -0
- data/lib/yard/server/commands/root_request_command.rb +1 -0
- data/lib/yard/server/commands/search_command.rb +17 -16
- data/lib/yard/server/commands/static_file_command.rb +2 -1
- data/lib/yard/server/commands/static_file_helpers.rb +23 -14
- data/lib/yard/server/doc_server_helper.rb +15 -1
- data/lib/yard/server/doc_server_serializer.rb +3 -5
- data/lib/yard/server/library_version.rb +44 -22
- data/lib/yard/server/rack_adapter.rb +2 -1
- data/lib/yard/server/router.rb +15 -14
- data/lib/yard/server/static_caching.rb +1 -0
- data/lib/yard/server/templates/default/fulldoc/html/css/custom.css +0 -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 +0 -0
- data/lib/yard/server/templates/default/layout/html/breadcrumb.erb +0 -0
- data/lib/yard/server/templates/default/layout/html/script_setup.erb +0 -0
- data/lib/yard/server/templates/default/layout/html/setup.rb +2 -1
- data/lib/yard/server/templates/default/method_details/html/permalink.erb +0 -0
- data/lib/yard/server/templates/default/method_details/html/setup.rb +1 -0
- data/lib/yard/server/templates/doc_server/library_list/html/headers.erb +2 -2
- data/lib/yard/server/templates/doc_server/library_list/html/library_list.erb +0 -0
- data/lib/yard/server/templates/doc_server/library_list/html/listing.erb +1 -1
- data/lib/yard/server/templates/doc_server/library_list/html/setup.rb +2 -1
- data/lib/yard/server/templates/doc_server/library_list/html/title.erb +0 -0
- data/lib/yard/server/templates/doc_server/processing/html/processing.erb +4 -4
- data/lib/yard/server/templates/doc_server/processing/html/setup.rb +2 -1
- data/lib/yard/server/templates/doc_server/search/html/search.erb +0 -0
- data/lib/yard/server/templates/doc_server/search/html/setup.rb +2 -1
- data/lib/yard/server/webrick_adapter.rb +4 -2
- data/lib/yard/tags/default_factory.rb +19 -13
- data/lib/yard/tags/default_tag.rb +2 -1
- data/lib/yard/tags/directives.rb +17 -19
- data/lib/yard/tags/library.rb +9 -6
- data/lib/yard/tags/option_tag.rb +1 -0
- data/lib/yard/tags/overload_tag.rb +6 -4
- data/lib/yard/tags/ref_tag.rb +1 -0
- data/lib/yard/tags/ref_tag_list.rb +2 -1
- data/lib/yard/tags/tag.rb +16 -2
- data/lib/yard/tags/tag_format_error.rb +3 -2
- data/lib/yard/tags/types_explainer.rb +160 -0
- data/lib/yard/templates/engine.rb +3 -2
- data/lib/yard/templates/erb_cache.rb +3 -2
- data/lib/yard/templates/helpers/base_helper.rb +9 -6
- data/lib/yard/templates/helpers/filter_helper.rb +1 -0
- data/lib/yard/templates/helpers/html_helper.rb +65 -37
- data/lib/yard/templates/helpers/html_syntax_highlight_helper.rb +25 -7
- data/lib/yard/templates/helpers/markup/rdoc_markdown.rb +2 -1
- data/lib/yard/templates/helpers/markup/rdoc_markup.rb +10 -7
- data/lib/yard/templates/helpers/markup_helper.rb +12 -13
- data/lib/yard/templates/helpers/method_helper.rb +8 -7
- data/lib/yard/templates/helpers/module_helper.rb +1 -0
- data/lib/yard/templates/helpers/text_helper.rb +16 -11
- data/lib/yard/templates/helpers/uml_helper.rb +2 -1
- data/lib/yard/templates/section.rb +3 -4
- data/lib/yard/templates/template.rb +18 -11
- data/lib/yard/templates/template_options.rb +1 -0
- data/lib/yard/verifier.rb +2 -0
- data/lib/yard/version.rb +2 -1
- data/spec/cli/command_parser_spec.rb +7 -7
- data/spec/cli/command_spec.rb +2 -2
- data/spec/cli/config_spec.rb +3 -4
- data/spec/cli/diff_spec.rb +7 -9
- data/spec/cli/display_spec.rb +2 -2
- data/spec/cli/gems_spec.rb +11 -11
- data/spec/cli/graph_spec.rb +4 -3
- data/spec/cli/help_spec.rb +3 -3
- data/spec/cli/i18n_spec.rb +3 -3
- data/spec/cli/list_spec.rb +2 -2
- data/spec/cli/markup_types_spec.rb +2 -2
- data/spec/cli/server_spec.rb +21 -18
- data/spec/cli/stats_spec.rb +23 -22
- data/spec/cli/yardoc_spec.rb +49 -47
- data/spec/cli/yri_spec.rb +6 -6
- data/spec/code_objects/base_spec.rb +6 -4
- data/spec/code_objects/class_object_spec.rb +10 -9
- data/spec/code_objects/code_object_list_spec.rb +3 -2
- data/spec/code_objects/constants_spec.rb +17 -6
- data/spec/code_objects/extra_file_object_spec.rb +6 -5
- data/spec/code_objects/macro_object_spec.rb +5 -3
- data/spec/code_objects/method_object_spec.rb +6 -5
- data/spec/code_objects/module_object_spec.rb +3 -2
- data/spec/code_objects/namespace_object_spec.rb +10 -9
- data/spec/code_objects/proxy_spec.rb +9 -8
- data/spec/code_objects/spec_helper.rb +2 -2
- data/spec/config_spec.rb +9 -14
- data/spec/core_ext/array_spec.rb +2 -3
- data/spec/core_ext/file_spec.rb +3 -3
- data/spec/core_ext/hash_spec.rb +5 -5
- data/spec/core_ext/insertion_spec.rb +2 -2
- data/spec/core_ext/module_spec.rb +3 -3
- data/spec/core_ext/string_spec.rb +5 -5
- data/spec/core_ext/symbol_hash_spec.rb +8 -8
- data/spec/docstring_parser_spec.rb +6 -7
- data/spec/docstring_spec.rb +30 -3
- data/spec/examples.txt +1848 -0
- data/spec/handlers/alias_handler_spec.rb +2 -1
- data/spec/handlers/attribute_handler_spec.rb +7 -5
- data/spec/handlers/base_spec.rb +9 -8
- data/spec/handlers/c/alias_handler_spec.rb +2 -1
- data/spec/handlers/c/attribute_handler_spec.rb +2 -1
- data/spec/handlers/c/class_handler_spec.rb +2 -1
- data/spec/handlers/c/constant_handler_spec.rb +5 -4
- data/spec/handlers/c/init_handler_spec.rb +2 -1
- data/spec/handlers/c/method_handler_spec.rb +2 -1
- data/spec/handlers/c/mixin_handler_spec.rb +2 -1
- data/spec/handlers/c/module_handler_spec.rb +2 -1
- data/spec/handlers/c/override_comment_handler_spec.rb +2 -1
- data/spec/handlers/c/path_handler_spec.rb +2 -1
- data/spec/handlers/c/spec_helper.rb +1 -1
- data/spec/handlers/c/struct_handler_spec.rb +3 -2
- data/spec/handlers/class_condition_handler_spec.rb +3 -2
- data/spec/handlers/class_handler_spec.rb +3 -2
- data/spec/handlers/class_method_handler_shared_examples.rb +9 -8
- data/spec/handlers/class_variable_handler_spec.rb +3 -2
- data/spec/handlers/constant_handler_spec.rb +28 -3
- data/spec/handlers/decorator_handler_methods_spec.rb +47 -59
- data/spec/handlers/dsl_handler_spec.rb +3 -2
- data/spec/handlers/examples/alias_handler_001.rb.txt +0 -0
- data/spec/handlers/examples/attribute_handler_001.rb.txt +0 -0
- data/spec/handlers/examples/class_condition_handler_001.rb.txt +0 -0
- data/spec/handlers/examples/class_handler_001.rb.txt +0 -0
- data/spec/handlers/examples/class_variable_handler_001.rb.txt +0 -0
- data/spec/handlers/examples/constant_handler_001.rb.txt +0 -0
- data/spec/handlers/examples/dsl_handler_001.rb.txt +0 -0
- data/spec/handlers/examples/exception_handler_001.rb.txt +0 -0
- data/spec/handlers/examples/extend_handler_001.rb.txt +0 -0
- data/spec/handlers/examples/method_condition_handler_001.rb.txt +0 -0
- data/spec/handlers/examples/method_handler_001.rb.txt +2 -0
- data/spec/handlers/examples/mixin_handler_001.rb.txt +0 -0
- data/spec/handlers/examples/module_handler_001.rb.txt +0 -0
- data/spec/handlers/examples/private_constant_handler_001.rb.txt +0 -0
- data/spec/handlers/examples/process_handler_001.rb.txt +0 -0
- data/spec/handlers/examples/visibility_handler_001.rb.txt +0 -0
- data/spec/handlers/examples/yield_handler_001.rb.txt +0 -0
- data/spec/handlers/exception_handler_spec.rb +3 -2
- data/spec/handlers/extend_handler_spec.rb +2 -1
- data/spec/handlers/legacy_base_spec.rb +5 -5
- data/spec/handlers/method_condition_handler_spec.rb +3 -2
- data/spec/handlers/method_handler_spec.rb +7 -1
- data/spec/handlers/mixin_handler_spec.rb +3 -2
- data/spec/handlers/module_function_handler_spec.rb +2 -1
- data/spec/handlers/module_handler_spec.rb +3 -2
- data/spec/handlers/private_class_method_handler_spec.rb +2 -1
- data/spec/handlers/private_constant_handler_spec.rb +2 -1
- data/spec/handlers/processor_spec.rb +2 -1
- data/spec/handlers/public_class_method_handler_spec.rb +2 -1
- data/spec/handlers/ruby/base_spec.rb +6 -5
- data/spec/handlers/ruby/legacy/base_spec.rb +4 -4
- data/spec/handlers/spec_helper.rb +3 -3
- data/spec/handlers/visibility_handler_spec.rb +3 -2
- data/spec/handlers/yield_handler_spec.rb +3 -2
- data/spec/i18n/locale_spec.rb +3 -3
- data/spec/i18n/message_spec.rb +2 -2
- data/spec/i18n/messages_spec.rb +3 -3
- data/spec/i18n/pot_generator_spec.rb +34 -34
- data/spec/i18n/text_spec.rb +16 -12
- data/spec/logging_spec.rb +2 -2
- data/spec/options_spec.rb +9 -9
- data/spec/parser/base_spec.rb +2 -2
- data/spec/parser/c_parser_spec.rb +5 -4
- data/spec/parser/examples/array.c.txt +0 -0
- data/spec/parser/examples/example1.rb.txt +0 -0
- data/spec/parser/examples/extrafile.c.txt +0 -0
- data/spec/parser/examples/multifile.c.txt +0 -0
- data/spec/parser/examples/override.c.txt +0 -0
- data/spec/parser/examples/parse_in_order_001.rb.txt +0 -0
- data/spec/parser/examples/parse_in_order_002.rb.txt +0 -0
- data/spec/parser/examples/tag_handler_001.rb.txt +0 -0
- data/spec/parser/ruby/ast_node_spec.rb +7 -7
- data/spec/parser/ruby/legacy/statement_list_spec.rb +7 -7
- data/spec/parser/ruby/legacy/token_list_spec.rb +4 -4
- data/spec/parser/ruby/ruby_parser_spec.rb +42 -20
- data/spec/parser/ruby/token_resolver_spec.rb +165 -0
- data/spec/parser/source_parser_spec.rb +18 -18
- data/spec/parser/tag_parsing_spec.rb +2 -2
- data/spec/rake/yardoc_task_spec.rb +4 -4
- data/spec/registry_spec.rb +62 -56
- data/spec/registry_store_spec.rb +7 -7
- data/spec/rubygems/doc_manager_spec.rb +2 -2
- data/spec/serializers/data/serialized_yardoc/checksums +0 -0
- data/spec/serializers/data/serialized_yardoc/objects/Foo.dat +0 -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/root.dat +0 -0
- data/spec/serializers/data/serialized_yardoc/proxy_types +0 -0
- data/spec/serializers/file_system_serializer_spec.rb +8 -7
- data/spec/serializers/spec_helper.rb +2 -2
- data/spec/serializers/yardoc_serializer_spec.rb +5 -4
- data/spec/server/adapter_spec.rb +3 -2
- data/spec/server/commands/base_spec.rb +15 -11
- data/spec/server/commands/library_command_spec.rb +2 -2
- data/spec/server/doc_server_helper_spec.rb +4 -3
- data/spec/server/doc_server_serializer_spec.rb +3 -2
- data/spec/server/rack_adapter_spec.rb +3 -2
- data/spec/server/router_spec.rb +3 -2
- data/spec/server/spec_helper.rb +2 -2
- data/spec/server/static_caching_spec.rb +4 -3
- data/spec/server/webrick_servlet_spec.rb +5 -4
- data/spec/server_spec.rb +3 -3
- data/spec/spec_helper.rb +94 -21
- data/spec/tags/default_factory_spec.rb +10 -4
- data/spec/tags/default_tag_spec.rb +3 -3
- data/spec/tags/directives_spec.rb +12 -12
- data/spec/tags/library_spec.rb +16 -2
- data/spec/tags/overload_tag_spec.rb +4 -4
- data/spec/tags/ref_tag_list_spec.rb +3 -3
- data/spec/tags/types_explainer_spec.rb +200 -0
- data/spec/templates/class_spec.rb +2 -1
- data/spec/templates/constant_spec.rb +3 -2
- data/spec/templates/engine_spec.rb +4 -3
- data/spec/templates/examples/class001.html +0 -0
- data/spec/templates/examples/class001.txt +0 -0
- data/spec/templates/examples/class002.html +0 -0
- data/spec/templates/examples/constant001.txt +0 -0
- data/spec/templates/examples/constant002.txt +0 -0
- data/spec/templates/examples/constant003.txt +0 -0
- data/spec/templates/examples/method001.html +0 -0
- data/spec/templates/examples/method001.txt +0 -0
- data/spec/templates/examples/method002.html +0 -0
- data/spec/templates/examples/method002.txt +0 -0
- data/spec/templates/examples/method003.html +0 -0
- data/spec/templates/examples/method003.txt +0 -0
- data/spec/templates/examples/method004.html +0 -0
- data/spec/templates/examples/method004.txt +0 -0
- data/spec/templates/examples/method005.html +0 -0
- data/spec/templates/examples/method005.txt +0 -0
- data/spec/templates/examples/method006.html +108 -0
- data/spec/templates/examples/method006.txt +20 -0
- data/spec/templates/examples/module001.dot +0 -0
- data/spec/templates/examples/module001.html +0 -0
- data/spec/templates/examples/module001.txt +0 -0
- data/spec/templates/examples/module002.html +0 -0
- data/spec/templates/examples/module003.html +0 -0
- data/spec/templates/examples/module004.html +0 -0
- data/spec/templates/examples/tag001.txt +0 -0
- data/spec/templates/helpers/base_helper_spec.rb +5 -5
- data/spec/templates/helpers/html_helper_spec.rb +64 -60
- data/spec/templates/helpers/html_syntax_highlight_helper_spec.rb +17 -6
- data/spec/templates/helpers/markup/rdoc_markup_spec.rb +11 -13
- data/spec/templates/helpers/markup_helper_spec.rb +2 -2
- data/spec/templates/helpers/method_helper_spec.rb +3 -3
- data/spec/templates/helpers/module_helper_spec.rb +2 -2
- data/spec/templates/helpers/shared_signature_examples.rb +2 -1
- data/spec/templates/helpers/text_helper_spec.rb +7 -6
- data/spec/templates/method_spec.rb +18 -2
- data/spec/templates/module_spec.rb +4 -3
- data/spec/templates/onefile_spec.rb +8 -6
- data/spec/templates/section_spec.rb +3 -2
- data/spec/templates/spec_helper.rb +5 -2
- data/spec/templates/tag_spec.rb +3 -2
- data/spec/templates/template_spec.rb +15 -14
- data/spec/verifier_spec.rb +3 -3
- data/templates/default/class/dot/setup.rb +2 -1
- data/templates/default/class/dot/superklass.erb +0 -0
- data/templates/default/class/html/constructor_details.erb +0 -0
- data/templates/default/class/html/setup.rb +2 -1
- data/templates/default/class/html/subclasses.erb +0 -0
- data/templates/default/class/setup.rb +6 -6
- data/templates/default/class/text/setup.rb +2 -1
- data/templates/default/class/text/subclasses.erb +0 -0
- data/templates/default/constant/text/header.erb +0 -0
- data/templates/default/constant/text/setup.rb +1 -0
- data/templates/default/docstring/html/abstract.erb +0 -0
- data/templates/default/docstring/html/deprecated.erb +0 -0
- data/templates/default/docstring/html/index.erb +0 -0
- data/templates/default/docstring/html/note.erb +0 -0
- data/templates/default/docstring/html/private.erb +0 -0
- data/templates/default/docstring/html/returns_void.erb +0 -0
- data/templates/default/docstring/html/text.erb +0 -0
- data/templates/default/docstring/html/todo.erb +0 -0
- data/templates/default/docstring/setup.rb +4 -3
- data/templates/default/docstring/text/abstract.erb +0 -0
- data/templates/default/docstring/text/deprecated.erb +0 -0
- data/templates/default/docstring/text/index.erb +0 -0
- data/templates/default/docstring/text/note.erb +0 -0
- data/templates/default/docstring/text/private.erb +0 -0
- data/templates/default/docstring/text/returns_void.erb +0 -0
- data/templates/default/docstring/text/text.erb +0 -0
- data/templates/default/docstring/text/todo.erb +0 -0
- data/templates/default/fulldoc/html/css/common.css +0 -0
- data/templates/default/fulldoc/html/css/full_list.css +0 -0
- data/templates/default/fulldoc/html/css/style.css +31 -20
- data/templates/default/fulldoc/html/frames.erb +0 -0
- data/templates/default/fulldoc/html/full_list.erb +2 -2
- data/templates/default/fulldoc/html/full_list_class.erb +0 -0
- data/templates/default/fulldoc/html/full_list_file.erb +0 -0
- data/templates/default/fulldoc/html/full_list_method.erb +0 -0
- data/templates/default/fulldoc/html/js/app.js +3 -3
- data/templates/default/fulldoc/html/js/full_list.js +0 -0
- data/templates/default/fulldoc/html/js/jquery.js +0 -0
- data/templates/default/fulldoc/html/setup.rb +22 -23
- data/templates/default/layout/dot/header.erb +0 -0
- data/templates/default/layout/dot/setup.rb +1 -0
- data/templates/default/layout/html/breadcrumb.erb +0 -0
- data/templates/default/layout/html/files.erb +0 -0
- data/templates/default/layout/html/footer.erb +0 -0
- data/templates/default/layout/html/headers.erb +2 -2
- data/templates/default/layout/html/index.erb +0 -0
- data/templates/default/layout/html/layout.erb +1 -3
- data/templates/default/layout/html/listing.erb +0 -0
- data/templates/default/layout/html/objects.erb +0 -0
- data/templates/default/layout/html/script_setup.erb +0 -0
- data/templates/default/layout/html/search.erb +0 -0
- data/templates/default/layout/html/setup.rb +21 -19
- data/templates/default/method/html/header.erb +0 -0
- data/templates/default/method/setup.rb +2 -1
- data/templates/default/method/text/header.erb +0 -0
- data/templates/default/method_details/html/header.erb +0 -0
- data/templates/default/method_details/html/method_signature.erb +0 -0
- data/templates/default/method_details/html/source.erb +0 -0
- data/templates/default/method_details/setup.rb +1 -0
- data/templates/default/method_details/text/header.erb +0 -0
- data/templates/default/method_details/text/method_signature.erb +0 -0
- data/templates/default/method_details/text/setup.rb +3 -2
- data/templates/default/module/dot/child.erb +0 -0
- data/templates/default/module/dot/dependencies.erb +0 -0
- data/templates/default/module/dot/header.erb +0 -0
- data/templates/default/module/dot/info.erb +0 -0
- data/templates/default/module/dot/setup.rb +2 -1
- data/templates/default/module/html/attribute_details.erb +0 -0
- data/templates/default/module/html/attribute_summary.erb +0 -0
- data/templates/default/module/html/box_info.erb +0 -0
- data/templates/default/module/html/children.erb +0 -0
- data/templates/default/module/html/constant_summary.erb +0 -0
- data/templates/default/module/html/defines.erb +0 -0
- data/templates/default/module/html/header.erb +0 -0
- data/templates/default/module/html/inherited_attributes.erb +0 -0
- data/templates/default/module/html/inherited_constants.erb +0 -0
- data/templates/default/module/html/inherited_methods.erb +0 -0
- data/templates/default/module/html/item_summary.erb +0 -0
- data/templates/default/module/html/method_details_list.erb +0 -0
- data/templates/default/module/html/method_summary.erb +0 -0
- data/templates/default/module/html/methodmissing.erb +0 -0
- data/templates/default/module/html/pre_docstring.erb +0 -0
- data/templates/default/module/setup.rb +24 -26
- data/templates/default/module/text/children.erb +0 -0
- data/templates/default/module/text/class_meths_list.erb +0 -0
- data/templates/default/module/text/extends.erb +0 -0
- data/templates/default/module/text/header.erb +0 -0
- data/templates/default/module/text/includes.erb +0 -0
- data/templates/default/module/text/instance_meths_list.erb +0 -0
- data/templates/default/module/text/setup.rb +2 -1
- data/templates/default/onefile/html/files.erb +0 -0
- data/templates/default/onefile/html/headers.erb +0 -0
- data/templates/default/onefile/html/layout.erb +3 -3
- data/templates/default/onefile/html/readme.erb +0 -0
- data/templates/default/onefile/html/setup.rb +9 -8
- data/templates/default/root/dot/child.erb +0 -0
- data/templates/default/root/dot/setup.rb +3 -2
- data/templates/default/root/html/setup.rb +2 -1
- data/templates/default/tags/html/example.erb +0 -0
- data/templates/default/tags/html/index.erb +0 -0
- data/templates/default/tags/html/option.erb +1 -1
- data/templates/default/tags/html/overload.erb +0 -0
- data/templates/default/tags/html/see.erb +0 -0
- data/templates/default/tags/html/tag.erb +1 -1
- data/templates/default/tags/setup.rb +7 -5
- data/templates/default/tags/text/example.erb +0 -0
- data/templates/default/tags/text/index.erb +0 -0
- data/templates/default/tags/text/option.erb +1 -1
- data/templates/default/tags/text/overload.erb +0 -0
- data/templates/default/tags/text/see.erb +0 -0
- data/templates/default/tags/text/tag.erb +2 -2
- 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 +0 -0
- data/templates/guide/fulldoc/html/js/app.js +0 -0
- data/templates/guide/fulldoc/html/setup.rb +7 -6
- data/templates/guide/layout/html/layout.erb +0 -0
- data/templates/guide/layout/html/setup.rb +2 -5
- data/templates/guide/method/html/header.erb +0 -0
- data/templates/guide/method/html/setup.rb +5 -4
- data/templates/guide/module/html/header.erb +0 -0
- data/templates/guide/module/html/method_list.erb +0 -0
- data/templates/guide/module/html/setup.rb +2 -1
- data/templates/guide/onefile/html/files.erb +0 -0
- data/templates/guide/onefile/html/setup.rb +1 -0
- data/templates/guide/onefile/html/toc.erb +0 -0
- data/templates/guide/tags/html/setup.rb +1 -0
- data/yard.gemspec +2 -1
- metadata +10 -2
data/lib/yard/core_ext/array.rb
CHANGED
data/lib/yard/core_ext/file.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
require 'fileutils'
|
2
3
|
|
3
4
|
class File
|
@@ -36,7 +37,7 @@ class File
|
|
36
37
|
path = path.split(SEPARATOR)
|
37
38
|
path = path.inject([]) do |acc, comp|
|
38
39
|
next acc if comp == RELATIVE_SAMEDIR
|
39
|
-
if comp == RELATIVE_PARENTDIR && acc.
|
40
|
+
if comp == RELATIVE_PARENTDIR && !acc.empty? && acc.last != RELATIVE_PARENTDIR
|
40
41
|
acc.pop
|
41
42
|
next acc
|
42
43
|
end
|
@@ -60,6 +61,6 @@ class File
|
|
60
61
|
# @return [String] the ascii-8bit encoded data
|
61
62
|
# @since 0.5.3
|
62
63
|
def self.read_binary(file)
|
63
|
-
File.open(file, 'rb'
|
64
|
+
File.open(file, 'rb', &:read)
|
64
65
|
end
|
65
|
-
end
|
66
|
+
end
|
data/lib/yard/core_ext/hash.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
class Hash
|
2
3
|
class << self
|
3
4
|
def create(*args)
|
@@ -9,7 +10,7 @@ class Hash
|
|
9
10
|
create_186(*args)
|
10
11
|
end
|
11
12
|
end
|
12
|
-
alias
|
13
|
-
alias
|
13
|
+
alias create_186 []
|
14
|
+
alias [] create
|
14
15
|
end
|
15
16
|
end if RUBY_VERSION < "1.8.7"
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
# The Insertion class inserts a value before or after another
|
2
3
|
# value in a list.
|
3
4
|
#
|
@@ -10,7 +11,10 @@ class Insertion
|
|
10
11
|
#
|
11
12
|
# @param [Array] list the list to perform the insertion on
|
12
13
|
# @param [Object] value the value to insert
|
13
|
-
def initialize(list, value)
|
14
|
+
def initialize(list, value)
|
15
|
+
@list = list
|
16
|
+
@values = (Array === value ? value : [value])
|
17
|
+
end
|
14
18
|
|
15
19
|
# Inserts the value before +val+
|
16
20
|
# @param [Object] val the object the value will be inserted before
|
@@ -52,9 +56,8 @@ class Insertion
|
|
52
56
|
end
|
53
57
|
end
|
54
58
|
|
55
|
-
|
56
|
-
|
57
|
-
end
|
59
|
+
index = list.index(val)
|
60
|
+
list[index + rel, 0] = @values if index
|
58
61
|
list
|
59
62
|
end
|
60
63
|
end
|
data/lib/yard/core_ext/module.rb
CHANGED
data/lib/yard/core_ext/string.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
class String
|
2
3
|
# Splits text into tokens the way a shell would, handling quoted
|
3
4
|
# text as a single token. Use '\"' and "\'" to escape quotes and
|
@@ -5,16 +6,16 @@ class String
|
|
5
6
|
#
|
6
7
|
# @return [Array] an array representing the tokens
|
7
8
|
def shell_split
|
8
|
-
out = [""]
|
9
|
+
out = [String.new("")]
|
9
10
|
state = :none
|
10
11
|
escape_next = false
|
11
|
-
quote = ""
|
12
|
+
quote = String.new("")
|
12
13
|
strip.split(//).each do |char|
|
13
14
|
case state
|
14
15
|
when :none, :space
|
15
16
|
case char
|
16
17
|
when /\s/
|
17
|
-
out << "" unless state == :space
|
18
|
+
out << String.new("") unless state == :space
|
18
19
|
state = :space
|
19
20
|
escape_next = false
|
20
21
|
when "\\"
|
@@ -30,7 +31,7 @@ class String
|
|
30
31
|
escape_next = false
|
31
32
|
else
|
32
33
|
state = char
|
33
|
-
quote = ""
|
34
|
+
quote = String.new("")
|
34
35
|
end
|
35
36
|
else
|
36
37
|
state = :none
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
# A subclass of Hash where all keys are converted into Symbols, and
|
2
3
|
# optionally, all String values are converted into Symbols.
|
3
4
|
class SymbolHash < Hash
|
@@ -25,11 +26,11 @@ class SymbolHash < Hash
|
|
25
26
|
# @param [Array] list an even list of key followed by value
|
26
27
|
# @return [SymbolHash] a new SymbolHash object
|
27
28
|
def self.[](*hsh)
|
28
|
-
obj = new
|
29
|
+
obj = new
|
29
30
|
if hsh.size == 1 && hsh.first.is_a?(Hash)
|
30
|
-
hsh.first.each {|k,v| obj[k] = v }
|
31
|
+
hsh.first.each {|k, v| obj[k] = v }
|
31
32
|
else
|
32
|
-
0.step(hsh.size, 2) {|n| obj[hsh[n]] = hsh[n+1] }
|
33
|
+
0.step(hsh.size, 2) {|n| obj[hsh[n]] = hsh[n + 1] }
|
33
34
|
end
|
34
35
|
obj
|
35
36
|
end
|
@@ -55,15 +56,16 @@ class SymbolHash < Hash
|
|
55
56
|
# Tests if a symbolized key exists
|
56
57
|
# @param [#to_sym] key the key to test
|
57
58
|
# @return [Boolean] whether the key exists
|
58
|
-
def
|
59
|
+
def key?(key) super(key.to_sym) end
|
60
|
+
alias has_key? key?
|
59
61
|
|
60
62
|
# Updates the object with the contents of another Hash object.
|
61
63
|
# This method modifies the original SymbolHash object
|
62
64
|
#
|
63
65
|
# @param [Hash] hash the hash object to copy the values from
|
64
66
|
# @return [SymbolHash] self
|
65
|
-
def update(hash) hash.each {|k,v| self[k] = v }; self end
|
66
|
-
|
67
|
+
def update(hash) hash.each {|k, v| self[k] = v }; self end
|
68
|
+
alias merge! update
|
67
69
|
|
68
70
|
# Merges the contents of another hash into a new SymbolHash object
|
69
71
|
#
|
data/lib/yard/docstring.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
module YARD
|
2
3
|
# A documentation string, or "docstring" for short, encapsulates the
|
3
4
|
# comments and metadata, or "tags", of an object. Meta-data is expressed
|
@@ -53,7 +54,7 @@ module YARD
|
|
53
54
|
|
54
55
|
# @return [Boolean] whether the docstring was started with "##"
|
55
56
|
attr_reader :hash_flag
|
56
|
-
def hash_flag=(v) @hash_flag = v
|
57
|
+
def hash_flag=(v) @hash_flag = v.nil? ? false : v end
|
57
58
|
|
58
59
|
# Matches a tag at the start of a comment line
|
59
60
|
# @deprecated Use {DocstringParser::META_MATCH}
|
@@ -130,7 +131,8 @@ module YARD
|
|
130
131
|
# @param [String] content the raw comments to be parsed
|
131
132
|
def replace(content, parse = true)
|
132
133
|
content = content.join("\n") if content.is_a?(Array)
|
133
|
-
@tags
|
134
|
+
@tags = []
|
135
|
+
@ref_tags = []
|
134
136
|
if parse
|
135
137
|
super(parse_comments(content))
|
136
138
|
else
|
@@ -152,7 +154,7 @@ module YARD
|
|
152
154
|
resolve_reference
|
153
155
|
obj = super
|
154
156
|
%w(all summary tags ref_tags).each do |name|
|
155
|
-
val = instance_variable_get("@#{name}")
|
157
|
+
val = instance_variable_defined?("@#{name}") && instance_variable_get("@#{name}")
|
156
158
|
obj.instance_variable_set("@#{name}", val ? val.dup : nil)
|
157
159
|
end
|
158
160
|
obj
|
@@ -170,8 +172,8 @@ module YARD
|
|
170
172
|
# @return [String] The first line or paragraph of the docstring; always ends with a period.
|
171
173
|
def summary
|
172
174
|
resolve_reference
|
173
|
-
return @summary if @summary
|
174
|
-
stripped =
|
175
|
+
return @summary if defined?(@summary) && @summary
|
176
|
+
stripped = gsub(/[\r\n](?![\r\n])/, ' ').strip
|
175
177
|
num_parens = 0
|
176
178
|
idx = length.times do |index|
|
177
179
|
case stripped[index, 1]
|
@@ -181,11 +183,7 @@ module YARD
|
|
181
183
|
when "\r", "\n"
|
182
184
|
next_char = stripped[index + 1, 1].to_s
|
183
185
|
if next_char =~ /^\s*$/
|
184
|
-
|
185
|
-
break index - 2
|
186
|
-
else
|
187
|
-
break index - 1
|
188
|
-
end
|
186
|
+
break stripped[index - 1, 1] == '.' ? index - 2 : index - 1
|
189
187
|
end
|
190
188
|
when "{", "(", "["
|
191
189
|
num_parens += 1
|
@@ -207,7 +205,7 @@ module YARD
|
|
207
205
|
# @since 0.7.0
|
208
206
|
# @todo Add Tags::Tag#to_raw and refactor
|
209
207
|
def to_raw
|
210
|
-
tag_data = tags.sort_by
|
208
|
+
tag_data = tags.sort_by(&:tag_name).map do |tag|
|
211
209
|
case tag
|
212
210
|
when Tags::OverloadTag
|
213
211
|
tag_text = "@#{tag.tag_name} #{tag.signature}\n"
|
@@ -230,7 +228,7 @@ module YARD
|
|
230
228
|
end
|
231
229
|
tag_text
|
232
230
|
end
|
233
|
-
[strip, tag_data.join("\n")].reject
|
231
|
+
[strip, tag_data.join("\n")].reject(&:empty?).compact.join("\n")
|
234
232
|
end
|
235
233
|
|
236
234
|
# @group Creating and Accessing Meta-data
|
@@ -329,10 +327,11 @@ module YARD
|
|
329
327
|
# @return [void]
|
330
328
|
def resolve_reference
|
331
329
|
loop do
|
332
|
-
return if @unresolved_reference.nil?
|
330
|
+
return if defined?(@unresolved_reference).nil? || @unresolved_reference.nil?
|
333
331
|
return if CodeObjects::Proxy === @unresolved_reference
|
334
332
|
|
335
|
-
reference
|
333
|
+
reference = @unresolved_reference
|
334
|
+
@unresolved_reference = nil
|
336
335
|
self.all = [reference.docstring.all, @all].join("\n")
|
337
336
|
end
|
338
337
|
end
|
@@ -344,7 +343,19 @@ module YARD
|
|
344
343
|
# @return [Array<Tags::RefTag>] the list of valid reference tags
|
345
344
|
def convert_ref_tags
|
346
345
|
list = @ref_tags.reject {|t| CodeObjects::Proxy === t.owner }
|
347
|
-
|
346
|
+
|
347
|
+
@ref_tag_recurse_count ||= 0
|
348
|
+
@ref_tag_recurse_count += 1
|
349
|
+
if @ref_tag_recurse_count > 2
|
350
|
+
log.error "#{@object.file}:#{@object.line}: Detected circular reference tag in " \
|
351
|
+
"`#{@object}', ignoring all reference tags for this object " \
|
352
|
+
"(#{@ref_tags.map {|t| "@#{t.tag_name}" }.join(", ")})."
|
353
|
+
@ref_tags = []
|
354
|
+
return @ref_tags
|
355
|
+
end
|
356
|
+
list = list.map(&:tags).flatten
|
357
|
+
@ref_tag_recurse_count -= 1
|
358
|
+
list
|
348
359
|
end
|
349
360
|
|
350
361
|
# Parses out comments split by newlines into a new code object
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
require 'ostruct'
|
2
3
|
|
3
4
|
module YARD
|
@@ -129,15 +130,17 @@ module YARD
|
|
129
130
|
def parse_content(content)
|
130
131
|
content = content.split(/\r?\n/) if content.is_a?(String)
|
131
132
|
return '' if !content || content.empty?
|
132
|
-
docstring = ""
|
133
|
+
docstring = String.new("")
|
133
134
|
|
134
|
-
indent
|
135
|
+
indent = content.first[/^\s*/].length
|
136
|
+
last_indent = 0
|
135
137
|
orig_indent = 0
|
136
138
|
directive = false
|
137
139
|
last_line = ""
|
138
|
-
tag_name
|
140
|
+
tag_name = nil
|
141
|
+
tag_buf = []
|
139
142
|
|
140
|
-
(content+['']).each_with_index do |line, index|
|
143
|
+
(content + ['']).each_with_index do |line, index|
|
141
144
|
indent = line[/^\s*/].length
|
142
145
|
empty = (line =~ /^\s*$/ ? true : false)
|
143
146
|
done = content.size == index
|
@@ -153,13 +156,17 @@ module YARD
|
|
153
156
|
else
|
154
157
|
create_tag(tag_name, buf)
|
155
158
|
end
|
156
|
-
tag_name
|
159
|
+
tag_name = nil
|
160
|
+
tag_buf = []
|
161
|
+
directive = false
|
157
162
|
orig_indent = 0
|
158
163
|
end
|
159
164
|
|
160
165
|
# Found a meta tag
|
161
166
|
if line =~ META_MATCH
|
162
|
-
directive
|
167
|
+
directive = $1
|
168
|
+
tag_name = $2
|
169
|
+
tag_buf = [($3 || '')]
|
163
170
|
elsif tag_name && indent >= orig_indent && !empty
|
164
171
|
orig_indent = indent if orig_indent == 0
|
165
172
|
# Extra data added to the tag on the next line
|
@@ -169,7 +176,8 @@ module YARD
|
|
169
176
|
tag_buf << line.gsub(/^[ \t]{#{orig_indent}}/, '')
|
170
177
|
elsif !tag_name
|
171
178
|
# Regular docstring text
|
172
|
-
docstring << line
|
179
|
+
docstring << line
|
180
|
+
docstring << "\n"
|
173
181
|
end
|
174
182
|
|
175
183
|
last_indent = indent
|
@@ -208,11 +216,11 @@ module YARD
|
|
208
216
|
@tags += [library.tag_create(tag_name, tag_buf)].flatten
|
209
217
|
else
|
210
218
|
log.warn "Unknown tag @#{tag_name}" +
|
211
|
-
|
219
|
+
(object ? " in file `#{object.file}` near line #{object.line}" : "")
|
212
220
|
end
|
213
221
|
rescue Tags::TagFormatError
|
214
222
|
log.warn "Invalid tag format for @#{tag_name}" +
|
215
|
-
|
223
|
+
(object ? " in file `#{object.file}` near line #{object.line}" : "")
|
216
224
|
end
|
217
225
|
|
218
226
|
# Creates a {Tags::RefTag}
|
@@ -231,12 +239,12 @@ module YARD
|
|
231
239
|
end
|
232
240
|
else
|
233
241
|
log.warn "Unknown directive @!#{tag_name}" +
|
234
|
-
|
242
|
+
(object ? " in file `#{object.file}` near line #{object.line}" : "")
|
235
243
|
nil
|
236
244
|
end
|
237
245
|
rescue Tags::TagFormatError
|
238
246
|
log.warn "Invalid directive format for @!#{tag_name}" +
|
239
|
-
|
247
|
+
(object ? " in file `#{object.file}` near line #{object.line}" : "")
|
240
248
|
nil
|
241
249
|
end
|
242
250
|
|
@@ -247,44 +255,6 @@ module YARD
|
|
247
255
|
list.include?(tag_name)
|
248
256
|
end
|
249
257
|
|
250
|
-
private
|
251
|
-
|
252
|
-
def namespace
|
253
|
-
if object
|
254
|
-
object.namespace
|
255
|
-
else
|
256
|
-
nil
|
257
|
-
end
|
258
|
-
end
|
259
|
-
|
260
|
-
def detect_reference(content)
|
261
|
-
if content =~ /\A\s*\(see (\S+)\s*\)(?:\s|$)/
|
262
|
-
path, extra = $1, $'
|
263
|
-
[CodeObjects::Proxy.new(namespace, path), extra]
|
264
|
-
else
|
265
|
-
[nil, content]
|
266
|
-
end
|
267
|
-
end
|
268
|
-
|
269
|
-
# @!group Parser Callback Methods
|
270
|
-
|
271
|
-
# Calls the {Tags::Directive#after_parse} callback on all the
|
272
|
-
# created directives.
|
273
|
-
def call_directives_after_parse
|
274
|
-
directives.each do |dir|
|
275
|
-
dir.after_parse
|
276
|
-
end
|
277
|
-
end
|
278
|
-
|
279
|
-
# Calls all {after_parse} callbacks
|
280
|
-
def call_after_parse_callbacks
|
281
|
-
self.class.after_parse_callbacks.each do |cb|
|
282
|
-
cb.call(self)
|
283
|
-
end
|
284
|
-
end
|
285
|
-
|
286
|
-
public
|
287
|
-
|
288
258
|
# Creates a callback that is called after a docstring is successfully
|
289
259
|
# parsed. Use this method to perform sanity checks on a docstring's
|
290
260
|
# tag data, or add any extra tags automatically to a docstring.
|
@@ -295,7 +265,7 @@ module YARD
|
|
295
265
|
# @yieldreturn [void]
|
296
266
|
# @return [void]
|
297
267
|
def self.after_parse(&block)
|
298
|
-
|
268
|
+
after_parse_callbacks << block
|
299
269
|
end
|
300
270
|
|
301
271
|
# @return [Array<Proc>] the {after_parse} callback proc objects
|
@@ -310,35 +280,65 @@ module YARD
|
|
310
280
|
next if parser.object.is_alias?
|
311
281
|
names = parser.object.parameters.map {|l| l.first.gsub(/\W/, '') }
|
312
282
|
seen_names = []
|
313
|
-
infile_info = "\n in file `#{parser.object.file}' "
|
283
|
+
infile_info = "\n in file `#{parser.object.file}' " \
|
314
284
|
"near line #{parser.object.line}"
|
315
285
|
parser.tags.each do |tag|
|
316
286
|
next if tag.is_a?(Tags::RefTagList) # we don't handle this yet
|
317
287
|
next unless tag.tag_name == "param"
|
318
288
|
if seen_names.include?(tag.name)
|
319
|
-
log.warn "@param tag has duplicate parameter name: "
|
320
|
-
|
289
|
+
log.warn "@param tag has duplicate parameter name: " \
|
290
|
+
"#{tag.name} #{infile_info}"
|
321
291
|
elsif names.include?(tag.name)
|
322
292
|
seen_names << tag.name
|
323
293
|
else
|
324
|
-
log.warn "@param tag has unknown parameter name: "
|
325
|
-
|
294
|
+
log.warn "@param tag has unknown parameter name: " \
|
295
|
+
"#{tag.name} #{infile_info}"
|
326
296
|
end
|
327
297
|
end
|
328
298
|
end
|
329
299
|
|
300
|
+
private
|
301
|
+
|
302
|
+
def namespace
|
303
|
+
object && object.namespace
|
304
|
+
end
|
305
|
+
|
306
|
+
def detect_reference(content)
|
307
|
+
if content =~ /\A\s*\(see (\S+)\s*\)(?:\s|$)/
|
308
|
+
path = $1
|
309
|
+
extra = $'
|
310
|
+
[CodeObjects::Proxy.new(namespace, path), extra]
|
311
|
+
else
|
312
|
+
[nil, content]
|
313
|
+
end
|
314
|
+
end
|
315
|
+
|
316
|
+
# @!group Parser Callback Methods
|
317
|
+
|
318
|
+
# Calls the {Tags::Directive#after_parse} callback on all the
|
319
|
+
# created directives.
|
320
|
+
def call_directives_after_parse
|
321
|
+
directives.each(&:after_parse)
|
322
|
+
end
|
323
|
+
|
324
|
+
# Calls all {after_parse} callbacks
|
325
|
+
def call_after_parse_callbacks
|
326
|
+
self.class.after_parse_callbacks.each do |cb|
|
327
|
+
cb.call(self)
|
328
|
+
end
|
329
|
+
end
|
330
|
+
|
330
331
|
# Define a callback to check that @see tags do not use {}.
|
331
332
|
after_parse do |parser|
|
332
333
|
next unless parser.object
|
333
334
|
|
334
335
|
parser.tags.each_with_index do |tag, i|
|
335
336
|
next unless tag.tag_name == "see"
|
336
|
-
|
337
|
-
|
338
|
-
|
339
|
-
|
340
|
-
|
341
|
-
end
|
337
|
+
next unless "#{tag.name}#{tag.text}" =~ /\A\{.*\}\Z/
|
338
|
+
infile_info = "\n in file `#{parser.object.file}' " \
|
339
|
+
"near line #{parser.object.line}"
|
340
|
+
log.warn "@see tag (##{i + 1}) should not be wrapped in {} " \
|
341
|
+
"(causes rendering issues): #{infile_info}"
|
342
342
|
end
|
343
343
|
end
|
344
344
|
end
|