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
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
module YARD
|
2
3
|
module Parser
|
3
4
|
module Ruby
|
@@ -5,7 +6,7 @@ module YARD
|
|
5
6
|
# Legacy Ruby parser
|
6
7
|
# @since 0.5.6
|
7
8
|
class RubyParser < Parser::Base
|
8
|
-
def initialize(source,
|
9
|
+
def initialize(source, _filename)
|
9
10
|
@source = source
|
10
11
|
end
|
11
12
|
|
@@ -28,4 +29,4 @@ module YARD
|
|
28
29
|
end
|
29
30
|
end
|
30
31
|
end
|
31
|
-
end
|
32
|
+
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
module YARD
|
2
3
|
module Parser::Ruby::Legacy
|
3
4
|
class Statement
|
@@ -56,10 +57,10 @@ module YARD
|
|
56
57
|
last_tk = nil
|
57
58
|
tokens.reject do |tk|
|
58
59
|
tk.is_a?(RubyToken::TkNL) ||
|
59
|
-
|
60
|
-
|
60
|
+
(last_tk.is_a?(RubyToken::TkSPACE) &&
|
61
|
+
last_tk.class == tk.class) && last_tk = tk
|
61
62
|
end
|
62
63
|
end
|
63
64
|
end
|
64
65
|
end
|
65
|
-
end
|
66
|
+
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
module YARD
|
2
3
|
module Parser::Ruby::Legacy
|
3
4
|
class StatementList < Array
|
@@ -16,10 +17,11 @@ module YARD
|
|
16
17
|
def initialize(content)
|
17
18
|
@shebang_line = nil
|
18
19
|
@encoding_line = nil
|
20
|
+
@comments_last_line = nil
|
19
21
|
if content.is_a? TokenList
|
20
22
|
@tokens = content.dup
|
21
23
|
elsif content.is_a? String
|
22
|
-
@tokens = TokenList.new(content.
|
24
|
+
@tokens = TokenList.new(content.delete("\r"))
|
23
25
|
else
|
24
26
|
raise ArgumentError, "Invalid content for StatementList: #{content.inspect}:#{content.class}"
|
25
27
|
end
|
@@ -30,7 +32,11 @@ module YARD
|
|
30
32
|
private
|
31
33
|
|
32
34
|
def parse_statements
|
33
|
-
|
35
|
+
loop do
|
36
|
+
stmt = next_statement
|
37
|
+
break if stmt.nil?
|
38
|
+
self << stmt
|
39
|
+
end
|
34
40
|
end
|
35
41
|
|
36
42
|
# Returns the next statement in the token stream
|
@@ -45,11 +51,18 @@ module YARD
|
|
45
51
|
@current_block = nil
|
46
52
|
@comments_line = nil
|
47
53
|
@comments_hash_flag = nil
|
48
|
-
@statement
|
49
|
-
@
|
54
|
+
@statement = TokenList.new
|
55
|
+
@block = nil
|
56
|
+
@comments = nil
|
57
|
+
@last_tk = nil
|
58
|
+
@last_ns_tk = nil
|
59
|
+
@before_last_tk = nil
|
60
|
+
@before_last_ns_tk = nil
|
50
61
|
@first_line = nil
|
51
62
|
|
52
|
-
|
63
|
+
until @done
|
64
|
+
tk = @tokens.shift
|
65
|
+
break if tk.nil?
|
53
66
|
process_token(tk)
|
54
67
|
|
55
68
|
@before_last_tk = @last_tk
|
@@ -77,8 +90,6 @@ module YARD
|
|
77
90
|
@statement << TkCOMMENT.new(@comments_line, 0)
|
78
91
|
@statement.first.set_text("# " + @comments.join("\n# "))
|
79
92
|
Statement.new(@statement, nil, @comments)
|
80
|
-
else
|
81
|
-
nil
|
82
93
|
end
|
83
94
|
end
|
84
95
|
|
@@ -86,14 +97,14 @@ module YARD
|
|
86
97
|
extra = []
|
87
98
|
(@statement.size - 1).downto(0) do |index|
|
88
99
|
token = @statement[index]
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
@statement.insert(index + 1, *extra)
|
95
|
-
return
|
100
|
+
next unless TkStatementEnd === token
|
101
|
+
|
102
|
+
while [TkNL, TkSPACE, TkSEMICOLON].include?(@statement[index - 1].class)
|
103
|
+
extra.unshift(@statement.delete_at(index - 1))
|
104
|
+
index -= 1
|
96
105
|
end
|
106
|
+
@statement.insert(index + 1, *extra)
|
107
|
+
break
|
97
108
|
end
|
98
109
|
end
|
99
110
|
|
@@ -108,7 +119,7 @@ module YARD
|
|
108
119
|
@statement.each_with_index do |token, index|
|
109
120
|
if TkBlockContents === token
|
110
121
|
@statement[index, 1] = [token, *extra]
|
111
|
-
|
122
|
+
break
|
112
123
|
end
|
113
124
|
end
|
114
125
|
end
|
@@ -214,7 +225,7 @@ module YARD
|
|
214
225
|
end
|
215
226
|
when Parser::SourceParser::ENCODING_LINE
|
216
227
|
if (@last_ns_tk.class == TkCOMMENT && @last_ns_tk.text == @shebang_line) ||
|
217
|
-
|
228
|
+
!@last_ns_tk
|
218
229
|
@encoding_line = tk.text
|
219
230
|
return
|
220
231
|
end
|
@@ -236,13 +247,13 @@ module YARD
|
|
236
247
|
# Since, of course, the convention is to have "# text"
|
237
248
|
# and not "#text", which I deem ugly (you heard it here first)
|
238
249
|
@comments ||= []
|
239
|
-
if tk.text
|
250
|
+
if tk.text.start_with?('=begin')
|
240
251
|
lines = tk.text.count("\n")
|
241
252
|
@comments += tk.text.gsub(/\A=begin.*\r?\n|\r?\n=end.*\r?\n?\Z/, '').split(/\r?\n/)
|
242
253
|
@comments_last_line = tk.line_no + lines
|
243
254
|
else
|
244
255
|
@comments << tk.text.gsub(/^(#+)\s{0,1}/, '')
|
245
|
-
@comments_hash_flag = $1 == '##' if @comments_hash_flag
|
256
|
+
@comments_hash_flag = $1 == '##' if @comments_hash_flag.nil?
|
246
257
|
@comments_last_line = tk.line_no
|
247
258
|
end
|
248
259
|
@comments.pop if @comments.size == 1 && @comments.first =~ /^\s*$/
|
@@ -256,17 +267,17 @@ module YARD
|
|
256
267
|
# @param [RubyToken::Token] tk the token to process
|
257
268
|
def process_simple_block_opener(tk)
|
258
269
|
return unless [TkLBRACE, TkDO, TkBEGIN, TkELSE].include?(tk.class) &&
|
259
|
-
|
260
|
-
|
270
|
+
# Make sure hashes are parsed as hashes, not as blocks
|
271
|
+
(@last_ns_tk.nil? || @last_ns_tk.lex_state != EXPR_BEG)
|
261
272
|
|
262
273
|
@level += 1
|
263
274
|
@state = :block
|
264
275
|
@block_num += 1
|
265
|
-
|
276
|
+
if @block.nil?
|
266
277
|
@block = TokenList.new
|
267
278
|
tokens = [tk, TkStatementEnd.new(tk.line_no, tk.char_no)]
|
268
279
|
tokens = tokens.reverse if TkBEGIN === tk.class
|
269
|
-
@statement.
|
280
|
+
@statement.concat(tokens)
|
270
281
|
else
|
271
282
|
@statement << tk
|
272
283
|
end
|
@@ -297,36 +308,35 @@ module YARD
|
|
297
308
|
|
298
309
|
return unless
|
299
310
|
# We might be coming after a statement-ending token...
|
300
|
-
(
|
301
|
-
|
302
|
-
|
311
|
+
(@last_tk && [TkSEMICOLON, TkNL, TkEND_OF_SCRIPT].include?(tk.class)) ||
|
312
|
+
# Or we might be at the beginning of an argument list
|
313
|
+
(@current_block == TkDEF && tk.class == TkRPAREN)
|
303
314
|
|
304
315
|
# Continue line ending on . or ::
|
305
316
|
return if @last_tk && [EXPR_DOT].include?(@last_tk.lex_state)
|
306
317
|
|
307
318
|
# Continue a possible existing new statement unless we just finished an expression...
|
308
319
|
return unless (@last_tk && [EXPR_END, EXPR_ARG].include?(@last_tk.lex_state)) ||
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
|
317
|
-
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
|
320
|
+
# Or we've opened a block and are ready to move into the body
|
321
|
+
(@current_block && [TkNL, TkSEMICOLON].include?(tk.class) &&
|
322
|
+
# Handle the case where the block statement's expression is on the next line
|
323
|
+
#
|
324
|
+
# while
|
325
|
+
# foo
|
326
|
+
# end
|
327
|
+
@last_ns_tk.class != @current_block &&
|
328
|
+
# And the case where part of the expression is on the next line
|
329
|
+
#
|
330
|
+
# while foo ||
|
331
|
+
# bar
|
332
|
+
# end
|
333
|
+
@last_tk.lex_state != EXPR_BEG)
|
323
334
|
|
324
335
|
# Continue with the statement if we've hit a comma in a def
|
325
336
|
return if @current_block == TkDEF && peek_no_space.class == TkCOMMA
|
326
337
|
|
327
|
-
|
328
338
|
if [TkEND_OF_SCRIPT, TkNL, TkSEMICOLON].include?(tk.class) && @state == :block_statement &&
|
329
|
-
|
339
|
+
[TkRBRACE, TkEND].include?(@last_ns_tk.class) && @level == 0
|
330
340
|
@current_block = nil
|
331
341
|
end
|
332
342
|
|
@@ -377,7 +387,7 @@ module YARD
|
|
377
387
|
# @return [RubyToken::Token] the next non-space token
|
378
388
|
def peek_no_space
|
379
389
|
return @tokens.first unless @tokens.first.class == TkSPACE
|
380
|
-
|
390
|
+
@tokens[1]
|
381
391
|
end
|
382
392
|
end
|
383
393
|
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
module YARD
|
2
3
|
module Parser::Ruby::Legacy
|
3
4
|
class TokenList < Array
|
@@ -10,12 +11,7 @@ module YARD
|
|
10
11
|
def to_s(full_statement = false, show_block = true)
|
11
12
|
inject([]) do |acc, token|
|
12
13
|
break acc if !full_statement && TkStatementEnd === token
|
13
|
-
|
14
|
-
acc << ""
|
15
|
-
else
|
16
|
-
acc << token.text
|
17
|
-
end
|
18
|
-
acc
|
14
|
+
acc << (!show_block && TkBlockContents === token ? "" : token.text)
|
19
15
|
end.join
|
20
16
|
end
|
21
17
|
|
@@ -36,7 +32,7 @@ module YARD
|
|
36
32
|
end
|
37
33
|
self
|
38
34
|
end
|
39
|
-
|
35
|
+
alias << push
|
40
36
|
|
41
37
|
def squeeze(type = TkSPACE)
|
42
38
|
last = nil
|
@@ -47,7 +43,9 @@ module YARD
|
|
47
43
|
|
48
44
|
def parse_content(content)
|
49
45
|
lex = RubyLex.new(content)
|
50
|
-
|
46
|
+
loop do
|
47
|
+
tk = lex.token
|
48
|
+
break if tk.nil?
|
51
49
|
self << convert_token(lex, tk)
|
52
50
|
end
|
53
51
|
end
|
@@ -58,14 +56,19 @@ module YARD
|
|
58
56
|
sym = TkLABEL.new(tk.line_no, tk.char_no, nil)
|
59
57
|
sym.lex_state = lex.lex_state
|
60
58
|
sym.set_text(tk.text + next_tk.text)
|
61
|
-
elsif TkSYMBEG === tk
|
62
|
-
|
63
|
-
|
64
|
-
|
59
|
+
elsif TkSYMBEG === tk
|
60
|
+
next_tk = lex.token
|
61
|
+
if next_tk
|
62
|
+
sym = TkSYMBOL.new(tk.line_no, tk.char_no, nil)
|
63
|
+
sym.lex_state = lex.lex_state
|
64
|
+
sym.set_text(tk.text + next_tk.text)
|
65
|
+
else
|
66
|
+
tk
|
67
|
+
end
|
65
68
|
else
|
66
69
|
tk
|
67
70
|
end
|
68
71
|
end
|
69
72
|
end
|
70
73
|
end
|
71
|
-
end
|
74
|
+
end
|
@@ -1,4 +1,5 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
begin require 'ripper'; rescue LoadError; nil end
|
2
3
|
|
3
4
|
module YARD
|
4
5
|
module Parser
|
@@ -48,6 +49,7 @@ module YARD
|
|
48
49
|
@frozen_string_line = nil
|
49
50
|
@file_encoding = nil
|
50
51
|
@newline = true
|
52
|
+
@percent_ary = nil
|
51
53
|
end
|
52
54
|
|
53
55
|
def parse
|
@@ -67,9 +69,8 @@ module YARD
|
|
67
69
|
return nil unless defined?(::Encoding)
|
68
70
|
return @file_encoding if @file_encoding
|
69
71
|
return Encoding.default_internal unless @encoding_line
|
70
|
-
|
71
|
-
|
72
|
-
end
|
72
|
+
match = @encoding_line.match(SourceParser::ENCODING_LINE)
|
73
|
+
@file_encoding = match.captures.last if match
|
73
74
|
end
|
74
75
|
|
75
76
|
private
|
@@ -101,6 +102,9 @@ module YARD
|
|
101
102
|
:next => "next",
|
102
103
|
:paren => :lparen,
|
103
104
|
:qwords_literal => :qwords_beg,
|
105
|
+
:words_literal => :words_beg,
|
106
|
+
:qsymbols_literal => :qsymbols_beg,
|
107
|
+
:symbols_literal => :symbols_beg,
|
104
108
|
:redo => "redo",
|
105
109
|
:regexp_literal => :regexp_beg,
|
106
110
|
:rescue => "rescue",
|
@@ -131,7 +135,7 @@ module YARD
|
|
131
135
|
|
132
136
|
MAPPINGS.each do |k, v|
|
133
137
|
if Array === v
|
134
|
-
v.each {|
|
138
|
+
v.each {|vv| (REV_MAPPINGS[vv] ||= []) << k }
|
135
139
|
else
|
136
140
|
(REV_MAPPINGS[v] ||= []) << k
|
137
141
|
end
|
@@ -140,7 +144,7 @@ module YARD
|
|
140
144
|
PARSER_EVENT_TABLE.each do |event, arity|
|
141
145
|
node_class = AstNode.node_class_for(event)
|
142
146
|
|
143
|
-
if /_new\z/ =~ event.to_s
|
147
|
+
if /_new\z/ =~ event.to_s && arity == 0
|
144
148
|
module_eval(<<-eof, __FILE__, __LINE__ + 1)
|
145
149
|
def on_#{event}(*args)
|
146
150
|
#{node_class}.new(:list, args, :listchar => charno...charno, :listline => lineno..lineno)
|
@@ -154,7 +158,7 @@ module YARD
|
|
154
158
|
list
|
155
159
|
end
|
156
160
|
eof
|
157
|
-
elsif MAPPINGS.
|
161
|
+
elsif MAPPINGS.key?(event)
|
158
162
|
module_eval(<<-eof, __FILE__, __LINE__ + 1)
|
159
163
|
begin; undef on_#{event}; rescue NameError; end
|
160
164
|
def on_#{event}(*args)
|
@@ -181,8 +185,8 @@ module YARD
|
|
181
185
|
eof
|
182
186
|
end
|
183
187
|
|
184
|
-
REV_MAPPINGS.select {|k,
|
185
|
-
event
|
188
|
+
REV_MAPPINGS.select {|k, _v| k.is_a?(Symbol) }.each do |pair|
|
189
|
+
event = pair.first
|
186
190
|
ast_token = AST_TOKENS.include?(event)
|
187
191
|
module_eval(<<-eof, __FILE__, __LINE__ + 1)
|
188
192
|
begin; undef on_#{event}; rescue NameError; end
|
@@ -218,6 +222,8 @@ module YARD
|
|
218
222
|
eof
|
219
223
|
end
|
220
224
|
|
225
|
+
undef on_sp
|
226
|
+
|
221
227
|
def on_sp(tok)
|
222
228
|
add_token(:sp, tok)
|
223
229
|
@charno += tok.length
|
@@ -229,8 +235,9 @@ module YARD
|
|
229
235
|
node.source_range = Range.new(sstart, @ns_charno - 1)
|
230
236
|
node.line_range = Range.new(lstart, lineno)
|
231
237
|
if node.respond_to?(:block)
|
232
|
-
sr
|
233
|
-
|
238
|
+
sr = node.block.source_range
|
239
|
+
lr = node.block.line_range
|
240
|
+
node.block.source_range = Range.new(sr.first, @tokens.last[2][1] - 1)
|
234
241
|
node.block.line_range = Range.new(lr.first, @tokens.last[2][0])
|
235
242
|
end
|
236
243
|
node
|
@@ -252,12 +259,26 @@ module YARD
|
|
252
259
|
@ns_charno = charno
|
253
260
|
@newline = [:semicolon, :comment, :kw, :op, :lparen, :lbrace].include?(token)
|
254
261
|
if ast_token
|
255
|
-
AstNode.new(token, [data], :line => lineno..lineno, :char => ch..charno-1, :token => true)
|
262
|
+
AstNode.new(token, [data], :line => lineno..lineno, :char => ch..charno - 1, :token => true)
|
256
263
|
end
|
257
264
|
end
|
258
265
|
|
259
266
|
def add_token(token, data)
|
260
|
-
if @
|
267
|
+
if @percent_ary
|
268
|
+
if token == :words_sep && data !~ /\s\z/
|
269
|
+
rng = @percent_ary.source_range
|
270
|
+
rng = Range.new(rng.first, rng.last + data.length)
|
271
|
+
@percent_ary.source_range = rng
|
272
|
+
@tokens << [token, data, [lineno, charno]]
|
273
|
+
@percent_ary = nil
|
274
|
+
elsif token == :tstring_end && data =~ /\A\s/
|
275
|
+
rng = @percent_ary.source_range
|
276
|
+
rng = Range.new(rng.first, rng.last + data.length)
|
277
|
+
@percent_ary.source_range = rng
|
278
|
+
@tokens << [token, data, [lineno, charno]]
|
279
|
+
@percent_ary = nil
|
280
|
+
end
|
281
|
+
elsif @tokens.last && @tokens.last[0] == :symbeg
|
261
282
|
@tokens[-1] = [:symbol, ":" + data, @tokens.last[2]]
|
262
283
|
elsif @heredoc_state == :started
|
263
284
|
@heredoc_tokens << [token, data, [lineno, charno]]
|
@@ -291,8 +312,6 @@ module YARD
|
|
291
312
|
undef on_aref_field
|
292
313
|
undef on_lbracket
|
293
314
|
undef on_rbracket
|
294
|
-
undef on_qwords_new
|
295
|
-
undef on_qwords_add
|
296
315
|
undef on_string_literal
|
297
316
|
undef on_lambda
|
298
317
|
undef on_unary
|
@@ -336,7 +355,7 @@ module YARD
|
|
336
355
|
end
|
337
356
|
|
338
357
|
def on_unary(op, val)
|
339
|
-
map = @map[op.to_s[0,1]]
|
358
|
+
map = @map[op.to_s[0, 1]]
|
340
359
|
lstart, sstart = *(map ? map.pop : [lineno, @ns_charno - 1])
|
341
360
|
node = AstNode.node_class_for(:unary).new(:unary, [op, val])
|
342
361
|
node.source_range = Range.new(sstart, @ns_charno - 1)
|
@@ -414,22 +433,29 @@ module YARD
|
|
414
433
|
eof
|
415
434
|
end
|
416
435
|
|
417
|
-
|
418
|
-
|
419
|
-
|
420
|
-
|
421
|
-
|
422
|
-
|
423
|
-
|
424
|
-
|
425
|
-
|
436
|
+
%w(symbols qsymbols words qwords).each do |kw|
|
437
|
+
module_eval(<<-eof, __FILE__, __LINE__ + 1)
|
438
|
+
begin; undef on_#{kw}_new; rescue NameError; end
|
439
|
+
def on_#{kw}_new(*args)
|
440
|
+
node = LiteralNode.new(:#{kw}_literal, args)
|
441
|
+
@percent_ary = node
|
442
|
+
if @map[:#{kw}_beg]
|
443
|
+
lstart, sstart = *@map[:#{kw}_beg].pop
|
444
|
+
node.source_range = Range.new(sstart, @ns_charno-1)
|
445
|
+
node.line_range = Range.new(lstart, lineno)
|
446
|
+
end
|
447
|
+
node
|
448
|
+
end
|
426
449
|
|
427
|
-
|
428
|
-
|
429
|
-
|
430
|
-
|
431
|
-
|
432
|
-
|
450
|
+
begin; undef on_#{kw}_add; rescue NameError; end
|
451
|
+
def on_#{kw}_add(list, item)
|
452
|
+
last = @source[@ns_charno,1] == "\n" ? @ns_charno - 1 : @ns_charno
|
453
|
+
list.source_range = (list.source_range.first..last)
|
454
|
+
list.line_range = (list.line_range.first..lineno)
|
455
|
+
list.push(item)
|
456
|
+
list
|
457
|
+
end
|
458
|
+
eof
|
433
459
|
end
|
434
460
|
|
435
461
|
def on_string_literal(*args)
|
@@ -469,11 +495,8 @@ module YARD
|
|
469
495
|
if arg.first.class == Array
|
470
496
|
arg.map! do |sub_arg|
|
471
497
|
next sub_arg unless sub_arg.class == Array
|
472
|
-
|
473
|
-
|
474
|
-
else
|
475
|
-
type = :unnamed_optional_arg
|
476
|
-
end
|
498
|
+
type = sub_arg[0].type == :label ?
|
499
|
+
:named_arg : :unnamed_optional_arg
|
477
500
|
AstNode.new(type, sub_arg, :listline => lineno..lineno, :listchar => charno..charno)
|
478
501
|
end
|
479
502
|
end
|
@@ -489,12 +512,12 @@ module YARD
|
|
489
512
|
ch = charno
|
490
513
|
@charno += data.length
|
491
514
|
@ns_charno = charno
|
492
|
-
AstNode.new(:label, [data[0...-1]], :line => lineno..lineno, :char => ch..charno-1, :token => true)
|
515
|
+
AstNode.new(:label, [data[0...-1]], :line => lineno..lineno, :char => ch..charno - 1, :token => true)
|
493
516
|
end
|
494
517
|
|
495
518
|
def on_comment(comment)
|
496
519
|
not_comment = false
|
497
|
-
if @last_ns_token.nil? || @last_ns_token.
|
520
|
+
if @last_ns_token.nil? || @last_ns_token.empty?
|
498
521
|
if comment =~ SourceParser::SHEBANG_LINE && !@encoding_line
|
499
522
|
@shebang_line = comment
|
500
523
|
not_comment = true
|
@@ -514,14 +537,14 @@ module YARD
|
|
514
537
|
return
|
515
538
|
end
|
516
539
|
|
517
|
-
source_range = ch..(charno-1)
|
540
|
+
source_range = ch..(charno - 1)
|
518
541
|
comment = comment.gsub(/^(\#+)\s{0,1}/, '').chomp
|
519
542
|
append_comment = @comments[lineno - 1]
|
520
543
|
|
521
544
|
hash_flag = $1 == '##' ? true : false
|
522
545
|
|
523
546
|
if append_comment && @comments_last_column &&
|
524
|
-
|
547
|
+
@comments_last_column == column && comment_starts_line?(ch)
|
525
548
|
@comments.delete(lineno - 1)
|
526
549
|
@comments_flags[lineno] = @comments_flags[lineno - 1]
|
527
550
|
@comments_flags.delete(lineno - 1)
|
@@ -532,14 +555,14 @@ module YARD
|
|
532
555
|
|
533
556
|
@comments[lineno] = comment
|
534
557
|
@comments_range[lineno] = source_range
|
535
|
-
@comments_flags[lineno] = hash_flag
|
558
|
+
@comments_flags[lineno] = hash_flag unless append_comment
|
536
559
|
@comments_last_column = column
|
537
560
|
end
|
538
561
|
|
539
562
|
def on_embdoc_beg(text)
|
540
563
|
visit_ns_token(:embdoc_beg, text)
|
541
|
-
@embdoc_start = charno-text.length
|
542
|
-
@embdoc = ""
|
564
|
+
@embdoc_start = charno - text.length
|
565
|
+
@embdoc = String.new("")
|
543
566
|
end
|
544
567
|
|
545
568
|
def on_embdoc(text)
|
@@ -559,9 +582,10 @@ module YARD
|
|
559
582
|
def on_parse_error(msg)
|
560
583
|
raise ParserSyntaxError, "syntax error in `#{file}`:(#{lineno},#{column}): #{msg}"
|
561
584
|
end
|
585
|
+
alias compile_error on_parse_error
|
562
586
|
|
563
587
|
def comment_starts_line?(charno)
|
564
|
-
(charno-1).downto(0) do |i|
|
588
|
+
(charno - 1).downto(0) do |i|
|
565
589
|
ch = @source[i]
|
566
590
|
break if ch == "\n"
|
567
591
|
return false if ch != " " && ch != "\t"
|
@@ -579,7 +603,7 @@ module YARD
|
|
579
603
|
end
|
580
604
|
|
581
605
|
# check upwards from line before node; check node's line at the end
|
582
|
-
((node.line-1).downto(node.line-2).to_a + [node.line]).each
|
606
|
+
((node.line - 1).downto(node.line - 2).to_a + [node.line]).each do |line|
|
583
607
|
comment = @comments[line]
|
584
608
|
if comment && !comment.empty?
|
585
609
|
add_comment(line, node)
|
@@ -588,9 +612,7 @@ module YARD
|
|
588
612
|
end
|
589
613
|
|
590
614
|
@comments.keys.each do |line|
|
591
|
-
if node.line > line
|
592
|
-
add_comment(line, nil, node)
|
593
|
-
end
|
615
|
+
add_comment(line, nil, node) if node.line > line
|
594
616
|
end
|
595
617
|
end
|
596
618
|
|
@@ -598,21 +620,20 @@ module YARD
|
|
598
620
|
root.traverse do |node|
|
599
621
|
next if node.type == :list || node.parent.type != :list
|
600
622
|
@comments.keys.each do |line|
|
601
|
-
|
602
|
-
|
603
|
-
|
604
|
-
|
605
|
-
|
606
|
-
|
607
|
-
|
608
|
-
end
|
609
|
-
add_comment(line, nil, pick, true) if pick
|
623
|
+
next unless node.line_range.include?(line)
|
624
|
+
pick = nil
|
625
|
+
node.traverse do |subnode|
|
626
|
+
next unless subnode.type == :list
|
627
|
+
pick ||= subnode
|
628
|
+
next unless subnode.line_range.include?(line)
|
629
|
+
pick = subnode
|
610
630
|
end
|
631
|
+
add_comment(line, nil, pick, true) if pick
|
611
632
|
end
|
612
|
-
end
|
633
|
+
end unless @comments.empty?
|
613
634
|
|
614
635
|
# insert all remaining comments
|
615
|
-
@comments.each do |line,
|
636
|
+
@comments.each do |line, _comment|
|
616
637
|
add_comment(line, nil, root, true)
|
617
638
|
end
|
618
639
|
|
@@ -646,10 +667,13 @@ module YARD
|
|
646
667
|
end
|
647
668
|
|
648
669
|
def freeze_tree(node = nil)
|
649
|
-
node
|
650
|
-
|
651
|
-
|
652
|
-
|
670
|
+
nodes = [node || root]
|
671
|
+
until nodes.empty?
|
672
|
+
p_node = nodes.shift
|
673
|
+
p_node.children.each do |child|
|
674
|
+
child.parent = p_node
|
675
|
+
nodes << child
|
676
|
+
end
|
653
677
|
end
|
654
678
|
end
|
655
679
|
end if defined?(::Ripper)
|