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,27 +1,27 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
# Handles module_function calls to turn methods into public class methods.
|
3
|
-
# Also creates a private instance copy of the method.
|
4
|
-
class YARD::Handlers::Ruby::ModuleFunctionHandler < YARD::Handlers::Ruby::Base
|
5
|
-
handles method_call(:module_function)
|
6
|
-
namespace_only
|
7
|
-
|
8
|
-
process do
|
9
|
-
return if statement.jump(:ident) == statement
|
10
|
-
case statement.type
|
11
|
-
when :var_ref, :vcall
|
12
|
-
self.scope = :module
|
13
|
-
when :fcall, :command
|
14
|
-
statement[1].traverse do |node|
|
15
|
-
case node.type
|
16
|
-
when :symbol; name = node.first.source
|
17
|
-
when :string_content; name = node.source
|
18
|
-
else next
|
19
|
-
end
|
20
|
-
instance_method = MethodObject.new(namespace, name)
|
21
|
-
class_method = MethodObject.new(namespace, name, :module)
|
22
|
-
instance_method.copy_to(class_method)
|
23
|
-
class_method.visibility = :public
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
# Handles module_function calls to turn methods into public class methods.
|
3
|
+
# Also creates a private instance copy of the method.
|
4
|
+
class YARD::Handlers::Ruby::ModuleFunctionHandler < YARD::Handlers::Ruby::Base
|
5
|
+
handles method_call(:module_function)
|
6
|
+
namespace_only
|
7
|
+
|
8
|
+
process do
|
9
|
+
return if statement.jump(:ident) == statement
|
10
|
+
case statement.type
|
11
|
+
when :var_ref, :vcall
|
12
|
+
self.scope = :module
|
13
|
+
when :fcall, :command
|
14
|
+
statement[1].traverse do |node|
|
15
|
+
case node.type
|
16
|
+
when :symbol; name = node.first.source
|
17
|
+
when :string_content; name = node.source
|
18
|
+
else next
|
19
|
+
end
|
20
|
+
instance_method = MethodObject.new(namespace, name)
|
21
|
+
class_method = MethodObject.new(namespace, name, :module)
|
22
|
+
instance_method.copy_to(class_method)
|
23
|
+
class_method.visibility = :public
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -1,12 +1,12 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
# Handles the declaration of a module
|
3
|
-
class YARD::Handlers::Ruby::ModuleHandler < YARD::Handlers::Ruby::Base
|
4
|
-
handles :module
|
5
|
-
namespace_only
|
6
|
-
|
7
|
-
process do
|
8
|
-
modname = statement[0].source
|
9
|
-
mod = register ModuleObject.new(namespace, modname)
|
10
|
-
parse_block(statement[1], :namespace => mod)
|
11
|
-
end
|
12
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
# Handles the declaration of a module
|
3
|
+
class YARD::Handlers::Ruby::ModuleHandler < YARD::Handlers::Ruby::Base
|
4
|
+
handles :module
|
5
|
+
namespace_only
|
6
|
+
|
7
|
+
process do
|
8
|
+
modname = statement[0].source
|
9
|
+
mod = register ModuleObject.new(namespace, modname)
|
10
|
+
parse_block(statement[1], :namespace => mod)
|
11
|
+
end
|
12
|
+
end
|
@@ -1,14 +1,14 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
# Sets visibility of a class method to private.
|
3
|
-
class YARD::Handlers::Ruby::PrivateClassMethodHandler < YARD::Handlers::Ruby::Base
|
4
|
-
include YARD::Handlers::Ruby::DecoratorHandlerMethods
|
5
|
-
|
6
|
-
handles method_call(:private_class_method)
|
7
|
-
namespace_only
|
8
|
-
|
9
|
-
process do
|
10
|
-
process_decorator :scope => :class do |method|
|
11
|
-
method.visibility = :private if method.respond_to? :visibility=
|
12
|
-
end
|
13
|
-
end
|
14
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
# Sets visibility of a class method to private.
|
3
|
+
class YARD::Handlers::Ruby::PrivateClassMethodHandler < YARD::Handlers::Ruby::Base
|
4
|
+
include YARD::Handlers::Ruby::DecoratorHandlerMethods
|
5
|
+
|
6
|
+
handles method_call(:private_class_method)
|
7
|
+
namespace_only
|
8
|
+
|
9
|
+
process do
|
10
|
+
process_decorator :scope => :class do |method|
|
11
|
+
method.visibility = :private if method.respond_to? :visibility=
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -1,43 +1,43 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
module YARD
|
3
|
-
module Handlers
|
4
|
-
module Ruby
|
5
|
-
# Sets visibility of a constant (class, module, const)
|
6
|
-
class PrivateConstantHandler < YARD::Handlers::Ruby::Base
|
7
|
-
handles method_call(:private_constant)
|
8
|
-
namespace_only
|
9
|
-
|
10
|
-
process do
|
11
|
-
errors = []
|
12
|
-
statement.parameters.each do |param|
|
13
|
-
next unless AstNode === param
|
14
|
-
begin
|
15
|
-
privatize_constant(param)
|
16
|
-
rescue UndocumentableError => err
|
17
|
-
errors << err.message
|
18
|
-
end
|
19
|
-
end
|
20
|
-
unless errors.empty?
|
21
|
-
msg = errors.size == 1 ? ": #{errors[0]}" : "s: #{errors.join(", ")}"
|
22
|
-
raise UndocumentableError, "private constant#{msg} for #{namespace.path}"
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
private
|
27
|
-
|
28
|
-
def privatize_constant(node)
|
29
|
-
if node.literal? || (node.type == :var_ref && node[0].type == :const)
|
30
|
-
node = node.jump(:tstring_content, :const)
|
31
|
-
const = Proxy.new(namespace, node[0])
|
32
|
-
ensure_loaded!(const)
|
33
|
-
const.visibility = :private
|
34
|
-
else
|
35
|
-
raise UndocumentableError, "invalid argument to private_constant: #{node.source}"
|
36
|
-
end
|
37
|
-
rescue NamespaceMissingError
|
38
|
-
raise UndocumentableError, "private visibility set on unrecognized constant: #{node[0]}"
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
module YARD
|
3
|
+
module Handlers
|
4
|
+
module Ruby
|
5
|
+
# Sets visibility of a constant (class, module, const)
|
6
|
+
class PrivateConstantHandler < YARD::Handlers::Ruby::Base
|
7
|
+
handles method_call(:private_constant)
|
8
|
+
namespace_only
|
9
|
+
|
10
|
+
process do
|
11
|
+
errors = []
|
12
|
+
statement.parameters.each do |param|
|
13
|
+
next unless AstNode === param
|
14
|
+
begin
|
15
|
+
privatize_constant(param)
|
16
|
+
rescue UndocumentableError => err
|
17
|
+
errors << err.message
|
18
|
+
end
|
19
|
+
end
|
20
|
+
unless errors.empty?
|
21
|
+
msg = errors.size == 1 ? ": #{errors[0]}" : "s: #{errors.join(", ")}"
|
22
|
+
raise UndocumentableError, "private constant#{msg} for #{namespace.path}"
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
private
|
27
|
+
|
28
|
+
def privatize_constant(node)
|
29
|
+
if node.literal? || (node.type == :var_ref && node[0].type == :const)
|
30
|
+
node = node.jump(:tstring_content, :const)
|
31
|
+
const = Proxy.new(namespace, node[0])
|
32
|
+
ensure_loaded!(const)
|
33
|
+
const.visibility = :private
|
34
|
+
else
|
35
|
+
raise UndocumentableError, "invalid argument to private_constant: #{node.source}"
|
36
|
+
end
|
37
|
+
rescue NamespaceMissingError
|
38
|
+
raise UndocumentableError, "private visibility set on unrecognized constant: #{node[0]}"
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
@@ -1,14 +1,14 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
# Sets visibility of a class method to public.
|
3
|
-
class YARD::Handlers::Ruby::PublicClassMethodHandler < YARD::Handlers::Ruby::Base
|
4
|
-
include YARD::Handlers::Ruby::DecoratorHandlerMethods
|
5
|
-
|
6
|
-
handles method_call(:public_class_method)
|
7
|
-
namespace_only
|
8
|
-
|
9
|
-
process do
|
10
|
-
process_decorator :scope => :class do |method|
|
11
|
-
method.visibility = :public if method.respond_to? :visibility
|
12
|
-
end
|
13
|
-
end
|
14
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
# Sets visibility of a class method to public.
|
3
|
+
class YARD::Handlers::Ruby::PublicClassMethodHandler < YARD::Handlers::Ruby::Base
|
4
|
+
include YARD::Handlers::Ruby::DecoratorHandlerMethods
|
5
|
+
|
6
|
+
handles method_call(:public_class_method)
|
7
|
+
namespace_only
|
8
|
+
|
9
|
+
process do
|
10
|
+
process_decorator :scope => :class do |method|
|
11
|
+
method.visibility = :public if method.respond_to? :visibility
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -1,143 +1,143 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
# Helper methods to parse @attr_* tags on a class.
|
3
|
-
#
|
4
|
-
# @deprecated The use of +@attr+ tags are deprecated since 0.8.0 in favour of
|
5
|
-
# the +@!attribute+ directive. This module should not be relied on.
|
6
|
-
# @since 0.5.6
|
7
|
-
module YARD::Handlers::Ruby::StructHandlerMethods
|
8
|
-
include YARD::CodeObjects
|
9
|
-
|
10
|
-
# Extracts the user's defined @member tag for a given class and its member. Returns
|
11
|
-
# nil if the user did not define a @member tag for this struct entry.
|
12
|
-
#
|
13
|
-
# @param [ClassObject] klass the class whose tags we're searching
|
14
|
-
# @param [String] member the name of the struct member we need
|
15
|
-
# @param [Symbol] type reader method, or writer method?
|
16
|
-
# @return [Tags::Tag, nil] the tag matching the request, or nil if not found
|
17
|
-
def member_tag_for_member(klass, member, type = :read)
|
18
|
-
specific_tag = type == :read ? :attr_reader : :attr_writer
|
19
|
-
(klass.tags(specific_tag) + klass.tags(:attr)).find {|tag| tag.name == member }
|
20
|
-
end
|
21
|
-
|
22
|
-
# Retrieves all members defined in @attr* tags
|
23
|
-
#
|
24
|
-
# @param [ClassObject] klass the class with the attributes
|
25
|
-
# @return [Array<String>] the list of members defined as attributes on the class
|
26
|
-
def members_from_tags(klass)
|
27
|
-
tags = klass.tags(:attr) + klass.tags(:attr_reader) + klass.tags(:attr_writer)
|
28
|
-
tags.map(&:name).uniq
|
29
|
-
end
|
30
|
-
|
31
|
-
# Determines whether to create an attribute method based on the class's
|
32
|
-
# tags.
|
33
|
-
#
|
34
|
-
# @param [ClassObject] klass the class whose tags we're searching
|
35
|
-
# @param [String] member the name of the struct member we need
|
36
|
-
# @param [Symbol] type (:read) reader method, or writer method?
|
37
|
-
# @return [Boolean] should the attribute be created?
|
38
|
-
def create_member_method?(klass, member, type = :read)
|
39
|
-
return true if (klass.tags(:attr) + klass.tags(:attr_reader) + klass.tags(:attr_writer)).empty?
|
40
|
-
return true if member_tag_for_member(klass, member, type)
|
41
|
-
return !member_tag_for_member(klass, member, :write) if type == :read
|
42
|
-
!member_tag_for_member(klass, member, :read)
|
43
|
-
end
|
44
|
-
|
45
|
-
# Gets the return type for the member in a nicely formatted string. Used
|
46
|
-
# to be injected into auto-generated docstrings.
|
47
|
-
#
|
48
|
-
# @param [Tags::Tag] member_tag the tag object to check for types
|
49
|
-
# @return [String] the user-declared type of the struct member, or [Object] if
|
50
|
-
# the user did not define a type for this member.
|
51
|
-
def return_type_from_tag(member_tag)
|
52
|
-
member_tag && member_tag.types ? member_tag.types : "Object"
|
53
|
-
end
|
54
|
-
|
55
|
-
# Creates the auto-generated docstring for the getter method of a struct's
|
56
|
-
# member. This is used so the generated documentation will look just like that
|
57
|
-
# of an attribute defined using attr_accessor.
|
58
|
-
#
|
59
|
-
# @param [ClassObject] klass the class whose members we're working with
|
60
|
-
# @param [String] member the name of the member we're generating documentation for
|
61
|
-
# @return [String] a docstring to be attached to the getter method for this member
|
62
|
-
def add_reader_tags(klass, new_method, member)
|
63
|
-
member_tag = member_tag_for_member(klass, member, :read)
|
64
|
-
return_type = return_type_from_tag(member_tag)
|
65
|
-
getter_doc_text = member_tag ? member_tag.text : "Returns the value of attribute #{member}"
|
66
|
-
new_method.docstring.replace(getter_doc_text)
|
67
|
-
new_method.add_tag YARD::Tags::Tag.new(:return, "the current value of #{member}", return_type)
|
68
|
-
end
|
69
|
-
|
70
|
-
# Creates the auto-generated docstring for the setter method of a struct's
|
71
|
-
# member. This is used so the generated documentation will look just like that
|
72
|
-
# of an attribute defined using attr_accessor.
|
73
|
-
#
|
74
|
-
# @param [ClassObject] klass the class whose members we're working with
|
75
|
-
# @param [String] member the name of the member we're generating documentation for
|
76
|
-
# @return [String] a docstring to be attached to the setter method for this member
|
77
|
-
def add_writer_tags(klass, new_method, member)
|
78
|
-
member_tag = member_tag_for_member(klass, member, :write)
|
79
|
-
return_type = return_type_from_tag(member_tag)
|
80
|
-
setter_doc_text = member_tag ? member_tag.text : "Sets the attribute #{member}"
|
81
|
-
new_method.docstring.replace(setter_doc_text)
|
82
|
-
new_method.add_tag YARD::Tags::Tag.new(:param, "the value to set the attribute #{member} to.", return_type, "value")
|
83
|
-
new_method.add_tag YARD::Tags::Tag.new(:return, "the newly set value", return_type)
|
84
|
-
end
|
85
|
-
|
86
|
-
# Creates and registers a class object with the given name and superclass name.
|
87
|
-
# Returns it for further use.
|
88
|
-
#
|
89
|
-
# @param [String] classname the name of the class
|
90
|
-
# @param [String] superclass the name of the superclass
|
91
|
-
# @return [ClassObject] the class object for further processing/method attaching
|
92
|
-
def create_class(classname, superclass)
|
93
|
-
register ClassObject.new(namespace, classname) do |o|
|
94
|
-
o.superclass = superclass if superclass
|
95
|
-
o.superclass.type = :class if o.superclass.is_a?(Proxy)
|
96
|
-
end
|
97
|
-
end
|
98
|
-
|
99
|
-
# Creates the setter (writer) method and attaches it to the class as an attribute.
|
100
|
-
# Also sets up the docstring to prettify the documentation output.
|
101
|
-
#
|
102
|
-
# @param [ClassObject] klass the class to attach the method to
|
103
|
-
# @param [String] member the name of the member we're generating a method for
|
104
|
-
def create_writer(klass, member)
|
105
|
-
# We want to convert these members into attributes just like
|
106
|
-
# as if they were declared using attr_accessor.
|
107
|
-
new_meth = register MethodObject.new(klass, "#{member}=", :instance) do |o|
|
108
|
-
o.parameters = [['value', nil]]
|
109
|
-
o.signature ||= "def #{member}=(value)"
|
110
|
-
o.source ||= "#{o.signature}\n @#{member} = value\nend"
|
111
|
-
end
|
112
|
-
add_writer_tags(klass, new_meth, member)
|
113
|
-
klass.attributes[:instance][member][:write] = new_meth
|
114
|
-
end
|
115
|
-
|
116
|
-
# Creates the getter (reader) method and attaches it to the class as an attribute.
|
117
|
-
# Also sets up the docstring to prettify the documentation output.
|
118
|
-
#
|
119
|
-
# @param [ClassObject] klass the class to attach the method to
|
120
|
-
# @param [String] member the name of the member we're generating a method for
|
121
|
-
def create_reader(klass, member)
|
122
|
-
new_meth = register MethodObject.new(klass, member, :instance) do |o|
|
123
|
-
o.signature ||= "def #{member}"
|
124
|
-
o.source ||= "#{o.signature}\n @#{member}\nend"
|
125
|
-
end
|
126
|
-
add_reader_tags(klass, new_meth, member)
|
127
|
-
klass.attributes[:instance][member][:read] = new_meth
|
128
|
-
end
|
129
|
-
|
130
|
-
# Creates the given member methods and attaches them to the given ClassObject.
|
131
|
-
#
|
132
|
-
# @param [ClassObject] klass the class to generate attributes for
|
133
|
-
# @param [Array<String>] members a list of member names
|
134
|
-
def create_attributes(klass, members)
|
135
|
-
# For each parameter, add reader and writers
|
136
|
-
members.each do |member|
|
137
|
-
next if klass.attributes[:instance][member]
|
138
|
-
klass.attributes[:instance][member] = SymbolHash[:read => nil, :write => nil]
|
139
|
-
create_writer klass, member if create_member_method?(klass, member, :write)
|
140
|
-
create_reader klass, member if create_member_method?(klass, member, :read)
|
141
|
-
end
|
142
|
-
end
|
143
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
# Helper methods to parse @attr_* tags on a class.
|
3
|
+
#
|
4
|
+
# @deprecated The use of +@attr+ tags are deprecated since 0.8.0 in favour of
|
5
|
+
# the +@!attribute+ directive. This module should not be relied on.
|
6
|
+
# @since 0.5.6
|
7
|
+
module YARD::Handlers::Ruby::StructHandlerMethods
|
8
|
+
include YARD::CodeObjects
|
9
|
+
|
10
|
+
# Extracts the user's defined @member tag for a given class and its member. Returns
|
11
|
+
# nil if the user did not define a @member tag for this struct entry.
|
12
|
+
#
|
13
|
+
# @param [ClassObject] klass the class whose tags we're searching
|
14
|
+
# @param [String] member the name of the struct member we need
|
15
|
+
# @param [Symbol] type reader method, or writer method?
|
16
|
+
# @return [Tags::Tag, nil] the tag matching the request, or nil if not found
|
17
|
+
def member_tag_for_member(klass, member, type = :read)
|
18
|
+
specific_tag = type == :read ? :attr_reader : :attr_writer
|
19
|
+
(klass.tags(specific_tag) + klass.tags(:attr)).find {|tag| tag.name == member }
|
20
|
+
end
|
21
|
+
|
22
|
+
# Retrieves all members defined in @attr* tags
|
23
|
+
#
|
24
|
+
# @param [ClassObject] klass the class with the attributes
|
25
|
+
# @return [Array<String>] the list of members defined as attributes on the class
|
26
|
+
def members_from_tags(klass)
|
27
|
+
tags = klass.tags(:attr) + klass.tags(:attr_reader) + klass.tags(:attr_writer)
|
28
|
+
tags.map(&:name).uniq
|
29
|
+
end
|
30
|
+
|
31
|
+
# Determines whether to create an attribute method based on the class's
|
32
|
+
# tags.
|
33
|
+
#
|
34
|
+
# @param [ClassObject] klass the class whose tags we're searching
|
35
|
+
# @param [String] member the name of the struct member we need
|
36
|
+
# @param [Symbol] type (:read) reader method, or writer method?
|
37
|
+
# @return [Boolean] should the attribute be created?
|
38
|
+
def create_member_method?(klass, member, type = :read)
|
39
|
+
return true if (klass.tags(:attr) + klass.tags(:attr_reader) + klass.tags(:attr_writer)).empty?
|
40
|
+
return true if member_tag_for_member(klass, member, type)
|
41
|
+
return !member_tag_for_member(klass, member, :write) if type == :read
|
42
|
+
!member_tag_for_member(klass, member, :read)
|
43
|
+
end
|
44
|
+
|
45
|
+
# Gets the return type for the member in a nicely formatted string. Used
|
46
|
+
# to be injected into auto-generated docstrings.
|
47
|
+
#
|
48
|
+
# @param [Tags::Tag] member_tag the tag object to check for types
|
49
|
+
# @return [String] the user-declared type of the struct member, or [Object] if
|
50
|
+
# the user did not define a type for this member.
|
51
|
+
def return_type_from_tag(member_tag)
|
52
|
+
member_tag && member_tag.types ? member_tag.types : "Object"
|
53
|
+
end
|
54
|
+
|
55
|
+
# Creates the auto-generated docstring for the getter method of a struct's
|
56
|
+
# member. This is used so the generated documentation will look just like that
|
57
|
+
# of an attribute defined using attr_accessor.
|
58
|
+
#
|
59
|
+
# @param [ClassObject] klass the class whose members we're working with
|
60
|
+
# @param [String] member the name of the member we're generating documentation for
|
61
|
+
# @return [String] a docstring to be attached to the getter method for this member
|
62
|
+
def add_reader_tags(klass, new_method, member)
|
63
|
+
member_tag = member_tag_for_member(klass, member, :read)
|
64
|
+
return_type = return_type_from_tag(member_tag)
|
65
|
+
getter_doc_text = member_tag ? member_tag.text : "Returns the value of attribute #{member}"
|
66
|
+
new_method.docstring.replace(getter_doc_text)
|
67
|
+
new_method.add_tag YARD::Tags::Tag.new(:return, "the current value of #{member}", return_type)
|
68
|
+
end
|
69
|
+
|
70
|
+
# Creates the auto-generated docstring for the setter method of a struct's
|
71
|
+
# member. This is used so the generated documentation will look just like that
|
72
|
+
# of an attribute defined using attr_accessor.
|
73
|
+
#
|
74
|
+
# @param [ClassObject] klass the class whose members we're working with
|
75
|
+
# @param [String] member the name of the member we're generating documentation for
|
76
|
+
# @return [String] a docstring to be attached to the setter method for this member
|
77
|
+
def add_writer_tags(klass, new_method, member)
|
78
|
+
member_tag = member_tag_for_member(klass, member, :write)
|
79
|
+
return_type = return_type_from_tag(member_tag)
|
80
|
+
setter_doc_text = member_tag ? member_tag.text : "Sets the attribute #{member}"
|
81
|
+
new_method.docstring.replace(setter_doc_text)
|
82
|
+
new_method.add_tag YARD::Tags::Tag.new(:param, "the value to set the attribute #{member} to.", return_type, "value")
|
83
|
+
new_method.add_tag YARD::Tags::Tag.new(:return, "the newly set value", return_type)
|
84
|
+
end
|
85
|
+
|
86
|
+
# Creates and registers a class object with the given name and superclass name.
|
87
|
+
# Returns it for further use.
|
88
|
+
#
|
89
|
+
# @param [String] classname the name of the class
|
90
|
+
# @param [String] superclass the name of the superclass
|
91
|
+
# @return [ClassObject] the class object for further processing/method attaching
|
92
|
+
def create_class(classname, superclass)
|
93
|
+
register ClassObject.new(namespace, classname) do |o|
|
94
|
+
o.superclass = superclass if superclass
|
95
|
+
o.superclass.type = :class if o.superclass.is_a?(Proxy)
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
99
|
+
# Creates the setter (writer) method and attaches it to the class as an attribute.
|
100
|
+
# Also sets up the docstring to prettify the documentation output.
|
101
|
+
#
|
102
|
+
# @param [ClassObject] klass the class to attach the method to
|
103
|
+
# @param [String] member the name of the member we're generating a method for
|
104
|
+
def create_writer(klass, member)
|
105
|
+
# We want to convert these members into attributes just like
|
106
|
+
# as if they were declared using attr_accessor.
|
107
|
+
new_meth = register MethodObject.new(klass, "#{member}=", :instance) do |o|
|
108
|
+
o.parameters = [['value', nil]]
|
109
|
+
o.signature ||= "def #{member}=(value)"
|
110
|
+
o.source ||= "#{o.signature}\n @#{member} = value\nend"
|
111
|
+
end
|
112
|
+
add_writer_tags(klass, new_meth, member)
|
113
|
+
klass.attributes[:instance][member][:write] = new_meth
|
114
|
+
end
|
115
|
+
|
116
|
+
# Creates the getter (reader) method and attaches it to the class as an attribute.
|
117
|
+
# Also sets up the docstring to prettify the documentation output.
|
118
|
+
#
|
119
|
+
# @param [ClassObject] klass the class to attach the method to
|
120
|
+
# @param [String] member the name of the member we're generating a method for
|
121
|
+
def create_reader(klass, member)
|
122
|
+
new_meth = register MethodObject.new(klass, member, :instance) do |o|
|
123
|
+
o.signature ||= "def #{member}"
|
124
|
+
o.source ||= "#{o.signature}\n @#{member}\nend"
|
125
|
+
end
|
126
|
+
add_reader_tags(klass, new_meth, member)
|
127
|
+
klass.attributes[:instance][member][:read] = new_meth
|
128
|
+
end
|
129
|
+
|
130
|
+
# Creates the given member methods and attaches them to the given ClassObject.
|
131
|
+
#
|
132
|
+
# @param [ClassObject] klass the class to generate attributes for
|
133
|
+
# @param [Array<String>] members a list of member names
|
134
|
+
def create_attributes(klass, members)
|
135
|
+
# For each parameter, add reader and writers
|
136
|
+
members.each do |member|
|
137
|
+
next if klass.attributes[:instance][member]
|
138
|
+
klass.attributes[:instance][member] = SymbolHash[:read => nil, :write => nil]
|
139
|
+
create_writer klass, member if create_member_method?(klass, member, :write)
|
140
|
+
create_reader klass, member if create_member_method?(klass, member, :read)
|
141
|
+
end
|
142
|
+
end
|
143
|
+
end
|