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,219 +1,219 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
require File.dirname(__FILE__) + '/spec_helper'
|
3
|
-
require 'ostruct'
|
4
|
-
|
5
|
-
RSpec.describe "YARD::Handlers::Ruby::#{LEGACY_PARSER ? "Legacy::" : ""}DSLHandler" do
|
6
|
-
before(:all) { parse_file :dsl_handler_001, __FILE__ }
|
7
|
-
|
8
|
-
it "creates a readable attribute when @!attribute r is found" do
|
9
|
-
obj = Registry.at('Foo#attr1')
|
10
|
-
expect(obj).not_to be nil
|
11
|
-
expect(obj).to be_reader
|
12
|
-
expect(obj.tag(:return).types).to eq ['Numeric']
|
13
|
-
expect(Registry.at('Foo#attr1=')).to be nil
|
14
|
-
end
|
15
|
-
|
16
|
-
it "creates a writable attribute when @!attribute w is found" do
|
17
|
-
obj = Registry.at('Foo#attr2=')
|
18
|
-
expect(obj).not_to be nil
|
19
|
-
expect(obj).to be_writer
|
20
|
-
expect(Registry.at('Foo#attr2')).to be nil
|
21
|
-
end
|
22
|
-
|
23
|
-
it "defaults to readwrite @!attribute" do
|
24
|
-
obj = Registry.at('Foo#attr3')
|
25
|
-
expect(obj).not_to be nil
|
26
|
-
expect(obj).to be_reader
|
27
|
-
obj = Registry.at('Foo#attr3=')
|
28
|
-
expect(obj).not_to be nil
|
29
|
-
expect(obj).to be_writer
|
30
|
-
end
|
31
|
-
|
32
|
-
it "allows @!attribute to define alternate method name" do
|
33
|
-
expect(Registry.at('Foo#attr4')).to be nil
|
34
|
-
expect(Registry.at('Foo#custom')).not_to be nil
|
35
|
-
end
|
36
|
-
|
37
|
-
it "defaults to creating an instance method for any DSL method with special tags" do
|
38
|
-
obj = Registry.at('Foo#implicit0')
|
39
|
-
expect(obj).not_to be nil
|
40
|
-
expect(obj.docstring).to eq "IMPLICIT METHOD!"
|
41
|
-
expect(obj.tag(:return).types).to eq ['String']
|
42
|
-
end
|
43
|
-
|
44
|
-
it "recognizes implicit docstring when it has scope tag" do
|
45
|
-
obj = Registry.at("Foo.implicit1")
|
46
|
-
expect(obj).not_to be nil
|
47
|
-
expect(obj.scope).to eq :class
|
48
|
-
end
|
49
|
-
|
50
|
-
it "recognizes implicit docstring when it has visibility tag" do
|
51
|
-
obj = Registry.at("Foo#implicit2")
|
52
|
-
expect(obj).not_to be nil
|
53
|
-
expect(obj.visibility).to eq :protected
|
54
|
-
end
|
55
|
-
|
56
|
-
it "does not recognize implicit docstring with any other normal tag" do
|
57
|
-
obj = Registry.at('Foo#implicit_invalid3')
|
58
|
-
expect(obj).to be nil
|
59
|
-
end
|
60
|
-
|
61
|
-
it "sets the method name when using @!method" do
|
62
|
-
obj = Registry.at('Foo.xyz')
|
63
|
-
expect(obj).not_to be nil
|
64
|
-
expect(obj.signature).to eq 'def xyz(a, b, c)'
|
65
|
-
expect(obj.parameters).to eq [['a', nil], ['b', nil], ['c', nil]]
|
66
|
-
expect(obj.source).to eq 'foo_bar'
|
67
|
-
expect(obj.docstring).to eq 'The foo method'
|
68
|
-
end
|
69
|
-
|
70
|
-
it "allows setting of @!scope" do
|
71
|
-
expect(Registry.at('Foo.xyz').scope).to eq :class
|
72
|
-
end
|
73
|
-
|
74
|
-
it "creates module function if @!scope is module" do
|
75
|
-
mod_c = Registry.at('Foo.modfunc1')
|
76
|
-
mod_i = Registry.at('Foo#modfunc1')
|
77
|
-
expect(mod_c.scope).to eq :class
|
78
|
-
expect(mod_i.visibility).to eq :private
|
79
|
-
end
|
80
|
-
|
81
|
-
it "allows setting of @!visibility" do
|
82
|
-
expect(Registry.at('Foo.xyz').visibility).to eq :protected
|
83
|
-
end
|
84
|
-
|
85
|
-
it "ignores DSL methods without tags" do
|
86
|
-
expect(Registry.at('Foo#implicit_invalid')).to be nil
|
87
|
-
end
|
88
|
-
|
89
|
-
it "accepts a DSL method without tags if it has hash_flag (##)" do
|
90
|
-
expect(Registry.at('Foo#implicit_valid')).not_to be nil
|
91
|
-
expect(Registry.at('Foo#implicit_invalid2')).to be nil
|
92
|
-
end
|
93
|
-
|
94
|
-
it "allows creation of macros" do
|
95
|
-
macro = CodeObjects::MacroObject.find('property')
|
96
|
-
expect(macro).not_to be nil
|
97
|
-
expect(macro).not_to be_attached
|
98
|
-
expect(macro.method_object).to be nil
|
99
|
-
end
|
100
|
-
|
101
|
-
it "handles macros with no parameters to expand" do
|
102
|
-
expect(Registry.at('Foo#none')).not_to be nil
|
103
|
-
expect(Registry.at('Baz#none').signature).to eq 'def none(foo, bar)'
|
104
|
-
end
|
105
|
-
|
106
|
-
it "expands $N on method definitions" do
|
107
|
-
expect(Registry.at('Foo#regular_meth').docstring).to eq 'a b c'
|
108
|
-
end
|
109
|
-
|
110
|
-
it "applies new macro docstrings on new objects" do
|
111
|
-
obj = Registry.at('Foo#name')
|
112
|
-
expect(obj).not_to be nil
|
113
|
-
expect(obj.source).to eq 'property :name, String, :a, :b, :c'
|
114
|
-
expect(obj.signature).to eq 'def name(a, b, c)'
|
115
|
-
expect(obj.docstring).to eq 'A property that is awesome.'
|
116
|
-
expect(obj.tag(:param).name).to eq 'a'
|
117
|
-
expect(obj.tag(:param).text).to eq 'first parameter'
|
118
|
-
expect(obj.tag(:return).types).to eq ['String']
|
119
|
-
expect(obj.tag(:return).text).to eq 'the property name'
|
120
|
-
end
|
121
|
-
|
122
|
-
it "allows reuse of named macros" do
|
123
|
-
obj = Registry.at('Foo#age')
|
124
|
-
expect(obj).not_to be nil
|
125
|
-
expect(obj.source).to eq 'property :age, Fixnum, :value'
|
126
|
-
expect(obj.signature).to eq 'def age(value)'
|
127
|
-
expect(obj.docstring).to eq 'A property that is awesome.'
|
128
|
-
expect(obj.tag(:param).name).to eq 'value'
|
129
|
-
expect(obj.tag(:param).text).to eq 'first parameter'
|
130
|
-
expect(obj.tag(:return).types).to eq ['Fixnum']
|
131
|
-
expect(obj.tag(:return).text).to eq 'the property age'
|
132
|
-
end
|
133
|
-
|
134
|
-
it "knows about method information on DSL with macro expansion" do
|
135
|
-
expect(Registry.at('Foo#right_name')).not_to be nil
|
136
|
-
expect(Registry.at('Foo#right_name').source).to eq 'implicit_with_different_method_name :wrong, :right'
|
137
|
-
expect(Registry.at('Foo#wrong_name')).to be nil
|
138
|
-
end
|
139
|
-
|
140
|
-
it "uses attached macros" do
|
141
|
-
macro = CodeObjects::MacroObject.find('parser')
|
142
|
-
expect(macro.macro_data).to eq "@!method $1(opts = {})\n@return NOTHING!"
|
143
|
-
expect(macro).not_to be nil
|
144
|
-
expect(macro).to be_attached
|
145
|
-
expect(macro.method_object).to eq P('Foo.parser')
|
146
|
-
obj = Registry.at('Foo#c_parser')
|
147
|
-
expect(obj).not_to be nil
|
148
|
-
expect(obj.docstring).to eq ""
|
149
|
-
expect(obj.signature).to eq "def c_parser(opts = {})"
|
150
|
-
expect(obj.docstring.tag(:return).text).to eq "NOTHING!"
|
151
|
-
end
|
152
|
-
|
153
|
-
it "appends docstring on DSL method to attached macro" do
|
154
|
-
obj = Registry.at('Foo#d_parser')
|
155
|
-
expect(obj).not_to be nil
|
156
|
-
expect(obj.docstring).to eq "Another docstring"
|
157
|
-
expect(obj.signature).to eq "def d_parser(opts = {})"
|
158
|
-
expect(obj.docstring.tag(:return).text).to eq "NOTHING!"
|
159
|
-
end
|
160
|
-
|
161
|
-
it "only uses attached macros on methods defined in inherited hierarchy" do
|
162
|
-
expect(Registry.at('Bar#x_parser')).to be nil
|
163
|
-
expect(Registry.at('Baz#y_parser')).not_to be nil
|
164
|
-
end
|
165
|
-
|
166
|
-
it "looks through mixins for attached macros" do
|
167
|
-
meth = Registry.at('Baz#mixin_method')
|
168
|
-
expect(meth).not_to be nil
|
169
|
-
expect(meth.docstring).to eq 'DSL method mixin_method'
|
170
|
-
end
|
171
|
-
|
172
|
-
it "handles top-level DSL methods" do
|
173
|
-
obj = Registry.at('#my_other_method')
|
174
|
-
expect(obj).not_to be nil
|
175
|
-
expect(obj.docstring).to eq "Docstring for method"
|
176
|
-
end
|
177
|
-
|
178
|
-
it "handles Constant.foo syntax" do
|
179
|
-
obj = Registry.at('#beep')
|
180
|
-
expect(obj).not_to be nil
|
181
|
-
expect(obj.signature).to eq 'def beep(a, b, c)'
|
182
|
-
end
|
183
|
-
|
184
|
-
it "expands attached macros in first DSL method" do
|
185
|
-
expect(Registry.at('DSLMethods#foo').docstring).to eq "Returns String for foo"
|
186
|
-
expect(Registry.at('DSLMethods#bar').docstring).to eq "Returns Integer for bar"
|
187
|
-
end
|
188
|
-
|
189
|
-
it "does not detect implicit macros with invalid method names" do
|
190
|
-
undoc_error <<-eof
|
191
|
-
##
|
192
|
-
# IMPLICIT METHOD THAT SHOULD
|
193
|
-
# NOT BE DETECTED
|
194
|
-
dsl_method '/foo/bar'
|
195
|
-
eof
|
196
|
-
end
|
197
|
-
|
198
|
-
it "warns on unparseable DSL statements" do
|
199
|
-
undoc_error "private(*foo(bar))"
|
200
|
-
end if HAVE_RIPPER
|
201
|
-
|
202
|
-
# @note Currently unsupported behavior. Overriding a macro on an alias will
|
203
|
-
# not work until macro lookups can be done by caller_method directly.
|
204
|
-
# @todo optimize MacroObject lookup to work by caller name, not macro name.
|
205
|
-
it "cannot attach a macro on alias of attached macro" do
|
206
|
-
expect(Registry.at('AliasTest#main_foo1')).not_to be nil
|
207
|
-
expect(Registry.at('AliasTest#alt_foo1')).to be nil
|
208
|
-
end if HAVE_RIPPER
|
209
|
-
|
210
|
-
it "searches attached macro's aliases for caller method match" do
|
211
|
-
expect(Registry.at('AliasTest#main_foo2')).not_to be nil
|
212
|
-
expect(Registry.at('AliasTest#alt_foo2')).to be nil
|
213
|
-
end if HAVE_RIPPER
|
214
|
-
|
215
|
-
it "does not create method object if directive data detected in expanded macro" do
|
216
|
-
expect(Registry.at('DirectiveMethods#Bar')).to be nil
|
217
|
-
expect(Registry.at('DirectiveMethods').mixins).to include P(:Bar)
|
218
|
-
end
|
219
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
require File.dirname(__FILE__) + '/spec_helper'
|
3
|
+
require 'ostruct'
|
4
|
+
|
5
|
+
RSpec.describe "YARD::Handlers::Ruby::#{LEGACY_PARSER ? "Legacy::" : ""}DSLHandler" do
|
6
|
+
before(:all) { parse_file :dsl_handler_001, __FILE__ }
|
7
|
+
|
8
|
+
it "creates a readable attribute when @!attribute r is found" do
|
9
|
+
obj = Registry.at('Foo#attr1')
|
10
|
+
expect(obj).not_to be nil
|
11
|
+
expect(obj).to be_reader
|
12
|
+
expect(obj.tag(:return).types).to eq ['Numeric']
|
13
|
+
expect(Registry.at('Foo#attr1=')).to be nil
|
14
|
+
end
|
15
|
+
|
16
|
+
it "creates a writable attribute when @!attribute w is found" do
|
17
|
+
obj = Registry.at('Foo#attr2=')
|
18
|
+
expect(obj).not_to be nil
|
19
|
+
expect(obj).to be_writer
|
20
|
+
expect(Registry.at('Foo#attr2')).to be nil
|
21
|
+
end
|
22
|
+
|
23
|
+
it "defaults to readwrite @!attribute" do
|
24
|
+
obj = Registry.at('Foo#attr3')
|
25
|
+
expect(obj).not_to be nil
|
26
|
+
expect(obj).to be_reader
|
27
|
+
obj = Registry.at('Foo#attr3=')
|
28
|
+
expect(obj).not_to be nil
|
29
|
+
expect(obj).to be_writer
|
30
|
+
end
|
31
|
+
|
32
|
+
it "allows @!attribute to define alternate method name" do
|
33
|
+
expect(Registry.at('Foo#attr4')).to be nil
|
34
|
+
expect(Registry.at('Foo#custom')).not_to be nil
|
35
|
+
end
|
36
|
+
|
37
|
+
it "defaults to creating an instance method for any DSL method with special tags" do
|
38
|
+
obj = Registry.at('Foo#implicit0')
|
39
|
+
expect(obj).not_to be nil
|
40
|
+
expect(obj.docstring).to eq "IMPLICIT METHOD!"
|
41
|
+
expect(obj.tag(:return).types).to eq ['String']
|
42
|
+
end
|
43
|
+
|
44
|
+
it "recognizes implicit docstring when it has scope tag" do
|
45
|
+
obj = Registry.at("Foo.implicit1")
|
46
|
+
expect(obj).not_to be nil
|
47
|
+
expect(obj.scope).to eq :class
|
48
|
+
end
|
49
|
+
|
50
|
+
it "recognizes implicit docstring when it has visibility tag" do
|
51
|
+
obj = Registry.at("Foo#implicit2")
|
52
|
+
expect(obj).not_to be nil
|
53
|
+
expect(obj.visibility).to eq :protected
|
54
|
+
end
|
55
|
+
|
56
|
+
it "does not recognize implicit docstring with any other normal tag" do
|
57
|
+
obj = Registry.at('Foo#implicit_invalid3')
|
58
|
+
expect(obj).to be nil
|
59
|
+
end
|
60
|
+
|
61
|
+
it "sets the method name when using @!method" do
|
62
|
+
obj = Registry.at('Foo.xyz')
|
63
|
+
expect(obj).not_to be nil
|
64
|
+
expect(obj.signature).to eq 'def xyz(a, b, c)'
|
65
|
+
expect(obj.parameters).to eq [['a', nil], ['b', nil], ['c', nil]]
|
66
|
+
expect(obj.source).to eq 'foo_bar'
|
67
|
+
expect(obj.docstring).to eq 'The foo method'
|
68
|
+
end
|
69
|
+
|
70
|
+
it "allows setting of @!scope" do
|
71
|
+
expect(Registry.at('Foo.xyz').scope).to eq :class
|
72
|
+
end
|
73
|
+
|
74
|
+
it "creates module function if @!scope is module" do
|
75
|
+
mod_c = Registry.at('Foo.modfunc1')
|
76
|
+
mod_i = Registry.at('Foo#modfunc1')
|
77
|
+
expect(mod_c.scope).to eq :class
|
78
|
+
expect(mod_i.visibility).to eq :private
|
79
|
+
end
|
80
|
+
|
81
|
+
it "allows setting of @!visibility" do
|
82
|
+
expect(Registry.at('Foo.xyz').visibility).to eq :protected
|
83
|
+
end
|
84
|
+
|
85
|
+
it "ignores DSL methods without tags" do
|
86
|
+
expect(Registry.at('Foo#implicit_invalid')).to be nil
|
87
|
+
end
|
88
|
+
|
89
|
+
it "accepts a DSL method without tags if it has hash_flag (##)" do
|
90
|
+
expect(Registry.at('Foo#implicit_valid')).not_to be nil
|
91
|
+
expect(Registry.at('Foo#implicit_invalid2')).to be nil
|
92
|
+
end
|
93
|
+
|
94
|
+
it "allows creation of macros" do
|
95
|
+
macro = CodeObjects::MacroObject.find('property')
|
96
|
+
expect(macro).not_to be nil
|
97
|
+
expect(macro).not_to be_attached
|
98
|
+
expect(macro.method_object).to be nil
|
99
|
+
end
|
100
|
+
|
101
|
+
it "handles macros with no parameters to expand" do
|
102
|
+
expect(Registry.at('Foo#none')).not_to be nil
|
103
|
+
expect(Registry.at('Baz#none').signature).to eq 'def none(foo, bar)'
|
104
|
+
end
|
105
|
+
|
106
|
+
it "expands $N on method definitions" do
|
107
|
+
expect(Registry.at('Foo#regular_meth').docstring).to eq 'a b c'
|
108
|
+
end
|
109
|
+
|
110
|
+
it "applies new macro docstrings on new objects" do
|
111
|
+
obj = Registry.at('Foo#name')
|
112
|
+
expect(obj).not_to be nil
|
113
|
+
expect(obj.source).to eq 'property :name, String, :a, :b, :c'
|
114
|
+
expect(obj.signature).to eq 'def name(a, b, c)'
|
115
|
+
expect(obj.docstring).to eq 'A property that is awesome.'
|
116
|
+
expect(obj.tag(:param).name).to eq 'a'
|
117
|
+
expect(obj.tag(:param).text).to eq 'first parameter'
|
118
|
+
expect(obj.tag(:return).types).to eq ['String']
|
119
|
+
expect(obj.tag(:return).text).to eq 'the property name'
|
120
|
+
end
|
121
|
+
|
122
|
+
it "allows reuse of named macros" do
|
123
|
+
obj = Registry.at('Foo#age')
|
124
|
+
expect(obj).not_to be nil
|
125
|
+
expect(obj.source).to eq 'property :age, Fixnum, :value'
|
126
|
+
expect(obj.signature).to eq 'def age(value)'
|
127
|
+
expect(obj.docstring).to eq 'A property that is awesome.'
|
128
|
+
expect(obj.tag(:param).name).to eq 'value'
|
129
|
+
expect(obj.tag(:param).text).to eq 'first parameter'
|
130
|
+
expect(obj.tag(:return).types).to eq ['Fixnum']
|
131
|
+
expect(obj.tag(:return).text).to eq 'the property age'
|
132
|
+
end
|
133
|
+
|
134
|
+
it "knows about method information on DSL with macro expansion" do
|
135
|
+
expect(Registry.at('Foo#right_name')).not_to be nil
|
136
|
+
expect(Registry.at('Foo#right_name').source).to eq 'implicit_with_different_method_name :wrong, :right'
|
137
|
+
expect(Registry.at('Foo#wrong_name')).to be nil
|
138
|
+
end
|
139
|
+
|
140
|
+
it "uses attached macros" do
|
141
|
+
macro = CodeObjects::MacroObject.find('parser')
|
142
|
+
expect(macro.macro_data).to eq "@!method $1(opts = {})\n@return NOTHING!"
|
143
|
+
expect(macro).not_to be nil
|
144
|
+
expect(macro).to be_attached
|
145
|
+
expect(macro.method_object).to eq P('Foo.parser')
|
146
|
+
obj = Registry.at('Foo#c_parser')
|
147
|
+
expect(obj).not_to be nil
|
148
|
+
expect(obj.docstring).to eq ""
|
149
|
+
expect(obj.signature).to eq "def c_parser(opts = {})"
|
150
|
+
expect(obj.docstring.tag(:return).text).to eq "NOTHING!"
|
151
|
+
end
|
152
|
+
|
153
|
+
it "appends docstring on DSL method to attached macro" do
|
154
|
+
obj = Registry.at('Foo#d_parser')
|
155
|
+
expect(obj).not_to be nil
|
156
|
+
expect(obj.docstring).to eq "Another docstring"
|
157
|
+
expect(obj.signature).to eq "def d_parser(opts = {})"
|
158
|
+
expect(obj.docstring.tag(:return).text).to eq "NOTHING!"
|
159
|
+
end
|
160
|
+
|
161
|
+
it "only uses attached macros on methods defined in inherited hierarchy" do
|
162
|
+
expect(Registry.at('Bar#x_parser')).to be nil
|
163
|
+
expect(Registry.at('Baz#y_parser')).not_to be nil
|
164
|
+
end
|
165
|
+
|
166
|
+
it "looks through mixins for attached macros" do
|
167
|
+
meth = Registry.at('Baz#mixin_method')
|
168
|
+
expect(meth).not_to be nil
|
169
|
+
expect(meth.docstring).to eq 'DSL method mixin_method'
|
170
|
+
end
|
171
|
+
|
172
|
+
it "handles top-level DSL methods" do
|
173
|
+
obj = Registry.at('#my_other_method')
|
174
|
+
expect(obj).not_to be nil
|
175
|
+
expect(obj.docstring).to eq "Docstring for method"
|
176
|
+
end
|
177
|
+
|
178
|
+
it "handles Constant.foo syntax" do
|
179
|
+
obj = Registry.at('#beep')
|
180
|
+
expect(obj).not_to be nil
|
181
|
+
expect(obj.signature).to eq 'def beep(a, b, c)'
|
182
|
+
end
|
183
|
+
|
184
|
+
it "expands attached macros in first DSL method" do
|
185
|
+
expect(Registry.at('DSLMethods#foo').docstring).to eq "Returns String for foo"
|
186
|
+
expect(Registry.at('DSLMethods#bar').docstring).to eq "Returns Integer for bar"
|
187
|
+
end
|
188
|
+
|
189
|
+
it "does not detect implicit macros with invalid method names" do
|
190
|
+
undoc_error <<-eof
|
191
|
+
##
|
192
|
+
# IMPLICIT METHOD THAT SHOULD
|
193
|
+
# NOT BE DETECTED
|
194
|
+
dsl_method '/foo/bar'
|
195
|
+
eof
|
196
|
+
end
|
197
|
+
|
198
|
+
it "warns on unparseable DSL statements" do
|
199
|
+
undoc_error "private(*foo(bar))"
|
200
|
+
end if HAVE_RIPPER
|
201
|
+
|
202
|
+
# @note Currently unsupported behavior. Overriding a macro on an alias will
|
203
|
+
# not work until macro lookups can be done by caller_method directly.
|
204
|
+
# @todo optimize MacroObject lookup to work by caller name, not macro name.
|
205
|
+
it "cannot attach a macro on alias of attached macro" do
|
206
|
+
expect(Registry.at('AliasTest#main_foo1')).not_to be nil
|
207
|
+
expect(Registry.at('AliasTest#alt_foo1')).to be nil
|
208
|
+
end if HAVE_RIPPER
|
209
|
+
|
210
|
+
it "searches attached macro's aliases for caller method match" do
|
211
|
+
expect(Registry.at('AliasTest#main_foo2')).not_to be nil
|
212
|
+
expect(Registry.at('AliasTest#alt_foo2')).to be nil
|
213
|
+
end if HAVE_RIPPER
|
214
|
+
|
215
|
+
it "does not create method object if directive data detected in expanded macro" do
|
216
|
+
expect(Registry.at('DirectiveMethods#Bar')).to be nil
|
217
|
+
expect(Registry.at('DirectiveMethods').mixins).to include P(:Bar)
|
218
|
+
end
|
219
|
+
end
|
@@ -1,46 +1,46 @@
|
|
1
|
-
module A
|
2
|
-
def a; end
|
3
|
-
alias_method :b, :a
|
4
|
-
alias_method :"cstrmeth", :"a"
|
5
|
-
|
6
|
-
# Handle keyword syntax too
|
7
|
-
alias :c :a
|
8
|
-
alias :"cstrkey" :a
|
9
|
-
alias d? a
|
10
|
-
alias [] a
|
11
|
-
alias []= a
|
12
|
-
alias -@ a
|
13
|
-
alias % a
|
14
|
-
alias * a
|
15
|
-
alias for a
|
16
|
-
alias ConstantName a
|
17
|
-
|
18
|
-
# Handle quoted symbols
|
19
|
-
alias :'foo' :'a'
|
20
|
-
end
|
21
|
-
|
22
|
-
class C
|
23
|
-
def x; end
|
24
|
-
end
|
25
|
-
|
26
|
-
class B < C
|
27
|
-
alias_method(:q, :x)
|
28
|
-
alias_method :r?, :x
|
29
|
-
alias_method :s, :to_s
|
30
|
-
alias_method :t, :inspect if 500 == 3 * CONSTANT
|
31
|
-
alias_method :<<, :a
|
32
|
-
alias_method :for, :a
|
33
|
-
alias do x
|
34
|
-
alias x2 do
|
35
|
-
end
|
36
|
-
|
37
|
-
class D
|
38
|
-
# Foo bar
|
39
|
-
def a; "FOO" end
|
40
|
-
|
41
|
-
# @return [String]
|
42
|
-
alias b a
|
43
|
-
|
44
|
-
# @return [Numeric]
|
45
|
-
def a; 0 end
|
1
|
+
module A
|
2
|
+
def a; end
|
3
|
+
alias_method :b, :a
|
4
|
+
alias_method :"cstrmeth", :"a"
|
5
|
+
|
6
|
+
# Handle keyword syntax too
|
7
|
+
alias :c :a
|
8
|
+
alias :"cstrkey" :a
|
9
|
+
alias d? a
|
10
|
+
alias [] a
|
11
|
+
alias []= a
|
12
|
+
alias -@ a
|
13
|
+
alias % a
|
14
|
+
alias * a
|
15
|
+
alias for a
|
16
|
+
alias ConstantName a
|
17
|
+
|
18
|
+
# Handle quoted symbols
|
19
|
+
alias :'foo' :'a'
|
20
|
+
end
|
21
|
+
|
22
|
+
class C
|
23
|
+
def x; end
|
24
|
+
end
|
25
|
+
|
26
|
+
class B < C
|
27
|
+
alias_method(:q, :x)
|
28
|
+
alias_method :r?, :x
|
29
|
+
alias_method :s, :to_s
|
30
|
+
alias_method :t, :inspect if 500 == 3 * CONSTANT
|
31
|
+
alias_method :<<, :a
|
32
|
+
alias_method :for, :a
|
33
|
+
alias do x
|
34
|
+
alias x2 do
|
35
|
+
end
|
36
|
+
|
37
|
+
class D
|
38
|
+
# Foo bar
|
39
|
+
def a; "FOO" end
|
40
|
+
|
41
|
+
# @return [String]
|
42
|
+
alias b a
|
43
|
+
|
44
|
+
# @return [Numeric]
|
45
|
+
def a; 0 end
|
46
46
|
end
|