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,10 +1,10 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
# Handles any lone comment statement in a Ruby file
|
3
|
-
class YARD::Handlers::Ruby::CommentHandler < YARD::Handlers::Ruby::Base
|
4
|
-
handles :comment, :void_stmt
|
5
|
-
namespace_only
|
6
|
-
|
7
|
-
process do
|
8
|
-
register_docstring(nil)
|
9
|
-
end
|
10
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
# Handles any lone comment statement in a Ruby file
|
3
|
+
class YARD::Handlers::Ruby::CommentHandler < YARD::Handlers::Ruby::Base
|
4
|
+
handles :comment, :void_stmt
|
5
|
+
namespace_only
|
6
|
+
|
7
|
+
process do
|
8
|
+
register_docstring(nil)
|
9
|
+
end
|
10
|
+
end
|
@@ -1,59 +1,59 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
# Handles any constant assignment
|
3
|
-
class YARD::Handlers::Ruby::ConstantHandler < YARD::Handlers::Ruby::Base
|
4
|
-
include YARD::Handlers::Ruby::StructHandlerMethods
|
5
|
-
handles :assign
|
6
|
-
namespace_only
|
7
|
-
|
8
|
-
process do
|
9
|
-
if statement[1].call? && statement[1][0][0] == s(:const, "Struct") &&
|
10
|
-
statement[1][2] == s(:ident, "new")
|
11
|
-
process_structclass(statement)
|
12
|
-
elsif statement[0].type == :var_field && statement[0][0].type == :const
|
13
|
-
process_constant(statement)
|
14
|
-
elsif statement[0].type == :const_path_field
|
15
|
-
process_constant(statement)
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
private
|
20
|
-
|
21
|
-
def process_constant(statement)
|
22
|
-
name = statement[0].source
|
23
|
-
value = if statement[1].type == :dyna_symbol
|
24
|
-
statement[1].first.source.intern.inspect
|
25
|
-
else
|
26
|
-
statement[1].source
|
27
|
-
end
|
28
|
-
obj = P(namespace, name)
|
29
|
-
if obj.is_a?(NamespaceObject) && obj.namespace == namespace
|
30
|
-
raise YARD::Parser::UndocumentableError, "constant for existing #{obj.type} #{obj}"
|
31
|
-
else
|
32
|
-
ensure_loaded! obj.parent
|
33
|
-
register ConstantObject.new(namespace, name) {|o| o.source = statement; o.value = value.strip }
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
def process_structclass(statement)
|
38
|
-
lhs = statement[0][0]
|
39
|
-
if lhs.type == :const
|
40
|
-
klass = create_class(lhs[0], P(:Struct))
|
41
|
-
create_attributes(klass, extract_parameters(statement[1]))
|
42
|
-
parse_block(statement[1].block[1], :namespace => klass) unless statement[1].block.nil?
|
43
|
-
else
|
44
|
-
raise YARD::Parser::UndocumentableError, "Struct assignment to #{statement[0].source}"
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
# Extract the parameters from the Struct.new AST node, returning them as a list
|
49
|
-
# of strings
|
50
|
-
#
|
51
|
-
# @param [MethodCallNode] superclass the AST node for the Struct.new call
|
52
|
-
# @return [Array<String>] the member names to generate methods for
|
53
|
-
def extract_parameters(superclass)
|
54
|
-
return [] unless superclass.parameters
|
55
|
-
members = superclass.parameters.select {|x| x && x.type == :symbol_literal }
|
56
|
-
members.map! {|x| x.source.strip[1..-1] }
|
57
|
-
members
|
58
|
-
end
|
59
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
# Handles any constant assignment
|
3
|
+
class YARD::Handlers::Ruby::ConstantHandler < YARD::Handlers::Ruby::Base
|
4
|
+
include YARD::Handlers::Ruby::StructHandlerMethods
|
5
|
+
handles :assign
|
6
|
+
namespace_only
|
7
|
+
|
8
|
+
process do
|
9
|
+
if statement[1].call? && statement[1][0][0] == s(:const, "Struct") &&
|
10
|
+
statement[1][2] == s(:ident, "new")
|
11
|
+
process_structclass(statement)
|
12
|
+
elsif statement[0].type == :var_field && statement[0][0].type == :const
|
13
|
+
process_constant(statement)
|
14
|
+
elsif statement[0].type == :const_path_field
|
15
|
+
process_constant(statement)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
private
|
20
|
+
|
21
|
+
def process_constant(statement)
|
22
|
+
name = statement[0].source
|
23
|
+
value = if statement[1].type == :dyna_symbol
|
24
|
+
statement[1].first.source.intern.inspect
|
25
|
+
else
|
26
|
+
statement[1].source
|
27
|
+
end
|
28
|
+
obj = P(namespace, name)
|
29
|
+
if obj.is_a?(NamespaceObject) && obj.namespace == namespace
|
30
|
+
raise YARD::Parser::UndocumentableError, "constant for existing #{obj.type} #{obj}"
|
31
|
+
else
|
32
|
+
ensure_loaded! obj.parent
|
33
|
+
register ConstantObject.new(namespace, name) {|o| o.source = statement; o.value = value.strip }
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
def process_structclass(statement)
|
38
|
+
lhs = statement[0][0]
|
39
|
+
if lhs.type == :const
|
40
|
+
klass = create_class(lhs[0], P(:Struct))
|
41
|
+
create_attributes(klass, extract_parameters(statement[1]))
|
42
|
+
parse_block(statement[1].block[1], :namespace => klass) unless statement[1].block.nil?
|
43
|
+
else
|
44
|
+
raise YARD::Parser::UndocumentableError, "Struct assignment to #{statement[0].source}"
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
# Extract the parameters from the Struct.new AST node, returning them as a list
|
49
|
+
# of strings
|
50
|
+
#
|
51
|
+
# @param [MethodCallNode] superclass the AST node for the Struct.new call
|
52
|
+
# @return [Array<String>] the member names to generate methods for
|
53
|
+
def extract_parameters(superclass)
|
54
|
+
return [] unless superclass.parameters
|
55
|
+
members = superclass.parameters.select {|x| x && x.type == :symbol_literal }
|
56
|
+
members.map! {|x| x.source.strip[1..-1] }
|
57
|
+
members
|
58
|
+
end
|
59
|
+
end
|
@@ -1,123 +1,123 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
# Helper methods to assist with processing decorators.
|
3
|
-
module YARD::Handlers::Ruby::DecoratorHandlerMethods
|
4
|
-
# @overload process_decorator(*nodes, opts = {}, &block)
|
5
|
-
# Takes care of parsing method definitions passed to decorators
|
6
|
-
# as parameters, as well as parsing chained decorators.
|
7
|
-
#
|
8
|
-
# Use this in a handler's process block.
|
9
|
-
#
|
10
|
-
# @yieldparam method [YARD::CodeObjects::MethodObject] Method being decorated.
|
11
|
-
# @yieldparam node [YARD::Parser::Ruby::AstNode] AST node of the decorated method.
|
12
|
-
# @yieldparam name [Symbol] Name of the decorated method.
|
13
|
-
# @return [Array<Hash>] Array of hashes containing :method, :node, :name.
|
14
|
-
# See yield params.
|
15
|
-
#
|
16
|
-
# @param nodes [YARD::Parser::Ruby::AstNode] AST nodes that refer to decorated
|
17
|
-
# methods, like indexes of statement.parameter. Defaults to all parameters.
|
18
|
-
# Pass nil to specify zero parameters.
|
19
|
-
#
|
20
|
-
# @option opts [:instance, :class] :scope (:instance) Scope to use for each
|
21
|
-
# MethodObject.
|
22
|
-
#
|
23
|
-
# @option opts [true, false] :transfer_docstring Set false to disable
|
24
|
-
# transferring the decorator docstring to method definitions passed to the
|
25
|
-
# decorator as parameters.
|
26
|
-
#
|
27
|
-
# @option opts [true, false] :transfer_source Set false to disable
|
28
|
-
# transferring the decorator source code string to method definitions
|
29
|
-
# passed to the decorator as parameters.
|
30
|
-
#
|
31
|
-
# @example Basic Usage
|
32
|
-
# # Simply pass the method docs through to the method definition.
|
33
|
-
# process do
|
34
|
-
# process_decorator
|
35
|
-
# end
|
36
|
-
#
|
37
|
-
# @example Setting a method's visibility to private.
|
38
|
-
# process do
|
39
|
-
# process_decorator :scope => :class do |method|
|
40
|
-
# method.visibility = :private if method.respond_to? :visibility
|
41
|
-
# end
|
42
|
-
# end
|
43
|
-
def process_decorator(*nodes, &block)
|
44
|
-
opts = nodes.last.is_a?(Hash) ? nodes.pop : {}
|
45
|
-
|
46
|
-
all_nodes = statement.parameters.select do |p|
|
47
|
-
p.is_a? YARD::Parser::Ruby::AstNode
|
48
|
-
end
|
49
|
-
|
50
|
-
# Parse decorator parameters (decorator chain).
|
51
|
-
all_nodes.each do |param|
|
52
|
-
parse_block param if param.call? || param.def?
|
53
|
-
end
|
54
|
-
|
55
|
-
selected_nodes =
|
56
|
-
if nodes.empty?
|
57
|
-
all_nodes
|
58
|
-
elsif nodes.count == 1 && nodes.first.nil?
|
59
|
-
[]
|
60
|
-
else
|
61
|
-
nodes
|
62
|
-
end
|
63
|
-
|
64
|
-
decorated_methods = selected_nodes.map do |param|
|
65
|
-
process_decorator_parameter param, opts, &block
|
66
|
-
end.flatten
|
67
|
-
|
68
|
-
# Store method nodes in decorator node.
|
69
|
-
statement.define_singleton_method :decorators do
|
70
|
-
decorated_methods.map {|h| h[:node] }
|
71
|
-
end
|
72
|
-
|
73
|
-
decorated_methods
|
74
|
-
end
|
75
|
-
|
76
|
-
private
|
77
|
-
|
78
|
-
def process_decorator_parameter(node, opts = {}, &block)
|
79
|
-
scope = opts.fetch :scope, :instance
|
80
|
-
transfer_docstring = opts.fetch :transfer_docstring, true
|
81
|
-
transfer_source = opts.fetch :transfer_source, true
|
82
|
-
|
83
|
-
name = nil
|
84
|
-
|
85
|
-
if node.call?
|
86
|
-
if node.respond_to? :decorators
|
87
|
-
return node.decorators.map do |n|
|
88
|
-
process_decorator_parameter n, opts, &block
|
89
|
-
end
|
90
|
-
end
|
91
|
-
elsif node.def?
|
92
|
-
name = node.jump(:def).method_name.source
|
93
|
-
else
|
94
|
-
name = node.jump(:ident, :string_content, :const).source
|
95
|
-
end
|
96
|
-
|
97
|
-
if name.nil?
|
98
|
-
raise YARD::Parser::UndocumentableError, 'statement, cannot determine method name'
|
99
|
-
end
|
100
|
-
|
101
|
-
method = YARD::CodeObjects::Proxy.new(
|
102
|
-
namespace,
|
103
|
-
(scope == :instance ? '#' : '.') + name.to_s,
|
104
|
-
:method
|
105
|
-
)
|
106
|
-
|
107
|
-
# Transfer source to methods passed to the helper as parameters.
|
108
|
-
method.source = statement.source if transfer_source && node.def?
|
109
|
-
|
110
|
-
# Transfer decorator docstring to methods passed to the helper as parameters.
|
111
|
-
if transfer_docstring && node.def? &&
|
112
|
-
statement.docstring && method.docstring.empty?
|
113
|
-
tags = method.tags if method.respond_to? :tags
|
114
|
-
tags ||= []
|
115
|
-
method.docstring = statement.docstring
|
116
|
-
tags.each {|t| method.add_tag t }
|
117
|
-
end
|
118
|
-
|
119
|
-
yield method, node, name.to_sym if block_given?
|
120
|
-
|
121
|
-
[{:method => method, :node => node, :name => name.to_sym}]
|
122
|
-
end
|
123
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
# Helper methods to assist with processing decorators.
|
3
|
+
module YARD::Handlers::Ruby::DecoratorHandlerMethods
|
4
|
+
# @overload process_decorator(*nodes, opts = {}, &block)
|
5
|
+
# Takes care of parsing method definitions passed to decorators
|
6
|
+
# as parameters, as well as parsing chained decorators.
|
7
|
+
#
|
8
|
+
# Use this in a handler's process block.
|
9
|
+
#
|
10
|
+
# @yieldparam method [YARD::CodeObjects::MethodObject] Method being decorated.
|
11
|
+
# @yieldparam node [YARD::Parser::Ruby::AstNode] AST node of the decorated method.
|
12
|
+
# @yieldparam name [Symbol] Name of the decorated method.
|
13
|
+
# @return [Array<Hash>] Array of hashes containing :method, :node, :name.
|
14
|
+
# See yield params.
|
15
|
+
#
|
16
|
+
# @param nodes [YARD::Parser::Ruby::AstNode] AST nodes that refer to decorated
|
17
|
+
# methods, like indexes of statement.parameter. Defaults to all parameters.
|
18
|
+
# Pass nil to specify zero parameters.
|
19
|
+
#
|
20
|
+
# @option opts [:instance, :class] :scope (:instance) Scope to use for each
|
21
|
+
# MethodObject.
|
22
|
+
#
|
23
|
+
# @option opts [true, false] :transfer_docstring Set false to disable
|
24
|
+
# transferring the decorator docstring to method definitions passed to the
|
25
|
+
# decorator as parameters.
|
26
|
+
#
|
27
|
+
# @option opts [true, false] :transfer_source Set false to disable
|
28
|
+
# transferring the decorator source code string to method definitions
|
29
|
+
# passed to the decorator as parameters.
|
30
|
+
#
|
31
|
+
# @example Basic Usage
|
32
|
+
# # Simply pass the method docs through to the method definition.
|
33
|
+
# process do
|
34
|
+
# process_decorator
|
35
|
+
# end
|
36
|
+
#
|
37
|
+
# @example Setting a method's visibility to private.
|
38
|
+
# process do
|
39
|
+
# process_decorator :scope => :class do |method|
|
40
|
+
# method.visibility = :private if method.respond_to? :visibility
|
41
|
+
# end
|
42
|
+
# end
|
43
|
+
def process_decorator(*nodes, &block)
|
44
|
+
opts = nodes.last.is_a?(Hash) ? nodes.pop : {}
|
45
|
+
|
46
|
+
all_nodes = statement.parameters.select do |p|
|
47
|
+
p.is_a? YARD::Parser::Ruby::AstNode
|
48
|
+
end
|
49
|
+
|
50
|
+
# Parse decorator parameters (decorator chain).
|
51
|
+
all_nodes.each do |param|
|
52
|
+
parse_block param if param.call? || param.def?
|
53
|
+
end
|
54
|
+
|
55
|
+
selected_nodes =
|
56
|
+
if nodes.empty?
|
57
|
+
all_nodes
|
58
|
+
elsif nodes.count == 1 && nodes.first.nil?
|
59
|
+
[]
|
60
|
+
else
|
61
|
+
nodes
|
62
|
+
end
|
63
|
+
|
64
|
+
decorated_methods = selected_nodes.map do |param|
|
65
|
+
process_decorator_parameter param, opts, &block
|
66
|
+
end.flatten
|
67
|
+
|
68
|
+
# Store method nodes in decorator node.
|
69
|
+
statement.define_singleton_method :decorators do
|
70
|
+
decorated_methods.map {|h| h[:node] }
|
71
|
+
end
|
72
|
+
|
73
|
+
decorated_methods
|
74
|
+
end
|
75
|
+
|
76
|
+
private
|
77
|
+
|
78
|
+
def process_decorator_parameter(node, opts = {}, &block)
|
79
|
+
scope = opts.fetch :scope, :instance
|
80
|
+
transfer_docstring = opts.fetch :transfer_docstring, true
|
81
|
+
transfer_source = opts.fetch :transfer_source, true
|
82
|
+
|
83
|
+
name = nil
|
84
|
+
|
85
|
+
if node.call?
|
86
|
+
if node.respond_to? :decorators
|
87
|
+
return node.decorators.map do |n|
|
88
|
+
process_decorator_parameter n, opts, &block
|
89
|
+
end
|
90
|
+
end
|
91
|
+
elsif node.def?
|
92
|
+
name = node.jump(:def).method_name.source
|
93
|
+
else
|
94
|
+
name = node.jump(:ident, :string_content, :const).source
|
95
|
+
end
|
96
|
+
|
97
|
+
if name.nil?
|
98
|
+
raise YARD::Parser::UndocumentableError, 'statement, cannot determine method name'
|
99
|
+
end
|
100
|
+
|
101
|
+
method = YARD::CodeObjects::Proxy.new(
|
102
|
+
namespace,
|
103
|
+
(scope == :instance ? '#' : '.') + name.to_s,
|
104
|
+
:method
|
105
|
+
)
|
106
|
+
|
107
|
+
# Transfer source to methods passed to the helper as parameters.
|
108
|
+
method.source = statement.source if transfer_source && node.def?
|
109
|
+
|
110
|
+
# Transfer decorator docstring to methods passed to the helper as parameters.
|
111
|
+
if transfer_docstring && node.def? &&
|
112
|
+
statement.docstring && method.docstring.empty?
|
113
|
+
tags = method.tags if method.respond_to? :tags
|
114
|
+
tags ||= []
|
115
|
+
method.docstring = statement.docstring
|
116
|
+
tags.each {|t| method.add_tag t }
|
117
|
+
end
|
118
|
+
|
119
|
+
yield method, node, name.to_sym if block_given?
|
120
|
+
|
121
|
+
[{:method => method, :node => node, :name => name.to_sym}]
|
122
|
+
end
|
123
|
+
end
|
@@ -1,15 +1,15 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
module YARD
|
3
|
-
module Handlers
|
4
|
-
module Ruby
|
5
|
-
# Handles automatic detection of dsl-style methods
|
6
|
-
class DSLHandler < Base
|
7
|
-
include CodeObjects
|
8
|
-
include DSLHandlerMethods
|
9
|
-
handles method_call
|
10
|
-
namespace_only
|
11
|
-
process { handle_comments }
|
12
|
-
end
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
module YARD
|
3
|
+
module Handlers
|
4
|
+
module Ruby
|
5
|
+
# Handles automatic detection of dsl-style methods
|
6
|
+
class DSLHandler < Base
|
7
|
+
include CodeObjects
|
8
|
+
include DSLHandlerMethods
|
9
|
+
handles method_call
|
10
|
+
namespace_only
|
11
|
+
process { handle_comments }
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -1,95 +1,96 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
module YARD
|
3
|
-
module Handlers
|
4
|
-
module Ruby
|
5
|
-
module DSLHandlerMethods
|
6
|
-
include CodeObjects
|
7
|
-
include Parser
|
8
|
-
|
9
|
-
IGNORE_METHODS = Hash[*%w(alias alias_method autoload attr attr_accessor
|
10
|
-
attr_reader attr_writer extend include public private
|
11
|
-
private_constant
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
@docstring =
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
if @
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
object
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
tags
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
next unless
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
#
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
module YARD
|
3
|
+
module Handlers
|
4
|
+
module Ruby
|
5
|
+
module DSLHandlerMethods
|
6
|
+
include CodeObjects
|
7
|
+
include Parser
|
8
|
+
|
9
|
+
IGNORE_METHODS = Hash[*%w(alias alias_method autoload attr attr_accessor
|
10
|
+
attr_reader attr_writer extend include module_function public private
|
11
|
+
protected private_constant private_class_method public_class_method).
|
12
|
+
map {|n| [n, true] }.flatten]
|
13
|
+
|
14
|
+
def handle_comments
|
15
|
+
return if IGNORE_METHODS[caller_method]
|
16
|
+
|
17
|
+
@docstring = statement.comments || ""
|
18
|
+
@docstring = @docstring.join("\n") if @docstring.is_a?(Array)
|
19
|
+
|
20
|
+
attaching = false
|
21
|
+
if @docstring =~ /^@!?macro\s+\[[^\]]*attach/
|
22
|
+
register_docstring(nil)
|
23
|
+
@docstring = ""
|
24
|
+
attaching = true
|
25
|
+
end
|
26
|
+
|
27
|
+
macro = find_attached_macro
|
28
|
+
if macro
|
29
|
+
txt = macro.expand([caller_method, *call_params], statement.source)
|
30
|
+
@docstring += "\n" + txt
|
31
|
+
|
32
|
+
# macro may have a directive
|
33
|
+
return register_docstring(nil) if !attaching && txt.match(/^\s*@!/)
|
34
|
+
elsif !statement.comments_hash_flag && !implicit_docstring?
|
35
|
+
return register_docstring(nil)
|
36
|
+
end
|
37
|
+
|
38
|
+
# ignore DSL definitions if @method/@attribute directive is used
|
39
|
+
if @docstring =~ /^@!?(method|attribute)\b/
|
40
|
+
return register_docstring(nil)
|
41
|
+
end
|
42
|
+
|
43
|
+
object = MethodObject.new(namespace, method_name, scope)
|
44
|
+
object.signature = method_signature
|
45
|
+
register(object)
|
46
|
+
end
|
47
|
+
|
48
|
+
def register_docstring(object, docstring = @docstring, stmt = statement)
|
49
|
+
super
|
50
|
+
end
|
51
|
+
|
52
|
+
private
|
53
|
+
|
54
|
+
def implicit_docstring?
|
55
|
+
tags = %w(method attribute overload visibility scope return)
|
56
|
+
tags.any? {|tag| @docstring =~ /^@!?#{tag}\b/ }
|
57
|
+
end
|
58
|
+
|
59
|
+
def method_name
|
60
|
+
name = call_params.first || ""
|
61
|
+
if name =~ /^#{CodeObjects::METHODNAMEMATCH}$/
|
62
|
+
name
|
63
|
+
else
|
64
|
+
raise UndocumentableError, "method, missing name"
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
def method_signature
|
69
|
+
"def #{method_name}"
|
70
|
+
end
|
71
|
+
|
72
|
+
def find_attached_macro
|
73
|
+
Registry.all(:macro).each do |macro|
|
74
|
+
next unless macro.method_object
|
75
|
+
next unless macro_name_matches(macro)
|
76
|
+
(namespace.inheritance_tree(true) + [P('Object')]).each do |obj|
|
77
|
+
return macro if obj == macro.method_object.namespace
|
78
|
+
end
|
79
|
+
end
|
80
|
+
nil
|
81
|
+
end
|
82
|
+
|
83
|
+
# @return [Boolean] whether caller method matches a macro or
|
84
|
+
# its alias names.
|
85
|
+
def macro_name_matches(macro)
|
86
|
+
objs = [macro.method_object]
|
87
|
+
if objs.first.type != :proxy && objs.first.respond_to?(:aliases)
|
88
|
+
objs.concat(objs.first.aliases)
|
89
|
+
end
|
90
|
+
|
91
|
+
objs.any? {|obj| obj.name.to_s == caller_method.to_s }
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|