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/tags/tag.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
module YARD
|
2
3
|
module Tags
|
3
4
|
# Represents a metadata tag value (+@tag+). Tags can have any combination of
|
@@ -41,7 +42,10 @@ module YARD
|
|
41
42
|
# for the tag
|
42
43
|
# @param [String] name optional key name which the tag refers to
|
43
44
|
def initialize(tag_name, text, types = nil, name = nil)
|
44
|
-
@tag_name
|
45
|
+
@tag_name = tag_name.to_s
|
46
|
+
@text = text
|
47
|
+
@name = name
|
48
|
+
@types = (types ? [types].flatten.compact : nil)
|
45
49
|
end
|
46
50
|
|
47
51
|
# Convenience method to access the first type specified. This should mainly
|
@@ -52,6 +56,16 @@ module YARD
|
|
52
56
|
def type
|
53
57
|
types.first
|
54
58
|
end
|
59
|
+
|
60
|
+
# Provides a plain English summary of the type specification, or nil
|
61
|
+
# if no types are provided or parseable.
|
62
|
+
#
|
63
|
+
# @return [String] a plain English description of the associated types
|
64
|
+
# @return [nil] if no types are provided or not parseable
|
65
|
+
def explain_types
|
66
|
+
return nil if !types || types.empty?
|
67
|
+
TypesExplainer.explain(*types)
|
68
|
+
end
|
55
69
|
end
|
56
70
|
end
|
57
|
-
end
|
71
|
+
end
|
@@ -0,0 +1,160 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
require 'strscan'
|
3
|
+
|
4
|
+
module YARD
|
5
|
+
module Tags
|
6
|
+
class TypesExplainer
|
7
|
+
# (see Tag#explain_types)
|
8
|
+
# @param types [Array<String>] a list of types to parse and summarize
|
9
|
+
def self.explain(*types)
|
10
|
+
explain!(*types)
|
11
|
+
rescue SyntaxError
|
12
|
+
nil
|
13
|
+
end
|
14
|
+
|
15
|
+
# (see explain)
|
16
|
+
# @raise [SyntaxError] if the types are not parseable
|
17
|
+
def self.explain!(*types)
|
18
|
+
Parser.parse(types.join(", ")).join("; ")
|
19
|
+
end
|
20
|
+
|
21
|
+
class << self
|
22
|
+
private :new
|
23
|
+
end
|
24
|
+
|
25
|
+
# @private
|
26
|
+
class Type
|
27
|
+
attr_accessor :name
|
28
|
+
|
29
|
+
def initialize(name)
|
30
|
+
@name = name
|
31
|
+
end
|
32
|
+
|
33
|
+
def to_s(singular = true)
|
34
|
+
if name[0, 1] == "#"
|
35
|
+
singular ? "an object that responds to #{name}" : "objects that respond to #{name}"
|
36
|
+
elsif name[0, 1] =~ /[A-Z]/
|
37
|
+
singular ? "a#{name[0, 1] =~ /[aeiou]/i ? 'n' : ''} " + name : "#{name}#{name[-1, 1] =~ /[A-Z]/ ? "'" : ''}s"
|
38
|
+
else
|
39
|
+
name
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
private
|
44
|
+
|
45
|
+
def list_join(list)
|
46
|
+
index = 0
|
47
|
+
list.inject(String.new) do |acc, el|
|
48
|
+
acc << el.to_s
|
49
|
+
acc << ", " if index < list.size - 2
|
50
|
+
acc << " or " if index == list.size - 2
|
51
|
+
index += 1
|
52
|
+
acc
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
# @private
|
58
|
+
class CollectionType < Type
|
59
|
+
attr_accessor :types
|
60
|
+
|
61
|
+
def initialize(name, types)
|
62
|
+
@name = name
|
63
|
+
@types = types
|
64
|
+
end
|
65
|
+
|
66
|
+
def to_s(_singular = true)
|
67
|
+
"a#{name[0, 1] =~ /[aeiou]/i ? 'n' : ''} #{name} of (" + list_join(types.map {|t| t.to_s(false) }) + ")"
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
# @private
|
72
|
+
class FixedCollectionType < CollectionType
|
73
|
+
def to_s(_singular = true)
|
74
|
+
"a#{name[0, 1] =~ /[aeiou]/i ? 'n' : ''} #{name} containing (" + types.map(&:to_s).join(" followed by ") + ")"
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
# @private
|
79
|
+
class HashCollectionType < Type
|
80
|
+
attr_accessor :key_types, :value_types
|
81
|
+
|
82
|
+
def initialize(name, key_types, value_types)
|
83
|
+
@name = name
|
84
|
+
@key_types = key_types
|
85
|
+
@value_types = value_types
|
86
|
+
end
|
87
|
+
|
88
|
+
def to_s(_singular = true)
|
89
|
+
"a#{name[0, 1] =~ /[aeiou]/i ? 'n' : ''} #{name} with keys made of (" +
|
90
|
+
list_join(key_types.map {|t| t.to_s(false) }) +
|
91
|
+
") and values of (" + list_join(value_types.map {|t| t.to_s(false) }) + ")"
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
95
|
+
# @private
|
96
|
+
class Parser
|
97
|
+
TOKENS = {
|
98
|
+
:collection_start => /</,
|
99
|
+
:collection_end => />/,
|
100
|
+
:fixed_collection_start => /\(/,
|
101
|
+
:fixed_collection_end => /\)/,
|
102
|
+
:type_name => /#\w+|((::)?\w+)+/,
|
103
|
+
:type_next => /[,;]/,
|
104
|
+
:whitespace => /\s+/,
|
105
|
+
:hash_collection_start => /\{/,
|
106
|
+
:hash_collection_next => /=>/,
|
107
|
+
:hash_collection_end => /\}/,
|
108
|
+
:parse_end => nil
|
109
|
+
}
|
110
|
+
|
111
|
+
def self.parse(string)
|
112
|
+
new(string).parse
|
113
|
+
end
|
114
|
+
|
115
|
+
def initialize(string)
|
116
|
+
@scanner = StringScanner.new(string)
|
117
|
+
end
|
118
|
+
|
119
|
+
def parse
|
120
|
+
types = []
|
121
|
+
type = nil
|
122
|
+
name = nil
|
123
|
+
loop do
|
124
|
+
found = false
|
125
|
+
TOKENS.each do |token_type, match|
|
126
|
+
# TODO: cleanup this code.
|
127
|
+
# rubocop:disable Lint/AssignmentInCondition
|
128
|
+
next unless (match.nil? && @scanner.eos?) || (match && token = @scanner.scan(match))
|
129
|
+
found = true
|
130
|
+
case token_type
|
131
|
+
when :type_name
|
132
|
+
raise SyntaxError, "expecting END, got name '#{token}'" if name
|
133
|
+
name = token
|
134
|
+
when :type_next
|
135
|
+
raise SyntaxError, "expecting name, got '#{token}' at #{@scanner.pos}" if name.nil?
|
136
|
+
type = Type.new(name) unless type
|
137
|
+
types << type
|
138
|
+
type = nil
|
139
|
+
name = nil
|
140
|
+
when :fixed_collection_start, :collection_start
|
141
|
+
name ||= "Array"
|
142
|
+
klass = token_type == :collection_start ? CollectionType : FixedCollectionType
|
143
|
+
type = klass.new(name, parse)
|
144
|
+
when :hash_collection_start
|
145
|
+
name ||= "Hash"
|
146
|
+
type = HashCollectionType.new(name, parse, parse)
|
147
|
+
when :hash_collection_next, :hash_collection_end, :fixed_collection_end, :collection_end, :parse_end
|
148
|
+
raise SyntaxError, "expecting name, got '#{token}'" if name.nil?
|
149
|
+
type = Type.new(name) unless type
|
150
|
+
types << type
|
151
|
+
return types
|
152
|
+
end
|
153
|
+
end
|
154
|
+
raise SyntaxError, "invalid character at #{@scanner.peek(1)}" unless found
|
155
|
+
end
|
156
|
+
end
|
157
|
+
end
|
158
|
+
end
|
159
|
+
end
|
160
|
+
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
require 'ostruct'
|
2
3
|
|
3
4
|
module YARD
|
@@ -53,7 +54,7 @@ module YARD
|
|
53
54
|
full_paths ||= [path]
|
54
55
|
full_paths = [full_paths] unless full_paths.is_a?(Array)
|
55
56
|
name = template_module_name(full_paths.first)
|
56
|
-
begin; return const_get(name); rescue NameError; end
|
57
|
+
begin; return const_get(name); rescue NameError; nil end
|
57
58
|
|
58
59
|
mod = const_set(name, Module.new)
|
59
60
|
mod.send(:include, Template)
|
@@ -111,7 +112,7 @@ module YARD
|
|
111
112
|
# @yield a block whose result will be serialize
|
112
113
|
# @yieldreturn [String] the contents to serialize
|
113
114
|
# @see Serializers::Base
|
114
|
-
def with_serializer(object, serializer
|
115
|
+
def with_serializer(object, serializer)
|
115
116
|
output = nil
|
116
117
|
filename = serializer.serialized_path(object)
|
117
118
|
if serializer.respond_to?(:basepath)
|
@@ -1,8 +1,9 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
module YARD
|
2
3
|
module Templates
|
3
4
|
# @since 0.5.4
|
4
5
|
module ErbCache
|
5
|
-
def self.method_for(filename
|
6
|
+
def self.method_for(filename)
|
6
7
|
@methods ||= {}
|
7
8
|
return @methods[filename] if @methods[filename]
|
8
9
|
@methods[filename] = name = "_erb_cache_#{@methods.size}"
|
@@ -14,7 +15,7 @@ module YARD
|
|
14
15
|
end
|
15
16
|
|
16
17
|
def self.clear!
|
17
|
-
return unless @methods
|
18
|
+
return unless defined?(@methods) && @methods
|
18
19
|
@methods.clear
|
19
20
|
end
|
20
21
|
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
module YARD::Templates::Helpers
|
2
3
|
# The base helper module included in all templates.
|
3
4
|
module BaseHelper
|
@@ -7,7 +8,7 @@ module YARD::Templates::Helpers
|
|
7
8
|
# page. Might not be the current {#object} when inside sub-templates.
|
8
9
|
attr_reader :owner
|
9
10
|
undef owner
|
10
|
-
def owner; @owner || object.namespace end
|
11
|
+
def owner; (defined?(@owner) && @owner) || object.namespace end
|
11
12
|
|
12
13
|
# @group Managing Global Template State
|
13
14
|
|
@@ -55,7 +56,7 @@ module YARD::Templates::Helpers
|
|
55
56
|
if args.first.is_a?(String)
|
56
57
|
case args.first
|
57
58
|
when %r{://}, /^mailto:/
|
58
|
-
link_url(args[0], args[1], {:target => '_parent'}.merge(args[2]||{}))
|
59
|
+
link_url(args[0], args[1], {:target => '_parent'}.merge(args[2] || {}))
|
59
60
|
when /^include:file:(\S+)/
|
60
61
|
file = $1
|
61
62
|
relpath = File.relative_path(Dir.pwd, File.expand_path(file))
|
@@ -70,7 +71,8 @@ module YARD::Templates::Helpers
|
|
70
71
|
end
|
71
72
|
when /^include:(\S+)/
|
72
73
|
path = $1
|
73
|
-
|
74
|
+
obj = YARD::Registry.resolve(object.namespace, path)
|
75
|
+
if obj
|
74
76
|
link_include_object(obj)
|
75
77
|
else
|
76
78
|
log.warn "Cannot find object at `#{path}' for inclusion"
|
@@ -78,7 +80,8 @@ module YARD::Templates::Helpers
|
|
78
80
|
end
|
79
81
|
when /^render:(\S+)/
|
80
82
|
path = $1
|
81
|
-
|
83
|
+
obj = YARD::Registry.resolve(object, path)
|
84
|
+
if obj
|
82
85
|
opts = options.dup
|
83
86
|
opts.delete(:serializer)
|
84
87
|
obj.format(opts)
|
@@ -135,7 +138,7 @@ module YARD::Templates::Helpers
|
|
135
138
|
# @param [String] title the optional title to display the link as
|
136
139
|
# @param [Hash] params optional parameters for the link
|
137
140
|
# @return [String] the linked URL
|
138
|
-
def link_url(url, title = nil, params = nil)
|
141
|
+
def link_url(url, title = nil, params = nil) # rubocop:disable Lint/UnusedMethodArgument
|
139
142
|
url
|
140
143
|
end
|
141
144
|
|
@@ -146,7 +149,7 @@ module YARD::Templates::Helpers
|
|
146
149
|
# @param [String] anchor optional anchor
|
147
150
|
# @return [String] the link to the file
|
148
151
|
# @since 0.5.5
|
149
|
-
def link_file(filename, title = nil, anchor = nil)
|
152
|
+
def link_file(filename, title = nil, anchor = nil) # rubocop:disable Lint/UnusedMethodArgument
|
150
153
|
return filename.filename if CodeObjects::ExtraFileObject === filename
|
151
154
|
filename
|
152
155
|
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
require 'cgi'
|
2
3
|
|
3
4
|
module YARD
|
@@ -7,6 +8,9 @@ module YARD
|
|
7
8
|
include MarkupHelper
|
8
9
|
include HtmlSyntaxHighlightHelper
|
9
10
|
|
11
|
+
# @private
|
12
|
+
URLMATCH = /[^\w\s~!\*'\(\):;@&=\$,\[\]<>-]/
|
13
|
+
|
10
14
|
# @group Escaping Template Data
|
11
15
|
|
12
16
|
# Escapes HTML entities
|
@@ -22,9 +26,23 @@ module YARD
|
|
22
26
|
# @param [String] text the URL
|
23
27
|
# @return [String] the escaped URL
|
24
28
|
def urlencode(text)
|
25
|
-
|
29
|
+
text = text.dup
|
30
|
+
enc = nil
|
31
|
+
if text.respond_to?(:force_encoding)
|
32
|
+
enc = text.encoding
|
33
|
+
text = text.force_encoding('binary')
|
34
|
+
end
|
35
|
+
|
36
|
+
text = text.gsub(/%[a-z0-9]{2}|#{URLMATCH}/i) do
|
37
|
+
$&.size > 1 ? $& : "%" + $&.ord.to_s(16).upcase
|
38
|
+
end.tr(' ', '+')
|
39
|
+
|
40
|
+
text = text.force_encoding(enc) if enc
|
41
|
+
text
|
26
42
|
end
|
27
43
|
|
44
|
+
module_function :urlencode
|
45
|
+
|
28
46
|
# @group Converting Markup to HTML
|
29
47
|
|
30
48
|
# Turns text into HTML using +markup+ style formatting.
|
@@ -38,7 +56,7 @@ module YARD
|
|
38
56
|
return text unless respond_to?(markup_meth)
|
39
57
|
return "" unless text
|
40
58
|
return text unless markup
|
41
|
-
html = send(markup_meth, text)
|
59
|
+
html = send(markup_meth, text).dup
|
42
60
|
if html.respond_to?(:encode)
|
43
61
|
html = html.force_encoding(text.encoding) # for libs that mess with encoding
|
44
62
|
html = html.encode(:invalid => :replace, :replace => '?')
|
@@ -188,8 +206,13 @@ module YARD
|
|
188
206
|
# @return [String] HTML with linkified references
|
189
207
|
def resolve_links(text)
|
190
208
|
code_tags = 0
|
191
|
-
text.gsub(
|
192
|
-
closed
|
209
|
+
text.gsub(%r{<(/)?(pre|code|tt)|(\\|!)?\{(?!\})(\S+?)(?:\s([^\}]*?\S))?\}(?=[\W<]|.+</|$)}m) do |str|
|
210
|
+
closed = $1
|
211
|
+
tag = $2
|
212
|
+
escape = $3
|
213
|
+
name = $4
|
214
|
+
title = $5
|
215
|
+
match = $&
|
193
216
|
if tag
|
194
217
|
code_tags += (closed ? -1 : 1)
|
195
218
|
next str
|
@@ -198,10 +221,11 @@ module YARD
|
|
198
221
|
|
199
222
|
next(match[1..-1]) if escape
|
200
223
|
|
201
|
-
next(match) if name[0,1] == '|'
|
224
|
+
next(match) if name[0, 1] == '|'
|
202
225
|
|
203
|
-
if name == '<a' && title =~
|
204
|
-
name
|
226
|
+
if name == '<a' && title =~ %r{href=["'](.+?)["'].*>.*</a>\s*(.*)\Z}
|
227
|
+
name = $1
|
228
|
+
title = $2
|
205
229
|
title = nil if title.empty?
|
206
230
|
end
|
207
231
|
|
@@ -211,12 +235,12 @@ module YARD
|
|
211
235
|
object
|
212
236
|
else
|
213
237
|
link = linkify(name, title)
|
214
|
-
if (link == name || link == title) && (name+' '+link !~ /\A<a\s.*>/)
|
238
|
+
if (link == name || link == title) && (name + ' ' + link !~ /\A<a\s.*>/)
|
215
239
|
match = /(.+)?(\{#{Regexp.quote name}(?:\s.*?)?\})(.+)?/.match(text)
|
216
|
-
file = (@file ? @file.filename : object.file) || '(unknown)'
|
217
|
-
line = (@file ? 1 : (object.docstring.line_range ? object.docstring.line_range.first : 1)) + (match ? $`.count("\n") : 0)
|
218
|
-
log.warn "In file `#{file}':#{line}: Cannot resolve link to #{name} from text" + (match ? ":" : ".")
|
219
|
-
|
240
|
+
file = (defined?(@file) && @file ? @file.filename : object.file) || '(unknown)'
|
241
|
+
line = (defined?(@file) && @file ? 1 : (object.docstring.line_range ? object.docstring.line_range.first : 1)) + (match ? $`.count("\n") : 0)
|
242
|
+
log.warn "In file `#{file}':#{line}: Cannot resolve link to #{name} from text" + (match ? ":" : ".") +
|
243
|
+
"\n\t" + (match[1] ? '...' : '') + match[2].delete("\n") + (match[3] ? '...' : '') if match
|
220
244
|
end
|
221
245
|
|
222
246
|
link
|
@@ -252,7 +276,7 @@ module YARD
|
|
252
276
|
|
253
277
|
# Inserts an include link while respecting inlining
|
254
278
|
def insert_include(text, markup = options.markup)
|
255
|
-
htmlify(text, markup).gsub(
|
279
|
+
htmlify(text, markup).gsub(%r{\A\s*<p>|</p>\s*\Z}, '')
|
256
280
|
end
|
257
281
|
|
258
282
|
# (see BaseHelper#link_object)
|
@@ -286,12 +310,12 @@ module YARD
|
|
286
310
|
# (see BaseHelper#link_url)
|
287
311
|
def link_url(url, title = nil, params = {})
|
288
312
|
title ||= url
|
289
|
-
title.gsub
|
313
|
+
title = title.gsub(/[\r\n]/, ' ')
|
290
314
|
params = SymbolHash.new(false).update(
|
291
315
|
:href => url,
|
292
|
-
:title
|
316
|
+
:title => h(title)
|
293
317
|
).update(params)
|
294
|
-
params[:target] ||= '_parent' if url =~
|
318
|
+
params[:target] ||= '_parent' if url =~ %r{^(\w+)://}
|
295
319
|
"<a #{tag_attrs(params)}>#{title}</a>".gsub(/[\r\n]/, ' ')
|
296
320
|
end
|
297
321
|
|
@@ -327,7 +351,8 @@ module YARD
|
|
327
351
|
|
328
352
|
if obj.is_a?(CodeObjects::Base) && !obj.is_a?(CodeObjects::NamespaceObject)
|
329
353
|
# If the obj is not a namespace obj make it the anchor.
|
330
|
-
anchor
|
354
|
+
anchor = obj
|
355
|
+
obj = obj.namespace
|
331
356
|
end
|
332
357
|
|
333
358
|
objpath = serializer.serialized_path(obj)
|
@@ -337,7 +362,7 @@ module YARD
|
|
337
362
|
if relative
|
338
363
|
fromobj = object
|
339
364
|
if object.is_a?(CodeObjects::Base) &&
|
340
|
-
|
365
|
+
!object.is_a?(CodeObjects::NamespaceObject)
|
341
366
|
fromobj = owner
|
342
367
|
end
|
343
368
|
|
@@ -350,6 +375,9 @@ module YARD
|
|
350
375
|
link + (anchor ? '#' + urlencode(anchor_for(anchor)) : '')
|
351
376
|
end
|
352
377
|
|
378
|
+
alias mtime_url url_for
|
379
|
+
def mtime(_file) nil end
|
380
|
+
|
353
381
|
# Returns the URL for a specific file
|
354
382
|
#
|
355
383
|
# @param [String, CodeObjects::ExtraFileObject] filename the filename to link to
|
@@ -362,11 +390,8 @@ module YARD
|
|
362
390
|
fromobj = fromobj.namespace
|
363
391
|
end
|
364
392
|
from = serializer.serialized_path(fromobj)
|
365
|
-
|
366
|
-
|
367
|
-
else
|
368
|
-
path = serializer.serialized_path(filename)
|
369
|
-
end
|
393
|
+
path = filename == options.readme ?
|
394
|
+
'index.html' : serializer.serialized_path(filename)
|
370
395
|
link = File.relative_path(from, path)
|
371
396
|
link += (anchor ? '#' + urlencode(anchor) : '')
|
372
397
|
link
|
@@ -492,7 +517,8 @@ module YARD
|
|
492
517
|
extras = []
|
493
518
|
extras_text = ''
|
494
519
|
if show_extras
|
495
|
-
|
520
|
+
rw = meth.attr_info
|
521
|
+
if rw
|
496
522
|
attname = [rw[:read] ? 'read' : nil, rw[:write] ? 'write' : nil].compact
|
497
523
|
attname = attname.size == 1 ? attname.join('') + 'only' : nil
|
498
524
|
extras << attname if attname
|
@@ -526,16 +552,18 @@ module YARD
|
|
526
552
|
# @since 0.5.4
|
527
553
|
def charset
|
528
554
|
has_encoding = defined?(::Encoding)
|
529
|
-
if @file && has_encoding
|
555
|
+
if defined?(@file) && @file && has_encoding
|
530
556
|
lang = @file.contents.encoding.to_s
|
531
557
|
else
|
532
|
-
return 'utf-8' unless has_encoding ||
|
533
|
-
|
534
|
-
|
535
|
-
|
536
|
-
|
537
|
-
|
558
|
+
return 'utf-8' unless has_encoding || ENV['LANG']
|
559
|
+
lang =
|
560
|
+
if has_encoding
|
561
|
+
::Encoding.default_external.name.downcase
|
562
|
+
else
|
563
|
+
ENV['LANG'].downcase.split('.').last
|
564
|
+
end
|
538
565
|
end
|
566
|
+
|
539
567
|
case lang
|
540
568
|
when "ascii-8bit", "us-ascii", "ascii-7bit"; 'iso-8859-1'
|
541
569
|
when "utf8"; 'utf-8'
|
@@ -552,7 +580,7 @@ module YARD
|
|
552
580
|
# @param [Hash{String => String}] opts the tag options
|
553
581
|
# @return [String] the tag attributes of an HTML tag
|
554
582
|
def tag_attrs(opts = {})
|
555
|
-
opts.sort_by {|k,
|
583
|
+
opts.sort_by {|k, _v| k.to_s }.map {|k, v| "#{k}=#{v.to_s.inspect}" if v }.join(" ")
|
556
584
|
end
|
557
585
|
|
558
586
|
# Converts a {CodeObjects::MethodObject} into an overload object
|
@@ -575,7 +603,8 @@ module YARD
|
|
575
603
|
def parse_lang_for_codeblock(source)
|
576
604
|
type = nil
|
577
605
|
if source =~ /\A(?:[ \t]*\r?\n)?[ \t]*!!!([\w.+-]+)[ \t]*\r?\n/
|
578
|
-
type
|
606
|
+
type = $1
|
607
|
+
source = $'
|
579
608
|
end
|
580
609
|
|
581
610
|
[type, source]
|
@@ -588,20 +617,19 @@ module YARD
|
|
588
617
|
# @return [String] highlighted html
|
589
618
|
# @see #html_syntax_highlight
|
590
619
|
def parse_codeblocks(html)
|
591
|
-
html.gsub(
|
620
|
+
html.gsub(%r{<pre\s*(?:lang="(.+?)")?>(?:\s*<code\s*(?:class="(.+?)")?\s*>)?(.+?)(?:</code>\s*)?</pre>}m) do
|
592
621
|
string = $3
|
593
622
|
# handle !!!LANG prefix to send to html_syntax_highlight_LANG
|
594
|
-
language,
|
623
|
+
language, = parse_lang_for_codeblock(string)
|
595
624
|
language ||= $1 || $2 || object.source_type
|
596
625
|
|
597
626
|
if options.highlight
|
598
627
|
string = html_syntax_highlight(CGI.unescapeHTML(string), language)
|
599
628
|
end
|
600
629
|
classes = ['code', language].compact.join(' ')
|
601
|
-
%
|
630
|
+
%(<pre class="#{classes}"><code class="#{language}">#{string}</code></pre>)
|
602
631
|
end
|
603
632
|
end
|
604
633
|
end
|
605
634
|
end
|
606
635
|
end
|
607
|
-
|