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,44 +1,44 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
# Handles alias and alias_method calls
|
3
|
-
class YARD::Handlers::Ruby::AliasHandler < YARD::Handlers::Ruby::Base
|
4
|
-
handles :alias, method_call(:alias_method)
|
5
|
-
namespace_only
|
6
|
-
|
7
|
-
process do
|
8
|
-
names = []
|
9
|
-
if statement.type == :alias
|
10
|
-
names = statement.map {|o| o.jump(:ident, :op, :kw, :const).source }
|
11
|
-
elsif statement.call?
|
12
|
-
statement.parameters(false).each do |obj|
|
13
|
-
case obj.type
|
14
|
-
when :symbol_literal, :dyna_symbol
|
15
|
-
names << obj.jump(:ident, :op, :kw, :const).source
|
16
|
-
when :string_literal
|
17
|
-
names << obj.jump(:string_content).source
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
raise YARD::Parser::UndocumentableError, "alias/alias_method" if names.size != 2
|
22
|
-
|
23
|
-
new_meth = names[0].to_sym
|
24
|
-
old_meth = names[1].to_sym
|
25
|
-
old_obj = namespace.child(:name => old_meth, :scope => scope)
|
26
|
-
new_obj = register MethodObject.new(namespace, new_meth, scope) do |o|
|
27
|
-
o.add_file(parser.file, statement.line)
|
28
|
-
end
|
29
|
-
namespace.aliases[new_obj] = old_meth
|
30
|
-
|
31
|
-
if old_obj
|
32
|
-
new_obj.signature = old_obj.signature
|
33
|
-
new_obj.source = old_obj.source
|
34
|
-
comments = [old_obj.docstring.to_raw, statement.comments].join("\n")
|
35
|
-
doc = YARD::Docstring.parser.parse(comments, new_obj, self)
|
36
|
-
new_obj.docstring = doc.to_docstring
|
37
|
-
new_obj.docstring.line_range = statement.comments_range
|
38
|
-
new_obj.docstring.hash_flag = statement.comments_hash_flag
|
39
|
-
new_obj.docstring.object = new_obj
|
40
|
-
else
|
41
|
-
new_obj.signature = "def #{new_meth}" # this is all we know.
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
# Handles alias and alias_method calls
|
3
|
+
class YARD::Handlers::Ruby::AliasHandler < YARD::Handlers::Ruby::Base
|
4
|
+
handles :alias, method_call(:alias_method)
|
5
|
+
namespace_only
|
6
|
+
|
7
|
+
process do
|
8
|
+
names = []
|
9
|
+
if statement.type == :alias
|
10
|
+
names = statement.map {|o| o.jump(:ident, :op, :kw, :const).source }
|
11
|
+
elsif statement.call?
|
12
|
+
statement.parameters(false).each do |obj|
|
13
|
+
case obj.type
|
14
|
+
when :symbol_literal, :dyna_symbol
|
15
|
+
names << obj.jump(:ident, :op, :kw, :const).source
|
16
|
+
when :string_literal
|
17
|
+
names << obj.jump(:string_content).source
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
raise YARD::Parser::UndocumentableError, "alias/alias_method" if names.size != 2
|
22
|
+
|
23
|
+
new_meth = names[0].to_sym
|
24
|
+
old_meth = names[1].to_sym
|
25
|
+
old_obj = namespace.child(:name => old_meth, :scope => scope)
|
26
|
+
new_obj = register MethodObject.new(namespace, new_meth, scope) do |o|
|
27
|
+
o.add_file(parser.file, statement.line)
|
28
|
+
end
|
29
|
+
namespace.aliases[new_obj] = old_meth
|
30
|
+
|
31
|
+
if old_obj
|
32
|
+
new_obj.signature = old_obj.signature
|
33
|
+
new_obj.source = old_obj.source
|
34
|
+
comments = [old_obj.docstring.to_raw, statement.comments].join("\n")
|
35
|
+
doc = YARD::Docstring.parser.parse(comments, new_obj, self)
|
36
|
+
new_obj.docstring = doc.to_docstring
|
37
|
+
new_obj.docstring.line_range = statement.comments_range
|
38
|
+
new_obj.docstring.hash_flag = statement.comments_hash_flag
|
39
|
+
new_obj.docstring.object = new_obj
|
40
|
+
else
|
41
|
+
new_obj.signature = "def #{new_meth}" # this is all we know.
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
@@ -1,87 +1,87 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
# Handles +attr_*+ statements in modules/classes
|
3
|
-
class YARD::Handlers::Ruby::AttributeHandler < YARD::Handlers::Ruby::Base
|
4
|
-
handles method_call(:attr)
|
5
|
-
handles method_call(:attr_reader)
|
6
|
-
handles method_call(:attr_writer)
|
7
|
-
handles method_call(:attr_accessor)
|
8
|
-
namespace_only
|
9
|
-
|
10
|
-
process do
|
11
|
-
return if statement.type == :var_ref || statement.type == :vcall
|
12
|
-
read = true
|
13
|
-
write = false
|
14
|
-
params = statement.parameters(false).dup
|
15
|
-
|
16
|
-
# Change read/write based on attr_reader/writer/accessor
|
17
|
-
case statement.method_name(true)
|
18
|
-
when :attr
|
19
|
-
# In the case of 'attr', the second parameter (if given) isn't a symbol.
|
20
|
-
if params.size == 2
|
21
|
-
write = true if params.pop == s(:var_ref, s(:kw, "true"))
|
22
|
-
end
|
23
|
-
when :attr_accessor
|
24
|
-
write = true
|
25
|
-
when :attr_reader
|
26
|
-
# change nothing
|
27
|
-
when :attr_writer
|
28
|
-
read = false
|
29
|
-
write = true
|
30
|
-
end
|
31
|
-
|
32
|
-
# Add all attributes
|
33
|
-
validated_attribute_names(params).each do |name|
|
34
|
-
namespace.attributes[scope][name] ||= SymbolHash[:read => nil, :write => nil]
|
35
|
-
|
36
|
-
# Show their methods as well
|
37
|
-
{:read => name, :write => "#{name}="}.each do |type, meth|
|
38
|
-
if type == :read ? read : write
|
39
|
-
o = MethodObject.new(namespace, meth, scope)
|
40
|
-
if type == :write
|
41
|
-
o.parameters = [['value', nil]]
|
42
|
-
src = "def #{meth}(value)"
|
43
|
-
full_src = "#{src}\n @#{name} = value\nend"
|
44
|
-
doc = "Sets the attribute #{name}\n@param value the value to set the attribute #{name} to."
|
45
|
-
else
|
46
|
-
src = "def #{meth}"
|
47
|
-
full_src = "#{src}\n @#{name}\nend"
|
48
|
-
doc = "Returns the value of attribute #{name}"
|
49
|
-
end
|
50
|
-
o.source ||= full_src
|
51
|
-
o.signature ||= src
|
52
|
-
register(o)
|
53
|
-
o.docstring = doc if o.docstring.blank?(false)
|
54
|
-
|
55
|
-
# Regsiter the object explicitly
|
56
|
-
namespace.attributes[scope][name][type] = o
|
57
|
-
else
|
58
|
-
obj = namespace.children.find {|other| other.name == meth.to_sym && other.scope == scope }
|
59
|
-
|
60
|
-
# register an existing method as attribute
|
61
|
-
namespace.attributes[scope][name][type] = obj if obj
|
62
|
-
end
|
63
|
-
end
|
64
|
-
end
|
65
|
-
end
|
66
|
-
|
67
|
-
protected
|
68
|
-
|
69
|
-
# Strips out any non-essential arguments from the attr statement.
|
70
|
-
#
|
71
|
-
# @param [Array<Parser::Ruby::AstNode>] params a list of the parameters
|
72
|
-
# in the attr call.
|
73
|
-
# @return [Array<String>] the validated attribute names
|
74
|
-
# @raise [Parser::UndocumentableError] if the arguments are not valid.
|
75
|
-
def validated_attribute_names(params)
|
76
|
-
params.map do |obj|
|
77
|
-
case obj.type
|
78
|
-
when :symbol_literal
|
79
|
-
obj.jump(:ident, :op, :kw, :const).source
|
80
|
-
when :string_literal
|
81
|
-
obj.jump(:string_content).source
|
82
|
-
else
|
83
|
-
raise YARD::Parser::UndocumentableError, obj.source
|
84
|
-
end
|
85
|
-
end
|
86
|
-
end
|
87
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
# Handles +attr_*+ statements in modules/classes
|
3
|
+
class YARD::Handlers::Ruby::AttributeHandler < YARD::Handlers::Ruby::Base
|
4
|
+
handles method_call(:attr)
|
5
|
+
handles method_call(:attr_reader)
|
6
|
+
handles method_call(:attr_writer)
|
7
|
+
handles method_call(:attr_accessor)
|
8
|
+
namespace_only
|
9
|
+
|
10
|
+
process do
|
11
|
+
return if statement.type == :var_ref || statement.type == :vcall
|
12
|
+
read = true
|
13
|
+
write = false
|
14
|
+
params = statement.parameters(false).dup
|
15
|
+
|
16
|
+
# Change read/write based on attr_reader/writer/accessor
|
17
|
+
case statement.method_name(true)
|
18
|
+
when :attr
|
19
|
+
# In the case of 'attr', the second parameter (if given) isn't a symbol.
|
20
|
+
if params.size == 2
|
21
|
+
write = true if params.pop == s(:var_ref, s(:kw, "true"))
|
22
|
+
end
|
23
|
+
when :attr_accessor
|
24
|
+
write = true
|
25
|
+
when :attr_reader
|
26
|
+
# change nothing
|
27
|
+
when :attr_writer
|
28
|
+
read = false
|
29
|
+
write = true
|
30
|
+
end
|
31
|
+
|
32
|
+
# Add all attributes
|
33
|
+
validated_attribute_names(params).each do |name|
|
34
|
+
namespace.attributes[scope][name] ||= SymbolHash[:read => nil, :write => nil]
|
35
|
+
|
36
|
+
# Show their methods as well
|
37
|
+
{:read => name, :write => "#{name}="}.each do |type, meth|
|
38
|
+
if type == :read ? read : write
|
39
|
+
o = MethodObject.new(namespace, meth, scope)
|
40
|
+
if type == :write
|
41
|
+
o.parameters = [['value', nil]]
|
42
|
+
src = "def #{meth}(value)"
|
43
|
+
full_src = "#{src}\n @#{name} = value\nend"
|
44
|
+
doc = "Sets the attribute #{name}\n@param value the value to set the attribute #{name} to."
|
45
|
+
else
|
46
|
+
src = "def #{meth}"
|
47
|
+
full_src = "#{src}\n @#{name}\nend"
|
48
|
+
doc = "Returns the value of attribute #{name}"
|
49
|
+
end
|
50
|
+
o.source ||= full_src
|
51
|
+
o.signature ||= src
|
52
|
+
register(o)
|
53
|
+
o.docstring = doc if o.docstring.blank?(false)
|
54
|
+
|
55
|
+
# Regsiter the object explicitly
|
56
|
+
namespace.attributes[scope][name][type] = o
|
57
|
+
else
|
58
|
+
obj = namespace.children.find {|other| other.name == meth.to_sym && other.scope == scope }
|
59
|
+
|
60
|
+
# register an existing method as attribute
|
61
|
+
namespace.attributes[scope][name][type] = obj if obj
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
protected
|
68
|
+
|
69
|
+
# Strips out any non-essential arguments from the attr statement.
|
70
|
+
#
|
71
|
+
# @param [Array<Parser::Ruby::AstNode>] params a list of the parameters
|
72
|
+
# in the attr call.
|
73
|
+
# @return [Array<String>] the validated attribute names
|
74
|
+
# @raise [Parser::UndocumentableError] if the arguments are not valid.
|
75
|
+
def validated_attribute_names(params)
|
76
|
+
params.map do |obj|
|
77
|
+
case obj.type
|
78
|
+
when :symbol_literal
|
79
|
+
obj.jump(:ident, :op, :kw, :const).source
|
80
|
+
when :string_literal
|
81
|
+
obj.jump(:string_content).source
|
82
|
+
else
|
83
|
+
raise YARD::Parser::UndocumentableError, obj.source
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
@@ -1,165 +1,165 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
module YARD
|
3
|
-
module Handlers
|
4
|
-
module Ruby
|
5
|
-
# To implement a custom handler matcher, subclass this class and implement
|
6
|
-
# {#matches?} to return whether a node matches the handler.
|
7
|
-
#
|
8
|
-
# @example A Custom Handler Matcher Extension
|
9
|
-
# # Implements a handler that checks for a specific string
|
10
|
-
# # in the node's source.
|
11
|
-
# class MyExtension < HandlesExtension
|
12
|
-
# def matches?(node) node.source.include?(name) end
|
13
|
-
# end
|
14
|
-
#
|
15
|
-
# # This handler will handle any node where the source includes 'foo'
|
16
|
-
# class MyHandler < Handlers::Ruby::Base
|
17
|
-
# handles MyExtension.new('foo')
|
18
|
-
# end
|
19
|
-
class HandlesExtension
|
20
|
-
# Creates a new extension with a specific matcher value +name+
|
21
|
-
# @param [Object] name the matcher value to check against {#matches?}
|
22
|
-
def initialize(name) @name = name end
|
23
|
-
|
24
|
-
# Tests if the node matches the handler
|
25
|
-
# @param [Parser::Ruby::AstNode] node a Ruby node
|
26
|
-
# @return [Boolean] whether the +node+ matches the handler
|
27
|
-
def matches?(node) # rubocop:disable Lint/UnusedMethodArgument
|
28
|
-
raise NotImplementedError
|
29
|
-
end
|
30
|
-
|
31
|
-
protected
|
32
|
-
|
33
|
-
# @return [String] the extension matcher value
|
34
|
-
attr_reader :name
|
35
|
-
end
|
36
|
-
|
37
|
-
class MethodCallWrapper < HandlesExtension
|
38
|
-
def matches?(node)
|
39
|
-
case node.type
|
40
|
-
when :var_ref
|
41
|
-
if !node.parent || node.parent.type == :list
|
42
|
-
return true if node[0].type == :ident && (name.nil? || node[0][0] == name)
|
43
|
-
end
|
44
|
-
when :fcall, :command, :vcall
|
45
|
-
return true if name.nil? || node[0][0] == name
|
46
|
-
when :call, :command_call
|
47
|
-
return true if name.nil? || node[2][0] == name
|
48
|
-
end
|
49
|
-
false
|
50
|
-
end
|
51
|
-
end
|
52
|
-
|
53
|
-
class TestNodeWrapper < HandlesExtension
|
54
|
-
def matches?(node) !node.send(name).is_a?(FalseClass) end
|
55
|
-
end
|
56
|
-
|
57
|
-
# This is the base handler class for the new-style (1.9) Ruby parser.
|
58
|
-
# All handlers that subclass this base class will be used when the
|
59
|
-
# new-style parser is used. For implementing legacy handlers, see
|
60
|
-
# {Legacy::Base}.
|
61
|
-
#
|
62
|
-
# @abstract See {Handlers::Base} for subclassing information.
|
63
|
-
# @see Handlers::Base
|
64
|
-
# @see Legacy::Base
|
65
|
-
class Base < Handlers::Base
|
66
|
-
class << self
|
67
|
-
include Parser::Ruby
|
68
|
-
|
69
|
-
# @group Statement Matcher Extensions
|
70
|
-
|
71
|
-
# Matcher for handling any type of method call. Method calls can
|
72
|
-
# be expressed by many {AstNode} types depending on the syntax
|
73
|
-
# with which it is called, so YARD allows you to use this matcher
|
74
|
-
# to simplify matching a method call.
|
75
|
-
#
|
76
|
-
# @example Match the "describe" method call
|
77
|
-
# handles method_call(:describe)
|
78
|
-
#
|
79
|
-
# # The following will be matched:
|
80
|
-
# # describe(...)
|
81
|
-
# # object.describe(...)
|
82
|
-
# # describe "argument" do ... end
|
83
|
-
#
|
84
|
-
# @param [#to_s] name matches the method call of this name
|
85
|
-
# @return [void]
|
86
|
-
def method_call(name = nil)
|
87
|
-
MethodCallWrapper.new(name ? name.to_s : nil)
|
88
|
-
end
|
89
|
-
|
90
|
-
# Matcher for handling a node with a specific meta-type. An {AstNode}
|
91
|
-
# has a {AstNode#type} to define its type but can also be associated
|
92
|
-
# with a set of types. For instance, +:if+ and +:unless+ are both
|
93
|
-
# of the meta-type +:condition+.
|
94
|
-
#
|
95
|
-
# A meta-type is any method on the {AstNode} class ending in "?",
|
96
|
-
# though you should not include the "?" suffix in your declaration.
|
97
|
-
# Some examples are: "condition", "call", "literal", "kw", "token",
|
98
|
-
# "ref".
|
99
|
-
#
|
100
|
-
# @example Handling any conditional statement (if, unless)
|
101
|
-
# handles meta_type(:condition)
|
102
|
-
# @param [Symbol] type the meta-type to match. A meta-type can be
|
103
|
-
# any method name + "?" that {AstNode} responds to.
|
104
|
-
# @return [void]
|
105
|
-
def meta_type(type)
|
106
|
-
TestNodeWrapper.new(type.to_s + "?")
|
107
|
-
end
|
108
|
-
|
109
|
-
# @group Testing for a Handler
|
110
|
-
|
111
|
-
# @return [Boolean] whether or not an {AstNode} object should be
|
112
|
-
# handled by this handler
|
113
|
-
def handles?(node)
|
114
|
-
handlers.any? do |a_handler|
|
115
|
-
case a_handler
|
116
|
-
when Symbol
|
117
|
-
a_handler == node.type
|
118
|
-
when String
|
119
|
-
node.source == a_handler
|
120
|
-
when Regexp
|
121
|
-
node.source =~ a_handler
|
122
|
-
when Parser::Ruby::AstNode
|
123
|
-
a_handler == node
|
124
|
-
when HandlesExtension
|
125
|
-
a_handler.matches?(node)
|
126
|
-
end
|
127
|
-
end
|
128
|
-
end
|
129
|
-
end
|
130
|
-
|
131
|
-
include Parser::Ruby
|
132
|
-
|
133
|
-
# @group Parsing an Inner Block
|
134
|
-
|
135
|
-
def parse_block(inner_node, opts = {})
|
136
|
-
push_state(opts) do
|
137
|
-
nodes = inner_node.type == :list ? inner_node.children : [inner_node]
|
138
|
-
parser.process(nodes)
|
139
|
-
end
|
140
|
-
end
|
141
|
-
|
142
|
-
# @group Macro Handling
|
143
|
-
|
144
|
-
def call_params
|
145
|
-
return [] unless statement.respond_to?(:parameters)
|
146
|
-
statement.parameters(false).compact.map do |param|
|
147
|
-
if param.type == :list
|
148
|
-
param.map {|n| n.jump(:ident, :kw, :tstring_content).source }
|
149
|
-
else
|
150
|
-
param.jump(:ident, :kw, :tstring_content).source
|
151
|
-
end
|
152
|
-
end.flatten
|
153
|
-
end
|
154
|
-
|
155
|
-
def caller_method
|
156
|
-
if statement.call? || statement.def?
|
157
|
-
statement.method_name(true).to_s
|
158
|
-
elsif statement.type == :var_ref || statement.type == :vcall
|
159
|
-
statement[0].jump(:ident, :kw).source
|
160
|
-
end
|
161
|
-
end
|
162
|
-
end
|
163
|
-
end
|
164
|
-
end
|
165
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
module YARD
|
3
|
+
module Handlers
|
4
|
+
module Ruby
|
5
|
+
# To implement a custom handler matcher, subclass this class and implement
|
6
|
+
# {#matches?} to return whether a node matches the handler.
|
7
|
+
#
|
8
|
+
# @example A Custom Handler Matcher Extension
|
9
|
+
# # Implements a handler that checks for a specific string
|
10
|
+
# # in the node's source.
|
11
|
+
# class MyExtension < HandlesExtension
|
12
|
+
# def matches?(node) node.source.include?(name) end
|
13
|
+
# end
|
14
|
+
#
|
15
|
+
# # This handler will handle any node where the source includes 'foo'
|
16
|
+
# class MyHandler < Handlers::Ruby::Base
|
17
|
+
# handles MyExtension.new('foo')
|
18
|
+
# end
|
19
|
+
class HandlesExtension
|
20
|
+
# Creates a new extension with a specific matcher value +name+
|
21
|
+
# @param [Object] name the matcher value to check against {#matches?}
|
22
|
+
def initialize(name) @name = name end
|
23
|
+
|
24
|
+
# Tests if the node matches the handler
|
25
|
+
# @param [Parser::Ruby::AstNode] node a Ruby node
|
26
|
+
# @return [Boolean] whether the +node+ matches the handler
|
27
|
+
def matches?(node) # rubocop:disable Lint/UnusedMethodArgument
|
28
|
+
raise NotImplementedError
|
29
|
+
end
|
30
|
+
|
31
|
+
protected
|
32
|
+
|
33
|
+
# @return [String] the extension matcher value
|
34
|
+
attr_reader :name
|
35
|
+
end
|
36
|
+
|
37
|
+
class MethodCallWrapper < HandlesExtension
|
38
|
+
def matches?(node)
|
39
|
+
case node.type
|
40
|
+
when :var_ref
|
41
|
+
if !node.parent || node.parent.type == :list
|
42
|
+
return true if node[0].type == :ident && (name.nil? || node[0][0] == name)
|
43
|
+
end
|
44
|
+
when :fcall, :command, :vcall
|
45
|
+
return true if name.nil? || node[0][0] == name
|
46
|
+
when :call, :command_call
|
47
|
+
return true if name.nil? || node[2][0] == name
|
48
|
+
end
|
49
|
+
false
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
class TestNodeWrapper < HandlesExtension
|
54
|
+
def matches?(node) !node.send(name).is_a?(FalseClass) end
|
55
|
+
end
|
56
|
+
|
57
|
+
# This is the base handler class for the new-style (1.9) Ruby parser.
|
58
|
+
# All handlers that subclass this base class will be used when the
|
59
|
+
# new-style parser is used. For implementing legacy handlers, see
|
60
|
+
# {Legacy::Base}.
|
61
|
+
#
|
62
|
+
# @abstract See {Handlers::Base} for subclassing information.
|
63
|
+
# @see Handlers::Base
|
64
|
+
# @see Legacy::Base
|
65
|
+
class Base < Handlers::Base
|
66
|
+
class << self
|
67
|
+
include Parser::Ruby
|
68
|
+
|
69
|
+
# @group Statement Matcher Extensions
|
70
|
+
|
71
|
+
# Matcher for handling any type of method call. Method calls can
|
72
|
+
# be expressed by many {AstNode} types depending on the syntax
|
73
|
+
# with which it is called, so YARD allows you to use this matcher
|
74
|
+
# to simplify matching a method call.
|
75
|
+
#
|
76
|
+
# @example Match the "describe" method call
|
77
|
+
# handles method_call(:describe)
|
78
|
+
#
|
79
|
+
# # The following will be matched:
|
80
|
+
# # describe(...)
|
81
|
+
# # object.describe(...)
|
82
|
+
# # describe "argument" do ... end
|
83
|
+
#
|
84
|
+
# @param [#to_s] name matches the method call of this name
|
85
|
+
# @return [void]
|
86
|
+
def method_call(name = nil)
|
87
|
+
MethodCallWrapper.new(name ? name.to_s : nil)
|
88
|
+
end
|
89
|
+
|
90
|
+
# Matcher for handling a node with a specific meta-type. An {AstNode}
|
91
|
+
# has a {AstNode#type} to define its type but can also be associated
|
92
|
+
# with a set of types. For instance, +:if+ and +:unless+ are both
|
93
|
+
# of the meta-type +:condition+.
|
94
|
+
#
|
95
|
+
# A meta-type is any method on the {AstNode} class ending in "?",
|
96
|
+
# though you should not include the "?" suffix in your declaration.
|
97
|
+
# Some examples are: "condition", "call", "literal", "kw", "token",
|
98
|
+
# "ref".
|
99
|
+
#
|
100
|
+
# @example Handling any conditional statement (if, unless)
|
101
|
+
# handles meta_type(:condition)
|
102
|
+
# @param [Symbol] type the meta-type to match. A meta-type can be
|
103
|
+
# any method name + "?" that {AstNode} responds to.
|
104
|
+
# @return [void]
|
105
|
+
def meta_type(type)
|
106
|
+
TestNodeWrapper.new(type.to_s + "?")
|
107
|
+
end
|
108
|
+
|
109
|
+
# @group Testing for a Handler
|
110
|
+
|
111
|
+
# @return [Boolean] whether or not an {AstNode} object should be
|
112
|
+
# handled by this handler
|
113
|
+
def handles?(node)
|
114
|
+
handlers.any? do |a_handler|
|
115
|
+
case a_handler
|
116
|
+
when Symbol
|
117
|
+
a_handler == node.type
|
118
|
+
when String
|
119
|
+
node.source == a_handler
|
120
|
+
when Regexp
|
121
|
+
node.source =~ a_handler
|
122
|
+
when Parser::Ruby::AstNode
|
123
|
+
a_handler == node
|
124
|
+
when HandlesExtension
|
125
|
+
a_handler.matches?(node)
|
126
|
+
end
|
127
|
+
end
|
128
|
+
end
|
129
|
+
end
|
130
|
+
|
131
|
+
include Parser::Ruby
|
132
|
+
|
133
|
+
# @group Parsing an Inner Block
|
134
|
+
|
135
|
+
def parse_block(inner_node, opts = {})
|
136
|
+
push_state(opts) do
|
137
|
+
nodes = inner_node.type == :list ? inner_node.children : [inner_node]
|
138
|
+
parser.process(nodes)
|
139
|
+
end
|
140
|
+
end
|
141
|
+
|
142
|
+
# @group Macro Handling
|
143
|
+
|
144
|
+
def call_params
|
145
|
+
return [] unless statement.respond_to?(:parameters)
|
146
|
+
statement.parameters(false).compact.map do |param|
|
147
|
+
if param.type == :list
|
148
|
+
param.map {|n| n.jump(:ident, :kw, :tstring_content).source }
|
149
|
+
else
|
150
|
+
param.jump(:ident, :kw, :tstring_content).source
|
151
|
+
end
|
152
|
+
end.flatten
|
153
|
+
end
|
154
|
+
|
155
|
+
def caller_method
|
156
|
+
if statement.call? || statement.def?
|
157
|
+
statement.method_name(true).to_s
|
158
|
+
elsif statement.type == :var_ref || statement.type == :vcall
|
159
|
+
statement[0].jump(:ident, :kw).source
|
160
|
+
end
|
161
|
+
end
|
162
|
+
end
|
163
|
+
end
|
164
|
+
end
|
165
|
+
end
|