yard 0.9.16 → 0.9.17
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 +5 -5
- data/.yardopts +26 -26
- data/CHANGELOG.md +728 -728
- data/LEGAL +66 -66
- data/LICENSE +22 -22
- data/README.md +328 -328
- data/Rakefile +53 -47
- data/benchmarks/builtins_vs_eval.rb +24 -24
- data/benchmarks/concat_vs_join.rb +13 -13
- data/benchmarks/erb_vs_erubis.rb +54 -54
- data/benchmarks/format_args.rb +47 -47
- data/benchmarks/generation.rb +38 -38
- data/benchmarks/marshal_vs_dbm.rb +64 -64
- data/benchmarks/parsing.rb +46 -46
- data/benchmarks/pathname_vs_string.rb +50 -50
- data/benchmarks/rdoc_vs_yardoc.rb +11 -11
- data/benchmarks/registry_store_types.rb +49 -49
- data/benchmarks/ri_vs_yri.rb +19 -19
- data/benchmarks/ripper_parser.rb +13 -13
- data/benchmarks/splat_vs_flatten.rb +13 -13
- data/benchmarks/template_erb.rb +23 -23
- data/benchmarks/template_format.rb +7 -7
- data/benchmarks/template_profile.rb +18 -18
- data/benchmarks/yri_cache.rb +20 -20
- data/bin/yard +13 -13
- data/bin/yardoc +13 -13
- data/bin/yri +13 -13
- data/docs/CodeObjects.md +115 -115
- data/docs/GettingStarted.md +679 -679
- data/docs/Handlers.md +152 -152
- data/docs/Overview.md +61 -61
- data/docs/Parser.md +191 -191
- data/docs/Tags.md +283 -283
- data/docs/TagsArch.md +123 -123
- data/docs/Templates.md +496 -496
- data/docs/WhatsNew.md +1245 -1245
- data/docs/templates/default/fulldoc/html/full_list_tag.erb +8 -8
- data/docs/templates/default/fulldoc/html/setup.rb +6 -6
- data/docs/templates/default/layout/html/setup.rb +9 -9
- data/docs/templates/default/layout/html/tag_list.erb +11 -11
- data/docs/templates/default/yard_tags/html/list.erb +18 -18
- data/docs/templates/default/yard_tags/html/setup.rb +26 -26
- data/docs/templates/plugin.rb +70 -70
- data/lib/rubygems_plugin.rb +9 -9
- data/lib/yard.rb +69 -69
- data/lib/yard/autoload.rb +303 -303
- data/lib/yard/cli/command.rb +85 -85
- data/lib/yard/cli/command_parser.rb +93 -93
- data/lib/yard/cli/config.rb +198 -198
- data/lib/yard/cli/diff.rb +270 -270
- data/lib/yard/cli/display.rb +69 -69
- data/lib/yard/cli/gems.rb +84 -84
- data/lib/yard/cli/graph.rb +125 -125
- data/lib/yard/cli/help.rb +20 -20
- data/lib/yard/cli/i18n.rb +70 -70
- data/lib/yard/cli/list.rb +23 -23
- data/lib/yard/cli/markup_types.rb +32 -32
- data/lib/yard/cli/server.rb +257 -257
- data/lib/yard/cli/stats.rb +231 -231
- data/lib/yard/cli/yardoc.rb +788 -788
- data/lib/yard/cli/yardopts_command.rb +110 -110
- data/lib/yard/cli/yri.rb +215 -215
- data/lib/yard/code_objects/base.rb +615 -610
- data/lib/yard/code_objects/class_object.rb +146 -146
- data/lib/yard/code_objects/class_variable_object.rb +11 -11
- data/lib/yard/code_objects/constant_object.rb +16 -16
- data/lib/yard/code_objects/extended_method_object.rb +24 -24
- data/lib/yard/code_objects/extra_file_object.rb +131 -131
- data/lib/yard/code_objects/macro_object.rb +172 -172
- data/lib/yard/code_objects/method_object.rb +196 -196
- data/lib/yard/code_objects/module_object.rb +21 -21
- data/lib/yard/code_objects/namespace_mapper.rb +114 -114
- data/lib/yard/code_objects/namespace_object.rb +200 -200
- data/lib/yard/code_objects/proxy.rb +240 -240
- data/lib/yard/code_objects/root_object.rb +19 -19
- data/lib/yard/config.rb +270 -270
- data/lib/yard/core_ext/array.rb +16 -16
- data/lib/yard/core_ext/file.rb +69 -69
- data/lib/yard/core_ext/hash.rb +16 -16
- data/lib/yard/core_ext/insertion.rb +63 -63
- data/lib/yard/core_ext/module.rb +20 -20
- data/lib/yard/core_ext/string.rb +68 -68
- data/lib/yard/core_ext/symbol_hash.rb +75 -75
- data/lib/yard/docstring.rb +386 -378
- data/lib/yard/docstring_parser.rb +345 -345
- data/lib/yard/gem_index.rb +29 -29
- data/lib/yard/globals.rb +22 -22
- data/lib/yard/handlers/base.rb +595 -595
- data/lib/yard/handlers/c/alias_handler.rb +16 -16
- data/lib/yard/handlers/c/attribute_handler.rb +13 -13
- data/lib/yard/handlers/c/base.rb +129 -129
- data/lib/yard/handlers/c/class_handler.rb +27 -27
- data/lib/yard/handlers/c/constant_handler.rb +13 -13
- data/lib/yard/handlers/c/handler_methods.rb +211 -211
- data/lib/yard/handlers/c/init_handler.rb +20 -20
- data/lib/yard/handlers/c/method_handler.rb +45 -36
- data/lib/yard/handlers/c/mixin_handler.rb +21 -21
- data/lib/yard/handlers/c/module_handler.rb +17 -17
- data/lib/yard/handlers/c/override_comment_handler.rb +31 -31
- data/lib/yard/handlers/c/path_handler.rb +11 -11
- data/lib/yard/handlers/c/struct_handler.rb +13 -13
- data/lib/yard/handlers/c/symbol_handler.rb +8 -8
- data/lib/yard/handlers/processor.rb +200 -200
- data/lib/yard/handlers/ruby/alias_handler.rb +44 -44
- data/lib/yard/handlers/ruby/attribute_handler.rb +87 -87
- data/lib/yard/handlers/ruby/base.rb +165 -165
- data/lib/yard/handlers/ruby/class_condition_handler.rb +92 -92
- data/lib/yard/handlers/ruby/class_handler.rb +119 -119
- data/lib/yard/handlers/ruby/class_variable_handler.rb +17 -17
- data/lib/yard/handlers/ruby/comment_handler.rb +10 -10
- data/lib/yard/handlers/ruby/constant_handler.rb +59 -59
- data/lib/yard/handlers/ruby/decorator_handler_methods.rb +123 -123
- data/lib/yard/handlers/ruby/dsl_handler.rb +15 -15
- data/lib/yard/handlers/ruby/dsl_handler_methods.rb +96 -95
- data/lib/yard/handlers/ruby/exception_handler.rb +27 -27
- data/lib/yard/handlers/ruby/extend_handler.rb +22 -22
- data/lib/yard/handlers/ruby/legacy/alias_handler.rb +37 -37
- data/lib/yard/handlers/ruby/legacy/attribute_handler.rb +65 -65
- data/lib/yard/handlers/ruby/legacy/base.rb +245 -245
- data/lib/yard/handlers/ruby/legacy/class_condition_handler.rb +83 -83
- data/lib/yard/handlers/ruby/legacy/class_handler.rb +113 -113
- data/lib/yard/handlers/ruby/legacy/class_variable_handler.rb +15 -15
- data/lib/yard/handlers/ruby/legacy/comment_handler.rb +10 -10
- data/lib/yard/handlers/ruby/legacy/constant_handler.rb +29 -29
- data/lib/yard/handlers/ruby/legacy/dsl_handler.rb +17 -17
- data/lib/yard/handlers/ruby/legacy/exception_handler.rb +13 -13
- data/lib/yard/handlers/ruby/legacy/extend_handler.rb +21 -21
- data/lib/yard/handlers/ruby/legacy/method_handler.rb +90 -90
- data/lib/yard/handlers/ruby/legacy/mixin_handler.rb +39 -39
- data/lib/yard/handlers/ruby/legacy/module_function_handler.rb +19 -19
- data/lib/yard/handlers/ruby/legacy/module_handler.rb +12 -12
- data/lib/yard/handlers/ruby/legacy/private_class_method_handler.rb +22 -22
- data/lib/yard/handlers/ruby/legacy/private_constant_handler.rb +22 -22
- data/lib/yard/handlers/ruby/legacy/visibility_handler.rb +17 -17
- data/lib/yard/handlers/ruby/legacy/yield_handler.rb +29 -29
- data/lib/yard/handlers/ruby/method_condition_handler.rb +9 -9
- data/lib/yard/handlers/ruby/method_handler.rb +118 -118
- data/lib/yard/handlers/ruby/mixin_handler.rb +37 -37
- data/lib/yard/handlers/ruby/module_function_handler.rb +27 -27
- data/lib/yard/handlers/ruby/module_handler.rb +12 -12
- data/lib/yard/handlers/ruby/private_class_method_handler.rb +14 -14
- data/lib/yard/handlers/ruby/private_constant_handler.rb +43 -43
- data/lib/yard/handlers/ruby/public_class_method_handler.rb +14 -14
- data/lib/yard/handlers/ruby/struct_handler_methods.rb +143 -143
- data/lib/yard/handlers/ruby/visibility_handler.rb +22 -22
- data/lib/yard/handlers/ruby/yield_handler.rb +31 -31
- data/lib/yard/i18n/locale.rb +67 -67
- data/lib/yard/i18n/message.rb +57 -57
- data/lib/yard/i18n/messages.rb +56 -56
- data/lib/yard/i18n/po_parser.rb +61 -61
- data/lib/yard/i18n/pot_generator.rb +290 -290
- data/lib/yard/i18n/text.rb +173 -173
- data/lib/yard/logging.rb +205 -205
- data/lib/yard/options.rb +217 -217
- data/lib/yard/parser/base.rb +57 -57
- data/lib/yard/parser/c/c_parser.rb +235 -235
- data/lib/yard/parser/c/comment_parser.rb +134 -134
- data/lib/yard/parser/c/statement.rb +64 -64
- data/lib/yard/parser/ruby/ast_node.rb +540 -540
- data/lib/yard/parser/ruby/legacy/ruby_lex.rb +1354 -1354
- data/lib/yard/parser/ruby/legacy/ruby_parser.rb +32 -32
- data/lib/yard/parser/ruby/legacy/statement.rb +66 -66
- data/lib/yard/parser/ruby/legacy/statement_list.rb +394 -394
- data/lib/yard/parser/ruby/legacy/token_list.rb +74 -74
- data/lib/yard/parser/ruby/ruby_parser.rb +687 -687
- data/lib/yard/parser/ruby/token_resolver.rb +156 -156
- data/lib/yard/parser/source_parser.rb +526 -526
- data/lib/yard/rake/yardoc_task.rb +81 -81
- data/lib/yard/registry.rb +439 -439
- data/lib/yard/registry_resolver.rb +189 -189
- data/lib/yard/registry_store.rb +337 -337
- data/lib/yard/rubygems/backports.rb +10 -10
- data/lib/yard/rubygems/backports/LICENSE.txt +57 -57
- data/lib/yard/rubygems/backports/MIT.txt +20 -20
- data/lib/yard/rubygems/backports/gem.rb +10 -10
- data/lib/yard/rubygems/backports/source_index.rb +365 -365
- data/lib/yard/rubygems/doc_manager.rb +90 -90
- data/lib/yard/rubygems/hook.rb +197 -197
- data/lib/yard/rubygems/specification.rb +50 -50
- data/lib/yard/serializers/base.rb +83 -83
- data/lib/yard/serializers/file_system_serializer.rb +123 -123
- data/lib/yard/serializers/process_serializer.rb +24 -24
- data/lib/yard/serializers/stdout_serializer.rb +34 -34
- data/lib/yard/serializers/yardoc_serializer.rb +152 -152
- data/lib/yard/server.rb +13 -13
- data/lib/yard/server/adapter.rb +100 -100
- data/lib/yard/server/commands/base.rb +209 -209
- data/lib/yard/server/commands/display_file_command.rb +29 -29
- data/lib/yard/server/commands/display_object_command.rb +65 -65
- data/lib/yard/server/commands/frames_command.rb +16 -16
- data/lib/yard/server/commands/library_command.rb +187 -187
- data/lib/yard/server/commands/library_index_command.rb +28 -28
- data/lib/yard/server/commands/list_command.rb +25 -25
- data/lib/yard/server/commands/root_request_command.rb +15 -15
- data/lib/yard/server/commands/search_command.rb +79 -79
- data/lib/yard/server/commands/static_file_command.rb +23 -23
- data/lib/yard/server/commands/static_file_helpers.rb +62 -62
- data/lib/yard/server/doc_server_helper.rb +91 -91
- data/lib/yard/server/doc_server_serializer.rb +39 -39
- data/lib/yard/server/library_version.rb +277 -277
- data/lib/yard/server/rack_adapter.rb +89 -89
- data/lib/yard/server/router.rb +187 -187
- data/lib/yard/server/static_caching.rb +46 -46
- data/lib/yard/server/templates/default/fulldoc/html/css/custom.css +127 -127
- data/lib/yard/server/templates/default/fulldoc/html/js/autocomplete.js +11 -11
- data/lib/yard/server/templates/default/layout/html/breadcrumb.erb +37 -37
- data/lib/yard/server/templates/default/layout/html/script_setup.erb +7 -7
- data/lib/yard/server/templates/default/layout/html/setup.rb +8 -8
- data/lib/yard/server/templates/default/method_details/html/permalink.erb +4 -4
- data/lib/yard/server/templates/default/method_details/html/setup.rb +5 -5
- data/lib/yard/server/templates/doc_server/library_list/html/headers.erb +8 -8
- data/lib/yard/server/templates/doc_server/library_list/html/library_list.erb +14 -14
- data/lib/yard/server/templates/doc_server/library_list/html/listing.erb +13 -13
- data/lib/yard/server/templates/doc_server/library_list/html/setup.rb +6 -6
- data/lib/yard/server/templates/doc_server/library_list/html/title.erb +2 -2
- data/lib/yard/server/templates/doc_server/processing/html/processing.erb +52 -52
- data/lib/yard/server/templates/doc_server/processing/html/setup.rb +4 -4
- data/lib/yard/server/templates/doc_server/search/html/search.erb +18 -18
- data/lib/yard/server/templates/doc_server/search/html/setup.rb +9 -9
- data/lib/yard/server/webrick_adapter.rb +45 -45
- data/lib/yard/tags/default_factory.rb +191 -191
- data/lib/yard/tags/default_tag.rb +13 -13
- data/lib/yard/tags/directives.rb +616 -616
- data/lib/yard/tags/library.rb +633 -633
- data/lib/yard/tags/option_tag.rb +13 -13
- data/lib/yard/tags/overload_tag.rb +71 -71
- data/lib/yard/tags/ref_tag.rb +8 -8
- data/lib/yard/tags/ref_tag_list.rb +28 -28
- data/lib/yard/tags/tag.rb +71 -71
- data/lib/yard/tags/tag_format_error.rb +7 -7
- data/lib/yard/tags/types_explainer.rb +162 -162
- data/lib/yard/templates/engine.rb +186 -186
- data/lib/yard/templates/erb_cache.rb +23 -23
- data/lib/yard/templates/helpers/base_helper.rb +215 -215
- data/lib/yard/templates/helpers/filter_helper.rb +27 -27
- data/lib/yard/templates/helpers/html_helper.rb +646 -642
- data/lib/yard/templates/helpers/html_syntax_highlight_helper.rb +78 -78
- data/lib/yard/templates/helpers/markup/rdoc_markdown.rb +23 -23
- data/lib/yard/templates/helpers/markup/rdoc_markup.rb +109 -109
- data/lib/yard/templates/helpers/markup_helper.rb +172 -172
- data/lib/yard/templates/helpers/method_helper.rb +75 -75
- data/lib/yard/templates/helpers/module_helper.rb +21 -21
- data/lib/yard/templates/helpers/text_helper.rb +112 -112
- data/lib/yard/templates/helpers/uml_helper.rb +47 -47
- data/lib/yard/templates/section.rb +105 -105
- data/lib/yard/templates/template.rb +418 -418
- data/lib/yard/templates/template_options.rb +92 -92
- data/lib/yard/verifier.rb +151 -151
- data/lib/yard/version.rb +3 -1
- data/spec/cli/command_parser_spec.rb +43 -43
- data/spec/cli/command_spec.rb +36 -36
- data/spec/cli/config_spec.rb +148 -148
- data/spec/cli/diff_spec.rb +254 -254
- data/spec/cli/display_spec.rb +30 -30
- data/spec/cli/gems_spec.rb +81 -81
- data/spec/cli/graph_spec.rb +18 -18
- data/spec/cli/help_spec.rb +22 -22
- data/spec/cli/i18n_spec.rb +107 -107
- data/spec/cli/list_spec.rb +8 -8
- data/spec/cli/markup_types_spec.rb +22 -22
- data/spec/cli/server_spec.rb +324 -324
- data/spec/cli/stats_spec.rb +96 -96
- data/spec/cli/yard_on_yard_spec.rb +38 -38
- data/spec/cli/yardoc_spec.rb +862 -849
- data/spec/cli/yri_spec.rb +101 -101
- data/spec/code_objects/base_spec.rb +470 -460
- data/spec/code_objects/class_object_spec.rb +226 -226
- data/spec/code_objects/code_object_list_spec.rb +36 -36
- data/spec/code_objects/constants_spec.rb +116 -116
- data/spec/code_objects/extra_file_object_spec.rb +160 -160
- data/spec/code_objects/macro_object_spec.rb +150 -150
- data/spec/code_objects/method_object_spec.rb +184 -184
- data/spec/code_objects/module_object_spec.rb +142 -142
- data/spec/code_objects/namespace_object_spec.rb +171 -171
- data/spec/code_objects/proxy_spec.rb +141 -141
- data/spec/code_objects/spec_helper.rb +3 -3
- data/spec/config_spec.rb +171 -171
- data/spec/core_ext/array_spec.rb +13 -13
- data/spec/core_ext/file_spec.rb +72 -72
- data/spec/core_ext/hash_spec.rb +14 -14
- data/spec/core_ext/insertion_spec.rb +37 -37
- data/spec/core_ext/module_spec.rb +15 -15
- data/spec/core_ext/string_spec.rb +42 -42
- data/spec/core_ext/symbol_hash_spec.rb +89 -89
- data/spec/docstring_parser_spec.rb +280 -262
- data/spec/docstring_spec.rb +373 -364
- data/spec/examples.txt +1875 -1871
- data/spec/handlers/alias_handler_spec.rb +82 -82
- data/spec/handlers/attribute_handler_spec.rb +96 -96
- data/spec/handlers/base_spec.rb +216 -216
- data/spec/handlers/c/alias_handler_spec.rb +34 -34
- data/spec/handlers/c/attribute_handler_spec.rb +41 -41
- data/spec/handlers/c/class_handler_spec.rb +78 -78
- data/spec/handlers/c/constant_handler_spec.rb +71 -71
- data/spec/handlers/c/init_handler_spec.rb +48 -48
- data/spec/handlers/c/method_handler_spec.rb +325 -325
- data/spec/handlers/c/mixin_handler_spec.rb +44 -44
- data/spec/handlers/c/module_handler_spec.rb +71 -71
- data/spec/handlers/c/override_comment_handler_spec.rb +47 -47
- data/spec/handlers/c/path_handler_spec.rb +36 -36
- data/spec/handlers/c/spec_helper.rb +23 -23
- data/spec/handlers/c/struct_handler_spec.rb +16 -16
- data/spec/handlers/class_condition_handler_spec.rb +87 -87
- data/spec/handlers/class_handler_spec.rb +247 -247
- data/spec/handlers/class_method_handler_shared_examples.rb +133 -133
- data/spec/handlers/class_variable_handler_spec.rb +12 -12
- data/spec/handlers/constant_handler_spec.rb +112 -112
- data/spec/handlers/decorator_handler_methods_spec.rb +393 -393
- data/spec/handlers/dsl_handler_spec.rb +219 -219
- data/spec/handlers/examples/alias_handler_001.rb.txt +45 -45
- data/spec/handlers/examples/attribute_handler_001.rb.txt +31 -31
- data/spec/handlers/examples/class_condition_handler_001.rb.txt +68 -68
- data/spec/handlers/examples/class_handler_001.rb.txt +120 -120
- data/spec/handlers/examples/class_variable_handler_001.rb.txt +9 -9
- data/spec/handlers/examples/constant_handler_001.rb.txt +35 -35
- data/spec/handlers/examples/dsl_handler_001.rb.txt +154 -154
- data/spec/handlers/examples/exception_handler_001.rb.txt +58 -58
- data/spec/handlers/examples/extend_handler_001.rb.txt +15 -15
- data/spec/handlers/examples/method_condition_handler_001.rb.txt +9 -9
- data/spec/handlers/examples/method_handler_001.rb.txt +128 -128
- data/spec/handlers/examples/mixin_handler_001.rb.txt +37 -37
- data/spec/handlers/examples/module_handler_001.rb.txt +29 -29
- data/spec/handlers/examples/private_constant_handler_001.rb.txt +8 -8
- data/spec/handlers/examples/process_handler_001.rb.txt +11 -11
- data/spec/handlers/examples/visibility_handler_001.rb.txt +35 -35
- data/spec/handlers/examples/yield_handler_001.rb.txt +54 -54
- data/spec/handlers/exception_handler_spec.rb +49 -49
- data/spec/handlers/extend_handler_spec.rb +24 -24
- data/spec/handlers/legacy_base_spec.rb +128 -128
- data/spec/handlers/method_condition_handler_spec.rb +15 -15
- data/spec/handlers/method_handler_spec.rb +190 -190
- data/spec/handlers/mixin_handler_spec.rb +56 -56
- data/spec/handlers/module_function_handler_spec.rb +106 -106
- data/spec/handlers/module_handler_spec.rb +35 -35
- data/spec/handlers/private_class_method_handler_spec.rb +11 -11
- data/spec/handlers/private_constant_handler_spec.rb +25 -25
- data/spec/handlers/processor_spec.rb +35 -35
- data/spec/handlers/public_class_method_handler_spec.rb +11 -11
- data/spec/handlers/ruby/base_spec.rb +95 -95
- data/spec/handlers/ruby/legacy/base_spec.rb +84 -84
- data/spec/handlers/spec_helper.rb +33 -33
- data/spec/handlers/visibility_handler_spec.rb +44 -44
- data/spec/handlers/yield_handler_spec.rb +52 -52
- data/spec/i18n/locale_spec.rb +81 -81
- data/spec/i18n/message_spec.rb +52 -52
- data/spec/i18n/messages_spec.rb +67 -67
- data/spec/i18n/pot_generator_spec.rb +295 -295
- data/spec/i18n/text_spec.rb +184 -184
- data/spec/logging_spec.rb +44 -44
- data/spec/options_spec.rb +171 -171
- data/spec/parser/base_spec.rb +24 -24
- data/spec/parser/c_parser_spec.rb +236 -223
- data/spec/parser/examples/array.c.txt +6267 -6267
- data/spec/parser/examples/example1.rb.txt +7 -7
- data/spec/parser/examples/extrafile.c.txt +8 -8
- data/spec/parser/examples/file.c.txt +28 -0
- data/spec/parser/examples/multifile.c.txt +22 -22
- data/spec/parser/examples/namespace.cpp.txt +68 -68
- data/spec/parser/examples/override.c.txt +424 -424
- data/spec/parser/examples/parse_in_order_001.rb.txt +2 -2
- data/spec/parser/examples/parse_in_order_002.rb.txt +1 -1
- data/spec/parser/examples/tag_handler_001.rb.txt +7 -7
- data/spec/parser/ruby/ast_node_spec.rb +33 -33
- data/spec/parser/ruby/legacy/statement_list_spec.rb +299 -299
- data/spec/parser/ruby/legacy/token_list_spec.rb +79 -79
- data/spec/parser/ruby/ruby_parser_spec.rb +508 -508
- data/spec/parser/ruby/token_resolver_spec.rb +165 -165
- data/spec/parser/source_parser_spec.rb +727 -727
- data/spec/parser/tag_parsing_spec.rb +17 -17
- data/spec/rake/yardoc_task_spec.rb +118 -118
- data/spec/registry_spec.rb +463 -463
- data/spec/registry_store_spec.rb +316 -316
- data/spec/rubygems/doc_manager_spec.rb +112 -112
- data/spec/serializers/data/serialized_yardoc/checksums +1 -1
- data/spec/serializers/file_system_serializer_spec.rb +145 -145
- data/spec/serializers/spec_helper.rb +2 -2
- data/spec/serializers/yardoc_serializer_spec.rb +78 -78
- data/spec/server/adapter_spec.rb +39 -39
- data/spec/server/commands/base_spec.rb +91 -91
- data/spec/server/commands/library_command_spec.rb +39 -39
- data/spec/server/doc_server_helper_spec.rb +72 -72
- data/spec/server/doc_server_serializer_spec.rb +60 -60
- data/spec/server/rack_adapter_spec.rb +21 -21
- data/spec/server/router_spec.rb +123 -123
- data/spec/server/spec_helper.rb +22 -22
- data/spec/server/static_caching_spec.rb +47 -47
- data/spec/server/webrick_servlet_spec.rb +20 -20
- data/spec/server_spec.rb +19 -19
- data/spec/spec_helper.rb +212 -212
- data/spec/tags/default_factory_spec.rb +168 -168
- data/spec/tags/default_tag_spec.rb +11 -11
- data/spec/tags/directives_spec.rb +463 -463
- data/spec/tags/library_spec.rb +48 -48
- data/spec/tags/overload_tag_spec.rb +53 -53
- data/spec/tags/ref_tag_list_spec.rb +53 -53
- data/spec/tags/types_explainer_spec.rb +203 -203
- data/spec/templates/class_spec.rb +45 -45
- data/spec/templates/constant_spec.rb +41 -41
- data/spec/templates/engine_spec.rb +131 -131
- data/spec/templates/examples/class001.html +308 -308
- data/spec/templates/examples/class001.txt +36 -36
- data/spec/templates/examples/class002.html +39 -39
- data/spec/templates/examples/constant001.txt +24 -24
- data/spec/templates/examples/constant002.txt +6 -6
- data/spec/templates/examples/constant003.txt +10 -10
- data/spec/templates/examples/method001.html +137 -137
- data/spec/templates/examples/method001.txt +35 -35
- data/spec/templates/examples/method002.html +91 -91
- data/spec/templates/examples/method002.txt +20 -20
- data/spec/templates/examples/method003.html +165 -165
- data/spec/templates/examples/method003.txt +45 -45
- data/spec/templates/examples/method004.html +48 -48
- data/spec/templates/examples/method004.txt +10 -10
- data/spec/templates/examples/method005.html +105 -105
- data/spec/templates/examples/method005.txt +33 -33
- data/spec/templates/examples/method006.html +107 -107
- data/spec/templates/examples/method006.txt +20 -20
- data/spec/templates/examples/module001.dot +33 -33
- data/spec/templates/examples/module001.html +833 -833
- data/spec/templates/examples/module001.txt +33 -33
- data/spec/templates/examples/module002.html +341 -341
- data/spec/templates/examples/module003.html +202 -202
- data/spec/templates/examples/module004.html +394 -394
- data/spec/templates/examples/module005.html +81 -81
- data/spec/templates/examples/tag001.txt +82 -82
- data/spec/templates/helpers/base_helper_spec.rb +171 -171
- data/spec/templates/helpers/html_helper_spec.rb +668 -653
- data/spec/templates/helpers/html_syntax_highlight_helper_spec.rb +65 -65
- data/spec/templates/helpers/markup/rdoc_markup_spec.rb +84 -84
- data/spec/templates/helpers/markup_helper_spec.rb +136 -136
- data/spec/templates/helpers/method_helper_spec.rb +107 -107
- data/spec/templates/helpers/module_helper_spec.rb +35 -35
- data/spec/templates/helpers/shared_signature_examples.rb +126 -126
- data/spec/templates/helpers/text_helper_spec.rb +65 -65
- data/spec/templates/method_spec.rb +118 -118
- data/spec/templates/module_spec.rb +203 -203
- data/spec/templates/onefile_spec.rb +66 -66
- data/spec/templates/section_spec.rb +144 -144
- data/spec/templates/spec_helper.rb +76 -76
- data/spec/templates/tag_spec.rb +52 -52
- data/spec/templates/template_spec.rb +410 -410
- data/spec/verifier_spec.rb +106 -106
- data/templates/default/class/dot/setup.rb +7 -7
- data/templates/default/class/dot/superklass.erb +2 -2
- data/templates/default/class/html/constructor_details.erb +8 -8
- data/templates/default/class/html/setup.rb +2 -2
- data/templates/default/class/html/subclasses.erb +4 -4
- data/templates/default/class/setup.rb +36 -36
- data/templates/default/class/text/setup.rb +12 -12
- data/templates/default/class/text/subclasses.erb +5 -5
- data/templates/default/constant/text/header.erb +11 -11
- data/templates/default/constant/text/setup.rb +4 -4
- data/templates/default/docstring/html/abstract.erb +4 -4
- data/templates/default/docstring/html/deprecated.erb +1 -1
- data/templates/default/docstring/html/index.erb +5 -5
- data/templates/default/docstring/html/note.erb +6 -6
- data/templates/default/docstring/html/private.erb +4 -4
- data/templates/default/docstring/html/text.erb +1 -1
- data/templates/default/docstring/html/todo.erb +6 -6
- data/templates/default/docstring/setup.rb +52 -52
- data/templates/default/docstring/text/abstract.erb +2 -2
- data/templates/default/docstring/text/deprecated.erb +2 -2
- data/templates/default/docstring/text/index.erb +2 -2
- data/templates/default/docstring/text/note.erb +3 -3
- data/templates/default/docstring/text/private.erb +2 -2
- data/templates/default/docstring/text/text.erb +1 -1
- data/templates/default/docstring/text/todo.erb +3 -3
- data/templates/default/fulldoc/html/css/full_list.css +58 -58
- data/templates/default/fulldoc/html/css/style.css +496 -496
- data/templates/default/fulldoc/html/frames.erb +17 -17
- data/templates/default/fulldoc/html/full_list.erb +37 -37
- data/templates/default/fulldoc/html/full_list_class.erb +2 -2
- data/templates/default/fulldoc/html/full_list_file.erb +7 -7
- data/templates/default/fulldoc/html/full_list_method.erb +10 -10
- data/templates/default/fulldoc/html/js/app.js +292 -292
- data/templates/default/fulldoc/html/js/full_list.js +216 -216
- data/templates/default/fulldoc/html/js/jquery.js +3 -3
- data/templates/default/fulldoc/html/setup.rb +241 -241
- data/templates/default/layout/dot/header.erb +5 -5
- data/templates/default/layout/dot/setup.rb +15 -15
- data/templates/default/layout/html/breadcrumb.erb +11 -11
- data/templates/default/layout/html/files.erb +11 -11
- data/templates/default/layout/html/footer.erb +5 -5
- data/templates/default/layout/html/headers.erb +15 -15
- data/templates/default/layout/html/index.erb +2 -2
- data/templates/default/layout/html/layout.erb +23 -23
- data/templates/default/layout/html/listing.erb +4 -4
- data/templates/default/layout/html/objects.erb +32 -32
- data/templates/default/layout/html/script_setup.erb +4 -4
- data/templates/default/layout/html/search.erb +12 -12
- data/templates/default/layout/html/setup.rb +89 -89
- data/templates/default/method/html/header.erb +16 -16
- data/templates/default/method/setup.rb +4 -4
- data/templates/default/method_details/html/header.erb +2 -2
- data/templates/default/method_details/html/method_signature.erb +24 -24
- data/templates/default/method_details/html/source.erb +9 -9
- data/templates/default/method_details/setup.rb +11 -11
- data/templates/default/method_details/text/header.erb +10 -10
- data/templates/default/method_details/text/method_signature.erb +12 -12
- data/templates/default/method_details/text/setup.rb +11 -11
- data/templates/default/module/dot/child.erb +1 -1
- data/templates/default/module/dot/dependencies.erb +2 -2
- data/templates/default/module/dot/header.erb +6 -6
- data/templates/default/module/dot/info.erb +13 -13
- data/templates/default/module/dot/setup.rb +15 -15
- data/templates/default/module/html/attribute_details.erb +10 -10
- data/templates/default/module/html/attribute_summary.erb +8 -8
- data/templates/default/module/html/box_info.erb +43 -43
- data/templates/default/module/html/children.erb +8 -8
- data/templates/default/module/html/constant_summary.erb +17 -17
- data/templates/default/module/html/defines.erb +2 -2
- data/templates/default/module/html/header.erb +5 -5
- data/templates/default/module/html/inherited_attributes.erb +14 -14
- data/templates/default/module/html/inherited_constants.erb +8 -8
- data/templates/default/module/html/inherited_methods.erb +18 -18
- data/templates/default/module/html/item_summary.erb +40 -40
- data/templates/default/module/html/method_details_list.erb +9 -9
- data/templates/default/module/html/method_summary.erb +13 -13
- data/templates/default/module/html/methodmissing.erb +12 -12
- data/templates/default/module/setup.rb +167 -167
- data/templates/default/module/text/children.erb +9 -9
- data/templates/default/module/text/class_meths_list.erb +7 -7
- data/templates/default/module/text/extends.erb +7 -7
- data/templates/default/module/text/header.erb +7 -7
- data/templates/default/module/text/includes.erb +7 -7
- data/templates/default/module/text/instance_meths_list.erb +7 -7
- data/templates/default/module/text/setup.rb +13 -13
- data/templates/default/onefile/html/files.erb +4 -4
- data/templates/default/onefile/html/headers.erb +6 -6
- data/templates/default/onefile/html/layout.erb +17 -17
- data/templates/default/onefile/html/readme.erb +2 -2
- data/templates/default/onefile/html/setup.rb +62 -62
- data/templates/default/root/dot/child.erb +2 -2
- data/templates/default/root/dot/setup.rb +6 -6
- data/templates/default/root/html/setup.rb +2 -2
- data/templates/default/tags/html/example.erb +10 -10
- data/templates/default/tags/html/index.erb +2 -2
- data/templates/default/tags/html/option.erb +24 -24
- data/templates/default/tags/html/overload.erb +13 -13
- data/templates/default/tags/html/see.erb +7 -7
- data/templates/default/tags/html/tag.erb +20 -20
- data/templates/default/tags/setup.rb +57 -57
- data/templates/default/tags/text/example.erb +12 -12
- data/templates/default/tags/text/index.erb +1 -1
- data/templates/default/tags/text/option.erb +20 -20
- data/templates/default/tags/text/overload.erb +19 -19
- data/templates/default/tags/text/see.erb +11 -11
- data/templates/default/tags/text/tag.erb +13 -13
- data/templates/guide/class/html/setup.rb +2 -2
- data/templates/guide/docstring/html/setup.rb +2 -2
- data/templates/guide/fulldoc/html/css/style.css +108 -108
- data/templates/guide/fulldoc/html/js/app.js +33 -33
- data/templates/guide/fulldoc/html/setup.rb +74 -74
- data/templates/guide/layout/html/layout.erb +81 -81
- data/templates/guide/layout/html/setup.rb +25 -25
- data/templates/guide/method/html/header.erb +17 -17
- data/templates/guide/method/html/setup.rb +22 -22
- data/templates/guide/module/html/header.erb +6 -6
- data/templates/guide/module/html/method_list.erb +4 -4
- data/templates/guide/module/html/setup.rb +27 -27
- data/templates/guide/onefile/html/files.erb +4 -4
- data/templates/guide/onefile/html/setup.rb +6 -6
- data/templates/guide/onefile/html/toc.erb +3 -3
- data/templates/guide/tags/html/setup.rb +9 -9
- data/yard.gemspec +43 -43
- metadata +4 -4
@@ -1,240 +1,240 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
module YARD
|
3
|
-
module CodeObjects
|
4
|
-
# A special type of +NoMethodError+ when raised from a {Proxy}
|
5
|
-
class ProxyMethodError < NoMethodError; end
|
6
|
-
|
7
|
-
# @private
|
8
|
-
PROXY_MATCH = /(?:#{NSEPQ}|#{ISEPQ}|#{CSEPQ})([^#{Regexp.quote(
|
9
|
-
(NSEP + ISEP + CSEP).split('').uniq.join
|
10
|
-
)}]+)$/
|
11
|
-
|
12
|
-
# The Proxy class is a way to lazily resolve code objects in
|
13
|
-
# cases where the object may not yet exist. A proxy simply stores
|
14
|
-
# an unresolved path until a method is called on the object, at which
|
15
|
-
# point it does a lookup using {Registry.resolve}. If the object is
|
16
|
-
# not found, a warning is raised and {ProxyMethodError} might be raised.
|
17
|
-
#
|
18
|
-
# @example Creates a Proxy to the String class from a module
|
19
|
-
# # When the String class is parsed this method will
|
20
|
-
# # begin to act like the String ClassObject.
|
21
|
-
# Proxy.new(mymoduleobj, "String")
|
22
|
-
# @see Registry.resolve
|
23
|
-
# @see ProxyMethodError
|
24
|
-
class Proxy
|
25
|
-
def self.===(other) other.is_a?(self) end
|
26
|
-
|
27
|
-
attr_reader :namespace
|
28
|
-
alias parent namespace
|
29
|
-
|
30
|
-
# Creates a new Proxy
|
31
|
-
#
|
32
|
-
# @raise [ArgumentError] if namespace is not a NamespaceObject
|
33
|
-
# @return [Proxy] self
|
34
|
-
def initialize(namespace, name, type = nil)
|
35
|
-
namespace = Registry.root if !namespace || namespace == :root
|
36
|
-
|
37
|
-
if name =~ /^#{NSEPQ}/
|
38
|
-
namespace = Registry.root
|
39
|
-
name = name[2..-1]
|
40
|
-
end
|
41
|
-
|
42
|
-
if name =~ PROXY_MATCH
|
43
|
-
@orignamespace = namespace
|
44
|
-
@origname = name
|
45
|
-
@imethod = true if name.include? ISEP
|
46
|
-
namespace = Proxy.new(namespace, $`) unless $`.empty?
|
47
|
-
name = $1
|
48
|
-
else
|
49
|
-
@orignamespace = nil
|
50
|
-
@origname = nil
|
51
|
-
@imethod = nil
|
52
|
-
end
|
53
|
-
|
54
|
-
@name = name.to_sym
|
55
|
-
@namespace = namespace
|
56
|
-
@obj = nil
|
57
|
-
@imethod ||= nil
|
58
|
-
self.type = type
|
59
|
-
|
60
|
-
if @namespace.is_a?(ConstantObject)
|
61
|
-
@origname = nil # forget these for a constant
|
62
|
-
@orignamespace = nil
|
63
|
-
@namespace = Proxy.new(@namespace.namespace, @namespace.value)
|
64
|
-
end
|
65
|
-
|
66
|
-
unless @namespace.is_a?(NamespaceObject) || @namespace.is_a?(Proxy)
|
67
|
-
raise ArgumentError, "Invalid namespace object: #{namespace}"
|
68
|
-
end
|
69
|
-
|
70
|
-
# If the name begins with "::" (like "::String")
|
71
|
-
# this is definitely a root level object, so
|
72
|
-
# remove the namespace and attach it to the root
|
73
|
-
if @name =~ /^#{NSEPQ}/
|
74
|
-
@name.gsub!(/^#{NSEPQ}/, '')
|
75
|
-
@namespace = Registry.root
|
76
|
-
end
|
77
|
-
end
|
78
|
-
|
79
|
-
# (see Base#name)
|
80
|
-
def name(prefix = false)
|
81
|
-
prefix ? "#{@imethod && ISEP}#{@name}" : @name
|
82
|
-
end
|
83
|
-
|
84
|
-
# Returns a text representation of the Proxy
|
85
|
-
# @return [String] the object's #inspect method or P(OBJECTPATH)
|
86
|
-
def inspect
|
87
|
-
to_obj ? to_obj.inspect : "P(#{path})"
|
88
|
-
end
|
89
|
-
|
90
|
-
# If the proxy resolves to an object, returns its path, otherwise
|
91
|
-
# guesses at the correct path using the original namespace and name.
|
92
|
-
#
|
93
|
-
# @return [String] the assumed path of the proxy (or the real path
|
94
|
-
# of the resolved object)
|
95
|
-
def path
|
96
|
-
to_obj ? to_obj.path : proxy_path
|
97
|
-
end
|
98
|
-
alias to_s path
|
99
|
-
alias to_str path
|
100
|
-
alias title path
|
101
|
-
|
102
|
-
# @return [Boolean]
|
103
|
-
def is_a?(klass)
|
104
|
-
to_obj ? to_obj.is_a?(klass) : self.class <= klass
|
105
|
-
end
|
106
|
-
|
107
|
-
# @return [Boolean]
|
108
|
-
def ===(other)
|
109
|
-
to_obj ? to_obj === other : self.class <= other.class
|
110
|
-
end
|
111
|
-
|
112
|
-
# @return [Boolean]
|
113
|
-
def <=>(other)
|
114
|
-
if other.respond_to? :path
|
115
|
-
path <=> other.path
|
116
|
-
else
|
117
|
-
false
|
118
|
-
end
|
119
|
-
end
|
120
|
-
|
121
|
-
# @return [Boolean]
|
122
|
-
def equal?(other)
|
123
|
-
if other.respond_to? :path
|
124
|
-
path == other.path
|
125
|
-
else
|
126
|
-
false
|
127
|
-
end
|
128
|
-
end
|
129
|
-
alias == equal?
|
130
|
-
|
131
|
-
# @return [Integer] the object's hash value (for equality checking)
|
132
|
-
def hash; path.hash end
|
133
|
-
|
134
|
-
# Returns the class name of the object the proxy is mimicking, if
|
135
|
-
# resolved. Otherwise returns +Proxy+.
|
136
|
-
# @return [Class] the resolved object's class or +Proxy+
|
137
|
-
def class
|
138
|
-
to_obj ? to_obj.class : Proxy
|
139
|
-
end
|
140
|
-
|
141
|
-
# Returns the type of the proxy. If it cannot be resolved at the
|
142
|
-
# time of the call, it will either return the inferred proxy type
|
143
|
-
# (see {#type=}) or +:proxy+
|
144
|
-
# @return [Symbol] the Proxy's type
|
145
|
-
# @see #type=
|
146
|
-
def type
|
147
|
-
to_obj ? to_obj.type : @type || :proxy
|
148
|
-
end
|
149
|
-
|
150
|
-
# Allows a parser to infer the type of the proxy by its path.
|
151
|
-
# @param [#to_sym] type the proxy's inferred type
|
152
|
-
# @return [void]
|
153
|
-
def type=(type) @type = type ? type.to_sym : nil end
|
154
|
-
|
155
|
-
# @return [Boolean]
|
156
|
-
def instance_of?(klass)
|
157
|
-
self.class == klass
|
158
|
-
end
|
159
|
-
|
160
|
-
# @return [Boolean]
|
161
|
-
def kind_of?(klass)
|
162
|
-
self.class <= klass
|
163
|
-
end
|
164
|
-
|
165
|
-
# @return [Boolean]
|
166
|
-
def respond_to?(meth, include_private = false)
|
167
|
-
to_obj ? to_obj.respond_to?(meth, include_private) : super
|
168
|
-
end
|
169
|
-
|
170
|
-
# Dispatches the method to the resolved object.
|
171
|
-
#
|
172
|
-
# @raise [ProxyMethodError] if the proxy cannot find the real object
|
173
|
-
def method_missing(meth, *args, &block)
|
174
|
-
if to_obj
|
175
|
-
to_obj.__send__(meth, *args, &block)
|
176
|
-
else
|
177
|
-
log.warn "Load Order / Name Resolution Problem on #{path}:\n" \
|
178
|
-
"-\n" \
|
179
|
-
"Something is trying to call #{meth} on object #{path} before it has been recognized.\n" \
|
180
|
-
"This error usually means that you need to modify the order in which you parse files\n" \
|
181
|
-
"so that #{path} is parsed before methods or other objects attempt to access it.\n" \
|
182
|
-
"-\n" \
|
183
|
-
"YARD will recover from this error and continue to parse but you *may* have problems\n" \
|
184
|
-
"with your generated documentation. You should probably fix this.\n" \
|
185
|
-
"-\n"
|
186
|
-
begin
|
187
|
-
super
|
188
|
-
rescue NoMethodError
|
189
|
-
raise ProxyMethodError, "Proxy cannot call method ##{meth} on object '#{path}'"
|
190
|
-
end
|
191
|
-
end
|
192
|
-
end
|
193
|
-
|
194
|
-
# This class is never a root object
|
195
|
-
def root?; false end
|
196
|
-
|
197
|
-
private
|
198
|
-
|
199
|
-
# @note this method fixes a bug in 1.9.2: http://gist.github.com/437136
|
200
|
-
def to_ary; nil end
|
201
|
-
|
202
|
-
# Attempts to find the object that this unresolved object
|
203
|
-
# references by checking if any objects by this name are
|
204
|
-
# registered all the way up the namespace tree.
|
205
|
-
#
|
206
|
-
# @return [Base, nil] the registered code object or nil
|
207
|
-
def to_obj
|
208
|
-
return @obj if @obj
|
209
|
-
@obj = Registry.resolve(@namespace, (@imethod ? ISEP : '') + @name.to_s, false, false, @type)
|
210
|
-
if @obj
|
211
|
-
if @origname && @origname.include?("::") && !@obj.path.include?(@origname)
|
212
|
-
# the object's path should include the original proxy namespace,
|
213
|
-
# otherwise it's (probably) not the right object.
|
214
|
-
@obj = nil
|
215
|
-
else
|
216
|
-
@namespace = @obj.namespace
|
217
|
-
@name = @obj.name
|
218
|
-
end
|
219
|
-
end
|
220
|
-
@obj
|
221
|
-
end
|
222
|
-
|
223
|
-
def proxy_path
|
224
|
-
if @namespace.root?
|
225
|
-
(@imethod ? ISEP : "") + name.to_s
|
226
|
-
elsif @origname
|
227
|
-
if @origname =~ CONSTANTSTART
|
228
|
-
@origname
|
229
|
-
else
|
230
|
-
[namespace.path, @origname].join
|
231
|
-
end
|
232
|
-
elsif name.to_s =~ CONSTANTSTART
|
233
|
-
name.to_s
|
234
|
-
else # class meth?
|
235
|
-
[namespace.path, name.to_s].join(CSEP)
|
236
|
-
end
|
237
|
-
end
|
238
|
-
end
|
239
|
-
end
|
240
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
module YARD
|
3
|
+
module CodeObjects
|
4
|
+
# A special type of +NoMethodError+ when raised from a {Proxy}
|
5
|
+
class ProxyMethodError < NoMethodError; end
|
6
|
+
|
7
|
+
# @private
|
8
|
+
PROXY_MATCH = /(?:#{NSEPQ}|#{ISEPQ}|#{CSEPQ})([^#{Regexp.quote(
|
9
|
+
(NSEP + ISEP + CSEP).split('').uniq.join
|
10
|
+
)}]+)$/
|
11
|
+
|
12
|
+
# The Proxy class is a way to lazily resolve code objects in
|
13
|
+
# cases where the object may not yet exist. A proxy simply stores
|
14
|
+
# an unresolved path until a method is called on the object, at which
|
15
|
+
# point it does a lookup using {Registry.resolve}. If the object is
|
16
|
+
# not found, a warning is raised and {ProxyMethodError} might be raised.
|
17
|
+
#
|
18
|
+
# @example Creates a Proxy to the String class from a module
|
19
|
+
# # When the String class is parsed this method will
|
20
|
+
# # begin to act like the String ClassObject.
|
21
|
+
# Proxy.new(mymoduleobj, "String")
|
22
|
+
# @see Registry.resolve
|
23
|
+
# @see ProxyMethodError
|
24
|
+
class Proxy
|
25
|
+
def self.===(other) other.is_a?(self) end
|
26
|
+
|
27
|
+
attr_reader :namespace
|
28
|
+
alias parent namespace
|
29
|
+
|
30
|
+
# Creates a new Proxy
|
31
|
+
#
|
32
|
+
# @raise [ArgumentError] if namespace is not a NamespaceObject
|
33
|
+
# @return [Proxy] self
|
34
|
+
def initialize(namespace, name, type = nil)
|
35
|
+
namespace = Registry.root if !namespace || namespace == :root
|
36
|
+
|
37
|
+
if name =~ /^#{NSEPQ}/
|
38
|
+
namespace = Registry.root
|
39
|
+
name = name[2..-1]
|
40
|
+
end
|
41
|
+
|
42
|
+
if name =~ PROXY_MATCH
|
43
|
+
@orignamespace = namespace
|
44
|
+
@origname = name
|
45
|
+
@imethod = true if name.include? ISEP
|
46
|
+
namespace = Proxy.new(namespace, $`) unless $`.empty?
|
47
|
+
name = $1
|
48
|
+
else
|
49
|
+
@orignamespace = nil
|
50
|
+
@origname = nil
|
51
|
+
@imethod = nil
|
52
|
+
end
|
53
|
+
|
54
|
+
@name = name.to_sym
|
55
|
+
@namespace = namespace
|
56
|
+
@obj = nil
|
57
|
+
@imethod ||= nil
|
58
|
+
self.type = type
|
59
|
+
|
60
|
+
if @namespace.is_a?(ConstantObject)
|
61
|
+
@origname = nil # forget these for a constant
|
62
|
+
@orignamespace = nil
|
63
|
+
@namespace = Proxy.new(@namespace.namespace, @namespace.value)
|
64
|
+
end
|
65
|
+
|
66
|
+
unless @namespace.is_a?(NamespaceObject) || @namespace.is_a?(Proxy)
|
67
|
+
raise ArgumentError, "Invalid namespace object: #{namespace}"
|
68
|
+
end
|
69
|
+
|
70
|
+
# If the name begins with "::" (like "::String")
|
71
|
+
# this is definitely a root level object, so
|
72
|
+
# remove the namespace and attach it to the root
|
73
|
+
if @name =~ /^#{NSEPQ}/
|
74
|
+
@name.gsub!(/^#{NSEPQ}/, '')
|
75
|
+
@namespace = Registry.root
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
# (see Base#name)
|
80
|
+
def name(prefix = false)
|
81
|
+
prefix ? "#{@imethod && ISEP}#{@name}" : @name
|
82
|
+
end
|
83
|
+
|
84
|
+
# Returns a text representation of the Proxy
|
85
|
+
# @return [String] the object's #inspect method or P(OBJECTPATH)
|
86
|
+
def inspect
|
87
|
+
to_obj ? to_obj.inspect : "P(#{path})"
|
88
|
+
end
|
89
|
+
|
90
|
+
# If the proxy resolves to an object, returns its path, otherwise
|
91
|
+
# guesses at the correct path using the original namespace and name.
|
92
|
+
#
|
93
|
+
# @return [String] the assumed path of the proxy (or the real path
|
94
|
+
# of the resolved object)
|
95
|
+
def path
|
96
|
+
to_obj ? to_obj.path : proxy_path
|
97
|
+
end
|
98
|
+
alias to_s path
|
99
|
+
alias to_str path
|
100
|
+
alias title path
|
101
|
+
|
102
|
+
# @return [Boolean]
|
103
|
+
def is_a?(klass)
|
104
|
+
to_obj ? to_obj.is_a?(klass) : self.class <= klass
|
105
|
+
end
|
106
|
+
|
107
|
+
# @return [Boolean]
|
108
|
+
def ===(other)
|
109
|
+
to_obj ? to_obj === other : self.class <= other.class
|
110
|
+
end
|
111
|
+
|
112
|
+
# @return [Boolean]
|
113
|
+
def <=>(other)
|
114
|
+
if other.respond_to? :path
|
115
|
+
path <=> other.path
|
116
|
+
else
|
117
|
+
false
|
118
|
+
end
|
119
|
+
end
|
120
|
+
|
121
|
+
# @return [Boolean]
|
122
|
+
def equal?(other)
|
123
|
+
if other.respond_to? :path
|
124
|
+
path == other.path
|
125
|
+
else
|
126
|
+
false
|
127
|
+
end
|
128
|
+
end
|
129
|
+
alias == equal?
|
130
|
+
|
131
|
+
# @return [Integer] the object's hash value (for equality checking)
|
132
|
+
def hash; path.hash end
|
133
|
+
|
134
|
+
# Returns the class name of the object the proxy is mimicking, if
|
135
|
+
# resolved. Otherwise returns +Proxy+.
|
136
|
+
# @return [Class] the resolved object's class or +Proxy+
|
137
|
+
def class
|
138
|
+
to_obj ? to_obj.class : Proxy
|
139
|
+
end
|
140
|
+
|
141
|
+
# Returns the type of the proxy. If it cannot be resolved at the
|
142
|
+
# time of the call, it will either return the inferred proxy type
|
143
|
+
# (see {#type=}) or +:proxy+
|
144
|
+
# @return [Symbol] the Proxy's type
|
145
|
+
# @see #type=
|
146
|
+
def type
|
147
|
+
to_obj ? to_obj.type : @type || :proxy
|
148
|
+
end
|
149
|
+
|
150
|
+
# Allows a parser to infer the type of the proxy by its path.
|
151
|
+
# @param [#to_sym] type the proxy's inferred type
|
152
|
+
# @return [void]
|
153
|
+
def type=(type) @type = type ? type.to_sym : nil end
|
154
|
+
|
155
|
+
# @return [Boolean]
|
156
|
+
def instance_of?(klass)
|
157
|
+
self.class == klass
|
158
|
+
end
|
159
|
+
|
160
|
+
# @return [Boolean]
|
161
|
+
def kind_of?(klass)
|
162
|
+
self.class <= klass
|
163
|
+
end
|
164
|
+
|
165
|
+
# @return [Boolean]
|
166
|
+
def respond_to?(meth, include_private = false)
|
167
|
+
to_obj ? to_obj.respond_to?(meth, include_private) : super
|
168
|
+
end
|
169
|
+
|
170
|
+
# Dispatches the method to the resolved object.
|
171
|
+
#
|
172
|
+
# @raise [ProxyMethodError] if the proxy cannot find the real object
|
173
|
+
def method_missing(meth, *args, &block)
|
174
|
+
if to_obj
|
175
|
+
to_obj.__send__(meth, *args, &block)
|
176
|
+
else
|
177
|
+
log.warn "Load Order / Name Resolution Problem on #{path}:\n" \
|
178
|
+
"-\n" \
|
179
|
+
"Something is trying to call #{meth} on object #{path} before it has been recognized.\n" \
|
180
|
+
"This error usually means that you need to modify the order in which you parse files\n" \
|
181
|
+
"so that #{path} is parsed before methods or other objects attempt to access it.\n" \
|
182
|
+
"-\n" \
|
183
|
+
"YARD will recover from this error and continue to parse but you *may* have problems\n" \
|
184
|
+
"with your generated documentation. You should probably fix this.\n" \
|
185
|
+
"-\n"
|
186
|
+
begin
|
187
|
+
super
|
188
|
+
rescue NoMethodError
|
189
|
+
raise ProxyMethodError, "Proxy cannot call method ##{meth} on object '#{path}'"
|
190
|
+
end
|
191
|
+
end
|
192
|
+
end
|
193
|
+
|
194
|
+
# This class is never a root object
|
195
|
+
def root?; false end
|
196
|
+
|
197
|
+
private
|
198
|
+
|
199
|
+
# @note this method fixes a bug in 1.9.2: http://gist.github.com/437136
|
200
|
+
def to_ary; nil end
|
201
|
+
|
202
|
+
# Attempts to find the object that this unresolved object
|
203
|
+
# references by checking if any objects by this name are
|
204
|
+
# registered all the way up the namespace tree.
|
205
|
+
#
|
206
|
+
# @return [Base, nil] the registered code object or nil
|
207
|
+
def to_obj
|
208
|
+
return @obj if @obj
|
209
|
+
@obj = Registry.resolve(@namespace, (@imethod ? ISEP : '') + @name.to_s, false, false, @type)
|
210
|
+
if @obj
|
211
|
+
if @origname && @origname.include?("::") && !@obj.path.include?(@origname)
|
212
|
+
# the object's path should include the original proxy namespace,
|
213
|
+
# otherwise it's (probably) not the right object.
|
214
|
+
@obj = nil
|
215
|
+
else
|
216
|
+
@namespace = @obj.namespace
|
217
|
+
@name = @obj.name
|
218
|
+
end
|
219
|
+
end
|
220
|
+
@obj
|
221
|
+
end
|
222
|
+
|
223
|
+
def proxy_path
|
224
|
+
if @namespace.root?
|
225
|
+
(@imethod ? ISEP : "") + name.to_s
|
226
|
+
elsif @origname
|
227
|
+
if @origname =~ CONSTANTSTART
|
228
|
+
@origname
|
229
|
+
else
|
230
|
+
[namespace.path, @origname].join
|
231
|
+
end
|
232
|
+
elsif name.to_s =~ CONSTANTSTART
|
233
|
+
name.to_s
|
234
|
+
else # class meth?
|
235
|
+
[namespace.path, name.to_s].join(CSEP)
|
236
|
+
end
|
237
|
+
end
|
238
|
+
end
|
239
|
+
end
|
240
|
+
end
|