yard 0.9.16 → 0.9.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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
data/lib/yard/tags/option_tag.rb
CHANGED
@@ -1,13 +1,13 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
module YARD
|
3
|
-
module Tags
|
4
|
-
class OptionTag < Tag
|
5
|
-
attr_accessor :pair
|
6
|
-
|
7
|
-
def initialize(tag_name, name, pair)
|
8
|
-
super(tag_name, nil, nil, name)
|
9
|
-
@pair = pair
|
10
|
-
end
|
11
|
-
end
|
12
|
-
end
|
13
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
module YARD
|
3
|
+
module Tags
|
4
|
+
class OptionTag < Tag
|
5
|
+
attr_accessor :pair
|
6
|
+
|
7
|
+
def initialize(tag_name, name, pair)
|
8
|
+
super(tag_name, nil, nil, name)
|
9
|
+
@pair = pair
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -1,71 +1,71 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
module YARD
|
3
|
-
module Tags
|
4
|
-
class OverloadTag < Tag
|
5
|
-
attr_reader :signature, :parameters, :docstring
|
6
|
-
|
7
|
-
def initialize(tag_name, text)
|
8
|
-
super(tag_name, nil)
|
9
|
-
parse_tag(text)
|
10
|
-
parse_signature
|
11
|
-
end
|
12
|
-
|
13
|
-
def tag(name) docstring.tag(name) end
|
14
|
-
def tags(name = nil) docstring.tags(name) end
|
15
|
-
def has_tag?(name) docstring.has_tag?(name) end
|
16
|
-
|
17
|
-
def object=(value)
|
18
|
-
super(value)
|
19
|
-
docstring.object = value
|
20
|
-
docstring.tags.each {|tag| tag.object = value }
|
21
|
-
end
|
22
|
-
|
23
|
-
def name(prefix = false)
|
24
|
-
return @name unless prefix
|
25
|
-
object.scope == :class ? @name.to_s : "#{object.send(:sep)}#{@name}"
|
26
|
-
end
|
27
|
-
|
28
|
-
def method_missing(*args, &block)
|
29
|
-
object.send(*args, &block)
|
30
|
-
end
|
31
|
-
|
32
|
-
def type
|
33
|
-
object.type
|
34
|
-
end
|
35
|
-
|
36
|
-
def is_a?(other)
|
37
|
-
object.is_a?(other) || self.class >= other.class || false
|
38
|
-
end
|
39
|
-
alias kind_of? is_a?
|
40
|
-
|
41
|
-
private
|
42
|
-
|
43
|
-
def parse_tag(text)
|
44
|
-
@signature, text = *text.split(/\r?\n/, 2)
|
45
|
-
@signature.strip!
|
46
|
-
text ||= String.new("")
|
47
|
-
numspaces = text[/\A(\s*)/, 1].length
|
48
|
-
text.gsub!(/^[ \t]{#{numspaces}}/, '')
|
49
|
-
text.strip!
|
50
|
-
@docstring = Docstring.new(text, nil)
|
51
|
-
end
|
52
|
-
|
53
|
-
def parse_signature
|
54
|
-
if signature =~ /^(?:def\s)?\s*(#{CodeObjects::METHODMATCH})(?:(?:\s+|\s*\()(.*)(?:\)\s*$)?)?/m
|
55
|
-
meth = $1
|
56
|
-
args = $2
|
57
|
-
meth.gsub!(/\s+/, '')
|
58
|
-
# FIXME: refactor this code to not make use of the Handlers::Base class (tokval_list should be moved)
|
59
|
-
toks = YARD::Parser::Ruby::Legacy::TokenList.new(args)
|
60
|
-
args = YARD::Handlers::Ruby::Legacy::Base.new(nil, nil).send(:tokval_list, toks, :all)
|
61
|
-
args = args.map do |a|
|
62
|
-
k, v = *a.split(/:|=/, 2)
|
63
|
-
[k.strip.to_s + (a[k.size, 1] == ':' ? ':' : ''), (v ? v.strip : nil)]
|
64
|
-
end if args
|
65
|
-
@name = meth.to_sym
|
66
|
-
@parameters = args
|
67
|
-
end
|
68
|
-
end
|
69
|
-
end
|
70
|
-
end
|
71
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
module YARD
|
3
|
+
module Tags
|
4
|
+
class OverloadTag < Tag
|
5
|
+
attr_reader :signature, :parameters, :docstring
|
6
|
+
|
7
|
+
def initialize(tag_name, text)
|
8
|
+
super(tag_name, nil)
|
9
|
+
parse_tag(text)
|
10
|
+
parse_signature
|
11
|
+
end
|
12
|
+
|
13
|
+
def tag(name) docstring.tag(name) end
|
14
|
+
def tags(name = nil) docstring.tags(name) end
|
15
|
+
def has_tag?(name) docstring.has_tag?(name) end
|
16
|
+
|
17
|
+
def object=(value)
|
18
|
+
super(value)
|
19
|
+
docstring.object = value
|
20
|
+
docstring.tags.each {|tag| tag.object = value }
|
21
|
+
end
|
22
|
+
|
23
|
+
def name(prefix = false)
|
24
|
+
return @name unless prefix
|
25
|
+
object.scope == :class ? @name.to_s : "#{object.send(:sep)}#{@name}"
|
26
|
+
end
|
27
|
+
|
28
|
+
def method_missing(*args, &block)
|
29
|
+
object.send(*args, &block)
|
30
|
+
end
|
31
|
+
|
32
|
+
def type
|
33
|
+
object.type
|
34
|
+
end
|
35
|
+
|
36
|
+
def is_a?(other)
|
37
|
+
object.is_a?(other) || self.class >= other.class || false
|
38
|
+
end
|
39
|
+
alias kind_of? is_a?
|
40
|
+
|
41
|
+
private
|
42
|
+
|
43
|
+
def parse_tag(text)
|
44
|
+
@signature, text = *text.split(/\r?\n/, 2)
|
45
|
+
@signature.strip!
|
46
|
+
text ||= String.new("")
|
47
|
+
numspaces = text[/\A(\s*)/, 1].length
|
48
|
+
text.gsub!(/^[ \t]{#{numspaces}}/, '')
|
49
|
+
text.strip!
|
50
|
+
@docstring = Docstring.new(text, nil)
|
51
|
+
end
|
52
|
+
|
53
|
+
def parse_signature
|
54
|
+
if signature =~ /^(?:def\s)?\s*(#{CodeObjects::METHODMATCH})(?:(?:\s+|\s*\()(.*)(?:\)\s*$)?)?/m
|
55
|
+
meth = $1
|
56
|
+
args = $2
|
57
|
+
meth.gsub!(/\s+/, '')
|
58
|
+
# FIXME: refactor this code to not make use of the Handlers::Base class (tokval_list should be moved)
|
59
|
+
toks = YARD::Parser::Ruby::Legacy::TokenList.new(args)
|
60
|
+
args = YARD::Handlers::Ruby::Legacy::Base.new(nil, nil).send(:tokval_list, toks, :all)
|
61
|
+
args = args.map do |a|
|
62
|
+
k, v = *a.split(/:|=/, 2)
|
63
|
+
[k.strip.to_s + (a[k.size, 1] == ':' ? ':' : ''), (v ? v.strip : nil)]
|
64
|
+
end if args
|
65
|
+
@name = meth.to_sym
|
66
|
+
@parameters = args
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
data/lib/yard/tags/ref_tag.rb
CHANGED
@@ -1,8 +1,8 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
module YARD
|
3
|
-
module Tags
|
4
|
-
module RefTag
|
5
|
-
attr_accessor :owner
|
6
|
-
end
|
7
|
-
end
|
8
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
module YARD
|
3
|
+
module Tags
|
4
|
+
module RefTag
|
5
|
+
attr_accessor :owner
|
6
|
+
end
|
7
|
+
end
|
8
|
+
end
|
@@ -1,28 +1,28 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
module YARD
|
3
|
-
module Tags
|
4
|
-
class RefTagList
|
5
|
-
attr_accessor :owner, :tag_name, :name
|
6
|
-
|
7
|
-
def initialize(tag_name, owner, name = nil)
|
8
|
-
@owner = CodeObjects::Proxy === owner ? owner : P(owner)
|
9
|
-
@tag_name = tag_name.to_s
|
10
|
-
@name = name
|
11
|
-
end
|
12
|
-
|
13
|
-
def tags
|
14
|
-
if owner.is_a?(CodeObjects::Base)
|
15
|
-
o = owner.tags(tag_name)
|
16
|
-
o = o.select {|t| t.name.to_s == name.to_s } if name
|
17
|
-
o.each do |t|
|
18
|
-
t.extend(RefTag)
|
19
|
-
t.owner = owner
|
20
|
-
end
|
21
|
-
o
|
22
|
-
else
|
23
|
-
[]
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
module YARD
|
3
|
+
module Tags
|
4
|
+
class RefTagList
|
5
|
+
attr_accessor :owner, :tag_name, :name
|
6
|
+
|
7
|
+
def initialize(tag_name, owner, name = nil)
|
8
|
+
@owner = CodeObjects::Proxy === owner ? owner : P(owner)
|
9
|
+
@tag_name = tag_name.to_s
|
10
|
+
@name = name
|
11
|
+
end
|
12
|
+
|
13
|
+
def tags
|
14
|
+
if owner.is_a?(CodeObjects::Base)
|
15
|
+
o = owner.tags(tag_name)
|
16
|
+
o = o.select {|t| t.name.to_s == name.to_s } if name
|
17
|
+
o.each do |t|
|
18
|
+
t.extend(RefTag)
|
19
|
+
t.owner = owner
|
20
|
+
end
|
21
|
+
o
|
22
|
+
else
|
23
|
+
[]
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
data/lib/yard/tags/tag.rb
CHANGED
@@ -1,71 +1,71 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
module YARD
|
3
|
-
module Tags
|
4
|
-
# Represents a metadata tag value (+@tag+). Tags can have any combination of
|
5
|
-
# {#types}, {#name} and {#text}, or none of the above.
|
6
|
-
#
|
7
|
-
# @example Programmatic tag creation
|
8
|
-
# # The following docstring syntax:
|
9
|
-
# # @param [String, nil] arg an argument
|
10
|
-
# #
|
11
|
-
# # is equivalent to:
|
12
|
-
# Tag.new(:param, 'an argument', ['String', 'nil'], 'arg')
|
13
|
-
class Tag
|
14
|
-
# @return [String] the name of the tag
|
15
|
-
attr_accessor :tag_name
|
16
|
-
|
17
|
-
# @return [String] the tag text associated with the tag
|
18
|
-
# @return [nil] if no tag text is supplied
|
19
|
-
attr_accessor :text
|
20
|
-
|
21
|
-
# @return [Array<String>] a list of types associated with the tag
|
22
|
-
# @return [nil] if no types are associated with the tag
|
23
|
-
attr_accessor :types
|
24
|
-
|
25
|
-
# @return [String] a name associated with the tag
|
26
|
-
attr_accessor :name
|
27
|
-
|
28
|
-
# @return [CodeObjects::Base] the associated object
|
29
|
-
attr_accessor :object
|
30
|
-
|
31
|
-
# Creates a new tag object with a tag name and text. Optionally, formally declared types
|
32
|
-
# and a key name can be specified.
|
33
|
-
#
|
34
|
-
# Types are mainly for meta tags that rely on type information, such as +param+, +return+, etc.
|
35
|
-
#
|
36
|
-
# Key names are for tags that declare meta data for a specific key or name, such as +param+,
|
37
|
-
# +raise+, etc.
|
38
|
-
#
|
39
|
-
# @param [#to_s] tag_name the tag name to create the tag for
|
40
|
-
# @param [String] text the descriptive text for this tag
|
41
|
-
# @param [Array<String>] types optional type list of formally declared types
|
42
|
-
# for the tag
|
43
|
-
# @param [String] name optional key name which the tag refers to
|
44
|
-
def initialize(tag_name, text, types = nil, name = nil)
|
45
|
-
@tag_name = tag_name.to_s
|
46
|
-
@text = text
|
47
|
-
@name = name
|
48
|
-
@types = (types ? [types].flatten.compact : nil)
|
49
|
-
end
|
50
|
-
|
51
|
-
# Convenience method to access the first type specified. This should mainly
|
52
|
-
# be used for tags that only specify one type.
|
53
|
-
#
|
54
|
-
# @return [String] the first of the list of specified types
|
55
|
-
# @see #types
|
56
|
-
def type
|
57
|
-
types.first
|
58
|
-
end
|
59
|
-
|
60
|
-
# Provides a plain English summary of the type specification, or nil
|
61
|
-
# if no types are provided or parseable.
|
62
|
-
#
|
63
|
-
# @return [String] a plain English description of the associated types
|
64
|
-
# @return [nil] if no types are provided or not parseable
|
65
|
-
def explain_types
|
66
|
-
return nil if !types || types.empty?
|
67
|
-
TypesExplainer.explain(*types)
|
68
|
-
end
|
69
|
-
end
|
70
|
-
end
|
71
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
module YARD
|
3
|
+
module Tags
|
4
|
+
# Represents a metadata tag value (+@tag+). Tags can have any combination of
|
5
|
+
# {#types}, {#name} and {#text}, or none of the above.
|
6
|
+
#
|
7
|
+
# @example Programmatic tag creation
|
8
|
+
# # The following docstring syntax:
|
9
|
+
# # @param [String, nil] arg an argument
|
10
|
+
# #
|
11
|
+
# # is equivalent to:
|
12
|
+
# Tag.new(:param, 'an argument', ['String', 'nil'], 'arg')
|
13
|
+
class Tag
|
14
|
+
# @return [String] the name of the tag
|
15
|
+
attr_accessor :tag_name
|
16
|
+
|
17
|
+
# @return [String] the tag text associated with the tag
|
18
|
+
# @return [nil] if no tag text is supplied
|
19
|
+
attr_accessor :text
|
20
|
+
|
21
|
+
# @return [Array<String>] a list of types associated with the tag
|
22
|
+
# @return [nil] if no types are associated with the tag
|
23
|
+
attr_accessor :types
|
24
|
+
|
25
|
+
# @return [String] a name associated with the tag
|
26
|
+
attr_accessor :name
|
27
|
+
|
28
|
+
# @return [CodeObjects::Base] the associated object
|
29
|
+
attr_accessor :object
|
30
|
+
|
31
|
+
# Creates a new tag object with a tag name and text. Optionally, formally declared types
|
32
|
+
# and a key name can be specified.
|
33
|
+
#
|
34
|
+
# Types are mainly for meta tags that rely on type information, such as +param+, +return+, etc.
|
35
|
+
#
|
36
|
+
# Key names are for tags that declare meta data for a specific key or name, such as +param+,
|
37
|
+
# +raise+, etc.
|
38
|
+
#
|
39
|
+
# @param [#to_s] tag_name the tag name to create the tag for
|
40
|
+
# @param [String] text the descriptive text for this tag
|
41
|
+
# @param [Array<String>] types optional type list of formally declared types
|
42
|
+
# for the tag
|
43
|
+
# @param [String] name optional key name which the tag refers to
|
44
|
+
def initialize(tag_name, text, types = nil, name = nil)
|
45
|
+
@tag_name = tag_name.to_s
|
46
|
+
@text = text
|
47
|
+
@name = name
|
48
|
+
@types = (types ? [types].flatten.compact : nil)
|
49
|
+
end
|
50
|
+
|
51
|
+
# Convenience method to access the first type specified. This should mainly
|
52
|
+
# be used for tags that only specify one type.
|
53
|
+
#
|
54
|
+
# @return [String] the first of the list of specified types
|
55
|
+
# @see #types
|
56
|
+
def type
|
57
|
+
types.first
|
58
|
+
end
|
59
|
+
|
60
|
+
# Provides a plain English summary of the type specification, or nil
|
61
|
+
# if no types are provided or parseable.
|
62
|
+
#
|
63
|
+
# @return [String] a plain English description of the associated types
|
64
|
+
# @return [nil] if no types are provided or not parseable
|
65
|
+
def explain_types
|
66
|
+
return nil if !types || types.empty?
|
67
|
+
TypesExplainer.explain(*types)
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
@@ -1,7 +1,7 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
module YARD
|
3
|
-
module Tags
|
4
|
-
class TagFormatError < RuntimeError
|
5
|
-
end
|
6
|
-
end
|
7
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
module YARD
|
3
|
+
module Tags
|
4
|
+
class TagFormatError < RuntimeError
|
5
|
+
end
|
6
|
+
end
|
7
|
+
end
|
@@ -1,162 +1,162 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
require 'strscan'
|
3
|
-
|
4
|
-
module YARD
|
5
|
-
module Tags
|
6
|
-
class TypesExplainer
|
7
|
-
# (see Tag#explain_types)
|
8
|
-
# @param types [Array<String>] a list of types to parse and summarize
|
9
|
-
def self.explain(*types)
|
10
|
-
explain!(*types)
|
11
|
-
rescue SyntaxError
|
12
|
-
nil
|
13
|
-
end
|
14
|
-
|
15
|
-
# (see explain)
|
16
|
-
# @raise [SyntaxError] if the types are not parseable
|
17
|
-
def self.explain!(*types)
|
18
|
-
Parser.parse(types.join(", ")).join("; ")
|
19
|
-
end
|
20
|
-
|
21
|
-
class << self
|
22
|
-
private :new
|
23
|
-
end
|
24
|
-
|
25
|
-
# @private
|
26
|
-
class Type
|
27
|
-
attr_accessor :name
|
28
|
-
|
29
|
-
def initialize(name)
|
30
|
-
@name = name
|
31
|
-
end
|
32
|
-
|
33
|
-
def to_s(singular = true)
|
34
|
-
if name[0, 1] == "#"
|
35
|
-
singular ? "an object that responds to #{name}" : "objects that respond to #{name}"
|
36
|
-
elsif name[0, 1] =~ /[A-Z]/
|
37
|
-
singular ? "a#{name[0, 1] =~ /[aeiou]/i ? 'n' : ''} " + name : "#{name}#{name[-1, 1] =~ /[A-Z]/ ? "'" : ''}s"
|
38
|
-
else
|
39
|
-
name
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
private
|
44
|
-
|
45
|
-
def list_join(list)
|
46
|
-
index = 0
|
47
|
-
list.inject(String.new) do |acc, el|
|
48
|
-
acc << el.to_s
|
49
|
-
acc << ", " if index < list.size - 2
|
50
|
-
acc << " or " if index == list.size - 2
|
51
|
-
index += 1
|
52
|
-
acc
|
53
|
-
end
|
54
|
-
end
|
55
|
-
end
|
56
|
-
|
57
|
-
# @private
|
58
|
-
class CollectionType < Type
|
59
|
-
attr_accessor :types
|
60
|
-
|
61
|
-
def initialize(name, types)
|
62
|
-
@name = name
|
63
|
-
@types = types
|
64
|
-
end
|
65
|
-
|
66
|
-
def to_s(_singular = true)
|
67
|
-
"a#{name[0, 1] =~ /[aeiou]/i ? 'n' : ''} #{name} of (" + list_join(types.map {|t| t.to_s(false) }) + ")"
|
68
|
-
end
|
69
|
-
end
|
70
|
-
|
71
|
-
# @private
|
72
|
-
class FixedCollectionType < CollectionType
|
73
|
-
def to_s(_singular = true)
|
74
|
-
"a#{name[0, 1] =~ /[aeiou]/i ? 'n' : ''} #{name} containing (" + types.map(&:to_s).join(" followed by ") + ")"
|
75
|
-
end
|
76
|
-
end
|
77
|
-
|
78
|
-
# @private
|
79
|
-
class HashCollectionType < Type
|
80
|
-
attr_accessor :key_types, :value_types
|
81
|
-
|
82
|
-
def initialize(name, key_types, value_types)
|
83
|
-
@name = name
|
84
|
-
@key_types = key_types
|
85
|
-
@value_types = value_types
|
86
|
-
end
|
87
|
-
|
88
|
-
def to_s(_singular = true)
|
89
|
-
"a#{name[0, 1] =~ /[aeiou]/i ? 'n' : ''} #{name} with keys made of (" +
|
90
|
-
list_join(key_types.map {|t| t.to_s(false) }) +
|
91
|
-
") and values of (" + list_join(value_types.map {|t| t.to_s(false) }) + ")"
|
92
|
-
end
|
93
|
-
end
|
94
|
-
|
95
|
-
# @private
|
96
|
-
class Parser
|
97
|
-
include CodeObjects
|
98
|
-
|
99
|
-
TOKENS = {
|
100
|
-
:collection_start => /</,
|
101
|
-
:collection_end => />/,
|
102
|
-
:fixed_collection_start => /\(/,
|
103
|
-
:fixed_collection_end => /\)/,
|
104
|
-
:type_name => /#{ISEP}#{METHODNAMEMATCH}|#{NAMESPACEMATCH}|\w+/,
|
105
|
-
:type_next => /[,;]/,
|
106
|
-
:whitespace => /\s+/,
|
107
|
-
:hash_collection_start => /\{/,
|
108
|
-
:hash_collection_next => /=>/,
|
109
|
-
:hash_collection_end => /\}/,
|
110
|
-
:parse_end => nil
|
111
|
-
}
|
112
|
-
|
113
|
-
def self.parse(string)
|
114
|
-
new(string).parse
|
115
|
-
end
|
116
|
-
|
117
|
-
def initialize(string)
|
118
|
-
@scanner = StringScanner.new(string)
|
119
|
-
end
|
120
|
-
|
121
|
-
def parse
|
122
|
-
types = []
|
123
|
-
type = nil
|
124
|
-
name = nil
|
125
|
-
loop do
|
126
|
-
found = false
|
127
|
-
TOKENS.each do |token_type, match|
|
128
|
-
# TODO: cleanup this code.
|
129
|
-
# rubocop:disable Lint/AssignmentInCondition
|
130
|
-
next unless (match.nil? && @scanner.eos?) || (match && token = @scanner.scan(match))
|
131
|
-
found = true
|
132
|
-
case token_type
|
133
|
-
when :type_name
|
134
|
-
raise SyntaxError, "expecting END, got name '#{token}'" if name
|
135
|
-
name = token
|
136
|
-
when :type_next
|
137
|
-
raise SyntaxError, "expecting name, got '#{token}' at #{@scanner.pos}" if name.nil?
|
138
|
-
type = Type.new(name) unless type
|
139
|
-
types << type
|
140
|
-
type = nil
|
141
|
-
name = nil
|
142
|
-
when :fixed_collection_start, :collection_start
|
143
|
-
name ||= "Array"
|
144
|
-
klass = token_type == :collection_start ? CollectionType : FixedCollectionType
|
145
|
-
type = klass.new(name, parse)
|
146
|
-
when :hash_collection_start
|
147
|
-
name ||= "Hash"
|
148
|
-
type = HashCollectionType.new(name, parse, parse)
|
149
|
-
when :hash_collection_next, :hash_collection_end, :fixed_collection_end, :collection_end, :parse_end
|
150
|
-
raise SyntaxError, "expecting name, got '#{token}'" if name.nil?
|
151
|
-
type = Type.new(name) unless type
|
152
|
-
types << type
|
153
|
-
return types
|
154
|
-
end
|
155
|
-
end
|
156
|
-
raise SyntaxError, "invalid character at #{@scanner.peek(1)}" unless found
|
157
|
-
end
|
158
|
-
end
|
159
|
-
end
|
160
|
-
end
|
161
|
-
end
|
162
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
require 'strscan'
|
3
|
+
|
4
|
+
module YARD
|
5
|
+
module Tags
|
6
|
+
class TypesExplainer
|
7
|
+
# (see Tag#explain_types)
|
8
|
+
# @param types [Array<String>] a list of types to parse and summarize
|
9
|
+
def self.explain(*types)
|
10
|
+
explain!(*types)
|
11
|
+
rescue SyntaxError
|
12
|
+
nil
|
13
|
+
end
|
14
|
+
|
15
|
+
# (see explain)
|
16
|
+
# @raise [SyntaxError] if the types are not parseable
|
17
|
+
def self.explain!(*types)
|
18
|
+
Parser.parse(types.join(", ")).join("; ")
|
19
|
+
end
|
20
|
+
|
21
|
+
class << self
|
22
|
+
private :new
|
23
|
+
end
|
24
|
+
|
25
|
+
# @private
|
26
|
+
class Type
|
27
|
+
attr_accessor :name
|
28
|
+
|
29
|
+
def initialize(name)
|
30
|
+
@name = name
|
31
|
+
end
|
32
|
+
|
33
|
+
def to_s(singular = true)
|
34
|
+
if name[0, 1] == "#"
|
35
|
+
singular ? "an object that responds to #{name}" : "objects that respond to #{name}"
|
36
|
+
elsif name[0, 1] =~ /[A-Z]/
|
37
|
+
singular ? "a#{name[0, 1] =~ /[aeiou]/i ? 'n' : ''} " + name : "#{name}#{name[-1, 1] =~ /[A-Z]/ ? "'" : ''}s"
|
38
|
+
else
|
39
|
+
name
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
private
|
44
|
+
|
45
|
+
def list_join(list)
|
46
|
+
index = 0
|
47
|
+
list.inject(String.new) do |acc, el|
|
48
|
+
acc << el.to_s
|
49
|
+
acc << ", " if index < list.size - 2
|
50
|
+
acc << " or " if index == list.size - 2
|
51
|
+
index += 1
|
52
|
+
acc
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
# @private
|
58
|
+
class CollectionType < Type
|
59
|
+
attr_accessor :types
|
60
|
+
|
61
|
+
def initialize(name, types)
|
62
|
+
@name = name
|
63
|
+
@types = types
|
64
|
+
end
|
65
|
+
|
66
|
+
def to_s(_singular = true)
|
67
|
+
"a#{name[0, 1] =~ /[aeiou]/i ? 'n' : ''} #{name} of (" + list_join(types.map {|t| t.to_s(false) }) + ")"
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
# @private
|
72
|
+
class FixedCollectionType < CollectionType
|
73
|
+
def to_s(_singular = true)
|
74
|
+
"a#{name[0, 1] =~ /[aeiou]/i ? 'n' : ''} #{name} containing (" + types.map(&:to_s).join(" followed by ") + ")"
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
# @private
|
79
|
+
class HashCollectionType < Type
|
80
|
+
attr_accessor :key_types, :value_types
|
81
|
+
|
82
|
+
def initialize(name, key_types, value_types)
|
83
|
+
@name = name
|
84
|
+
@key_types = key_types
|
85
|
+
@value_types = value_types
|
86
|
+
end
|
87
|
+
|
88
|
+
def to_s(_singular = true)
|
89
|
+
"a#{name[0, 1] =~ /[aeiou]/i ? 'n' : ''} #{name} with keys made of (" +
|
90
|
+
list_join(key_types.map {|t| t.to_s(false) }) +
|
91
|
+
") and values of (" + list_join(value_types.map {|t| t.to_s(false) }) + ")"
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
95
|
+
# @private
|
96
|
+
class Parser
|
97
|
+
include CodeObjects
|
98
|
+
|
99
|
+
TOKENS = {
|
100
|
+
:collection_start => /</,
|
101
|
+
:collection_end => />/,
|
102
|
+
:fixed_collection_start => /\(/,
|
103
|
+
:fixed_collection_end => /\)/,
|
104
|
+
:type_name => /#{ISEP}#{METHODNAMEMATCH}|#{NAMESPACEMATCH}|\w+/,
|
105
|
+
:type_next => /[,;]/,
|
106
|
+
:whitespace => /\s+/,
|
107
|
+
:hash_collection_start => /\{/,
|
108
|
+
:hash_collection_next => /=>/,
|
109
|
+
:hash_collection_end => /\}/,
|
110
|
+
:parse_end => nil
|
111
|
+
}
|
112
|
+
|
113
|
+
def self.parse(string)
|
114
|
+
new(string).parse
|
115
|
+
end
|
116
|
+
|
117
|
+
def initialize(string)
|
118
|
+
@scanner = StringScanner.new(string)
|
119
|
+
end
|
120
|
+
|
121
|
+
def parse
|
122
|
+
types = []
|
123
|
+
type = nil
|
124
|
+
name = nil
|
125
|
+
loop do
|
126
|
+
found = false
|
127
|
+
TOKENS.each do |token_type, match|
|
128
|
+
# TODO: cleanup this code.
|
129
|
+
# rubocop:disable Lint/AssignmentInCondition
|
130
|
+
next unless (match.nil? && @scanner.eos?) || (match && token = @scanner.scan(match))
|
131
|
+
found = true
|
132
|
+
case token_type
|
133
|
+
when :type_name
|
134
|
+
raise SyntaxError, "expecting END, got name '#{token}'" if name
|
135
|
+
name = token
|
136
|
+
when :type_next
|
137
|
+
raise SyntaxError, "expecting name, got '#{token}' at #{@scanner.pos}" if name.nil?
|
138
|
+
type = Type.new(name) unless type
|
139
|
+
types << type
|
140
|
+
type = nil
|
141
|
+
name = nil
|
142
|
+
when :fixed_collection_start, :collection_start
|
143
|
+
name ||= "Array"
|
144
|
+
klass = token_type == :collection_start ? CollectionType : FixedCollectionType
|
145
|
+
type = klass.new(name, parse)
|
146
|
+
when :hash_collection_start
|
147
|
+
name ||= "Hash"
|
148
|
+
type = HashCollectionType.new(name, parse, parse)
|
149
|
+
when :hash_collection_next, :hash_collection_end, :fixed_collection_end, :collection_end, :parse_end
|
150
|
+
raise SyntaxError, "expecting name, got '#{token}'" if name.nil?
|
151
|
+
type = Type.new(name) unless type
|
152
|
+
types << type
|
153
|
+
return types
|
154
|
+
end
|
155
|
+
end
|
156
|
+
raise SyntaxError, "invalid character at #{@scanner.peek(1)}" unless found
|
157
|
+
end
|
158
|
+
end
|
159
|
+
end
|
160
|
+
end
|
161
|
+
end
|
162
|
+
end
|