yard 0.9.18 → 0.9.19
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 +4 -4
- data/.yardopts +26 -26
- data/CHANGELOG.md +742 -728
- data/LEGAL +66 -66
- data/LICENSE +22 -22
- data/README.md +328 -328
- data/Rakefile +42 -53
- 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 +308 -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 +789 -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 -615
- 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 +134 -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 +11 -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 -386
- 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 +212 -211
- data/lib/yard/handlers/c/init_handler.rb +20 -20
- data/lib/yard/handlers/c/method_handler.rb +45 -45
- 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/common/method_handler.rb +19 -0
- 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 -96
- 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 +114 -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 -646
- 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 +6 -6
- 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 +896 -862
- data/spec/cli/yri_spec.rb +101 -101
- data/spec/code_objects/base_spec.rb +470 -470
- 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 +9 -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 -280
- data/spec/docstring_spec.rb +373 -373
- data/spec/examples.txt +1883 -1875
- 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 +327 -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 -236
- 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 -28
- 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 +687 -668
- 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 +303 -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 -3
@@ -1,92 +1,92 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
require 'ostruct'
|
3
|
-
|
4
|
-
module YARD
|
5
|
-
module Templates
|
6
|
-
# An Options class containing default options for base template rendering. For
|
7
|
-
# options specific to generation of HTML output, see {CLI::YardocOptions}.
|
8
|
-
#
|
9
|
-
# @see CLI::YardocOptions
|
10
|
-
class TemplateOptions < YARD::Options
|
11
|
-
# @return [Symbol] the template output format
|
12
|
-
default_attr :format, :text
|
13
|
-
|
14
|
-
# @return [Symbol] the template name used to render output
|
15
|
-
default_attr :template, :default
|
16
|
-
|
17
|
-
# @return [Symbol] the markup format to use when parsing docstrings
|
18
|
-
default_attr :markup, :rdoc # default is :rdoc but falls back on :none
|
19
|
-
|
20
|
-
# @return [String] the default return type for a method with no return tags
|
21
|
-
default_attr :default_return, "Object"
|
22
|
-
|
23
|
-
# @return [Boolean] whether void methods should show "void" in their signature
|
24
|
-
default_attr :hide_void_return, false
|
25
|
-
|
26
|
-
# @return [Boolean] whether code blocks should be syntax highlighted
|
27
|
-
default_attr :highlight, true
|
28
|
-
|
29
|
-
# @return [Class] the markup provider class for the markup format
|
30
|
-
attr_accessor :markup_provider
|
31
|
-
|
32
|
-
# @return [OpenStruct] an open struct containing any global state across all
|
33
|
-
# generated objects in a template.
|
34
|
-
default_attr :globals, lambda { OpenStruct.new }
|
35
|
-
alias __globals globals
|
36
|
-
|
37
|
-
# @return [CodeObjects::Base] the main object being generated in the template
|
38
|
-
attr_accessor :object
|
39
|
-
|
40
|
-
# @return [CodeObjects::Base] the owner of the generated object
|
41
|
-
attr_accessor :owner
|
42
|
-
|
43
|
-
# @return [Symbol] the template type used to generate output
|
44
|
-
attr_accessor :type
|
45
|
-
|
46
|
-
# @return [Boolean] whether serialization should be performed
|
47
|
-
default_attr :serialize, true
|
48
|
-
|
49
|
-
# @return [Serializers::Base] the serializer used to generate links and serialize
|
50
|
-
# output. Serialization output only occurs if {#serialize} is +true+.
|
51
|
-
attr_accessor :serializer
|
52
|
-
|
53
|
-
# @deprecated use {#highlight} instead.
|
54
|
-
# @return [Boolean] whether highlighting should be ignored
|
55
|
-
attr_reader :no_highlight
|
56
|
-
undef no_highlight
|
57
|
-
def no_highlight; !highlight end
|
58
|
-
def no_highlight=(value) self.highlight = !value end
|
59
|
-
|
60
|
-
# @return [String] the title of a given page
|
61
|
-
attr_accessor :page_title
|
62
|
-
|
63
|
-
# @return [Boolean] whether the page is the "index"
|
64
|
-
attr_accessor :index
|
65
|
-
|
66
|
-
# @example A list of mixin path names (including wildcards)
|
67
|
-
# opts.embed_mixins #=> ['ClassMethods', '*Helper', 'YARD::*']
|
68
|
-
# @return [Array<String>] an array of module name wildcards to embed into
|
69
|
-
# class documentation as if their methods were defined directly in the class.
|
70
|
-
# Useful for modules like ClassMethods. If the name contains '::', the module
|
71
|
-
# is matched against the full mixin path, otherwise only the module name is used.
|
72
|
-
default_attr :embed_mixins, lambda { [] }
|
73
|
-
|
74
|
-
# @param [CodeObjects::Base] mixin accepts any code object, but returns
|
75
|
-
# nil unless the object is a module.
|
76
|
-
# @return [Boolean] whether a mixin matches the embed_mixins list
|
77
|
-
# @return [nil] if the mixin is not a module object
|
78
|
-
def embed_mixins_match?(mixin)
|
79
|
-
return true if mixin == object # the method is not inherited
|
80
|
-
return nil unless mixin.is_a?(CodeObjects::ModuleObject)
|
81
|
-
embed_mixins.any? do |embed_mixin|
|
82
|
-
re = /\A#{Regexp.quote(embed_mixin).gsub('\*', '.*')}\Z/
|
83
|
-
matchstr = embed_mixin.include?("::") ? mixin.path : mixin.name
|
84
|
-
re.match(matchstr.to_s)
|
85
|
-
end
|
86
|
-
end
|
87
|
-
|
88
|
-
# @return [Verifier] the verifier object
|
89
|
-
attr_accessor :verifier
|
90
|
-
end
|
91
|
-
end
|
92
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
require 'ostruct'
|
3
|
+
|
4
|
+
module YARD
|
5
|
+
module Templates
|
6
|
+
# An Options class containing default options for base template rendering. For
|
7
|
+
# options specific to generation of HTML output, see {CLI::YardocOptions}.
|
8
|
+
#
|
9
|
+
# @see CLI::YardocOptions
|
10
|
+
class TemplateOptions < YARD::Options
|
11
|
+
# @return [Symbol] the template output format
|
12
|
+
default_attr :format, :text
|
13
|
+
|
14
|
+
# @return [Symbol] the template name used to render output
|
15
|
+
default_attr :template, :default
|
16
|
+
|
17
|
+
# @return [Symbol] the markup format to use when parsing docstrings
|
18
|
+
default_attr :markup, :rdoc # default is :rdoc but falls back on :none
|
19
|
+
|
20
|
+
# @return [String] the default return type for a method with no return tags
|
21
|
+
default_attr :default_return, "Object"
|
22
|
+
|
23
|
+
# @return [Boolean] whether void methods should show "void" in their signature
|
24
|
+
default_attr :hide_void_return, false
|
25
|
+
|
26
|
+
# @return [Boolean] whether code blocks should be syntax highlighted
|
27
|
+
default_attr :highlight, true
|
28
|
+
|
29
|
+
# @return [Class] the markup provider class for the markup format
|
30
|
+
attr_accessor :markup_provider
|
31
|
+
|
32
|
+
# @return [OpenStruct] an open struct containing any global state across all
|
33
|
+
# generated objects in a template.
|
34
|
+
default_attr :globals, lambda { OpenStruct.new }
|
35
|
+
alias __globals globals
|
36
|
+
|
37
|
+
# @return [CodeObjects::Base] the main object being generated in the template
|
38
|
+
attr_accessor :object
|
39
|
+
|
40
|
+
# @return [CodeObjects::Base] the owner of the generated object
|
41
|
+
attr_accessor :owner
|
42
|
+
|
43
|
+
# @return [Symbol] the template type used to generate output
|
44
|
+
attr_accessor :type
|
45
|
+
|
46
|
+
# @return [Boolean] whether serialization should be performed
|
47
|
+
default_attr :serialize, true
|
48
|
+
|
49
|
+
# @return [Serializers::Base] the serializer used to generate links and serialize
|
50
|
+
# output. Serialization output only occurs if {#serialize} is +true+.
|
51
|
+
attr_accessor :serializer
|
52
|
+
|
53
|
+
# @deprecated use {#highlight} instead.
|
54
|
+
# @return [Boolean] whether highlighting should be ignored
|
55
|
+
attr_reader :no_highlight
|
56
|
+
undef no_highlight
|
57
|
+
def no_highlight; !highlight end
|
58
|
+
def no_highlight=(value) self.highlight = !value end
|
59
|
+
|
60
|
+
# @return [String] the title of a given page
|
61
|
+
attr_accessor :page_title
|
62
|
+
|
63
|
+
# @return [Boolean] whether the page is the "index"
|
64
|
+
attr_accessor :index
|
65
|
+
|
66
|
+
# @example A list of mixin path names (including wildcards)
|
67
|
+
# opts.embed_mixins #=> ['ClassMethods', '*Helper', 'YARD::*']
|
68
|
+
# @return [Array<String>] an array of module name wildcards to embed into
|
69
|
+
# class documentation as if their methods were defined directly in the class.
|
70
|
+
# Useful for modules like ClassMethods. If the name contains '::', the module
|
71
|
+
# is matched against the full mixin path, otherwise only the module name is used.
|
72
|
+
default_attr :embed_mixins, lambda { [] }
|
73
|
+
|
74
|
+
# @param [CodeObjects::Base] mixin accepts any code object, but returns
|
75
|
+
# nil unless the object is a module.
|
76
|
+
# @return [Boolean] whether a mixin matches the embed_mixins list
|
77
|
+
# @return [nil] if the mixin is not a module object
|
78
|
+
def embed_mixins_match?(mixin)
|
79
|
+
return true if mixin == object # the method is not inherited
|
80
|
+
return nil unless mixin.is_a?(CodeObjects::ModuleObject)
|
81
|
+
embed_mixins.any? do |embed_mixin|
|
82
|
+
re = /\A#{Regexp.quote(embed_mixin).gsub('\*', '.*')}\Z/
|
83
|
+
matchstr = embed_mixin.include?("::") ? mixin.path : mixin.name
|
84
|
+
re.match(matchstr.to_s)
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
# @return [Verifier] the verifier object
|
89
|
+
attr_accessor :verifier
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
data/lib/yard/verifier.rb
CHANGED
@@ -1,151 +1,151 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
module YARD
|
3
|
-
# Similar to a Proc, but runs a set of Ruby expressions using a small
|
4
|
-
# DSL to make tag lookups easier.
|
5
|
-
#
|
6
|
-
# The syntax is as follows:
|
7
|
-
# * All syntax is Ruby compatible
|
8
|
-
# * +object+ (+o+ for short) exist to access the object being verified
|
9
|
-
# * +@TAGNAME+ is translated into +object.tag('TAGNAME')+
|
10
|
-
# * +@@TAGNAME+ is translated into +object.tags('TAGNAME')+
|
11
|
-
# * +object+ can be omitted as target for method calls (it is implied)
|
12
|
-
#
|
13
|
-
# @example Create a verifier to check for objects that don't have @private tags
|
14
|
-
# verifier = Verifier.new('!@private')
|
15
|
-
# verifier.call(object) # => true (no @private tag)
|
16
|
-
# @example Create a verifier to find any return tag with an empty description
|
17
|
-
# Verifier.new('@return.text.empty?')
|
18
|
-
# # Equivalent to:
|
19
|
-
# Verifier.new('object.tag(:return).text.empty?')
|
20
|
-
# @example Check if there are any @param tags
|
21
|
-
# Verifier.new('@@param.empty?')
|
22
|
-
# # Equivalent to:
|
23
|
-
# Verifier.new('object.tags(:param).empty?')
|
24
|
-
# @example Using +object+ or +o+ to look up object attributes directly
|
25
|
-
# Verifier.new('object.docstring == "hello world"')
|
26
|
-
# # Equivalent to:
|
27
|
-
# Verifier.new('o.docstring == "hello world"')
|
28
|
-
# @example Without using +object+ or +o+
|
29
|
-
# Verifier.new('tag(:return).size == 1 || has_tag?(:author)')
|
30
|
-
# @example Specifying multiple expressions
|
31
|
-
# Verifier.new('@return', '@param', '@yield')
|
32
|
-
# # Equivalent to:
|
33
|
-
# Verifier.new('@return && @param && @yield')
|
34
|
-
class Verifier
|
35
|
-
# @return [Array<String>] a list of all expressions the verifier checks for
|
36
|
-
# @since 0.5.6
|
37
|
-
attr_reader :expressions
|
38
|
-
|
39
|
-
def expressions=(value)
|
40
|
-
@expressions = value
|
41
|
-
create_method_from_expressions
|
42
|
-
end
|
43
|
-
|
44
|
-
# Creates a verifier from a set of expressions
|
45
|
-
#
|
46
|
-
# @param [Array<String>] expressions a list of Ruby expressions to
|
47
|
-
# parse.
|
48
|
-
def initialize(*expressions)
|
49
|
-
@expressions = []
|
50
|
-
add_expressions(*expressions)
|
51
|
-
end
|
52
|
-
|
53
|
-
# Adds a set of expressions and recompiles the verifier
|
54
|
-
#
|
55
|
-
# @param [Array<String>] expressions a list of expressions
|
56
|
-
# @return [void]
|
57
|
-
# @since 0.5.6
|
58
|
-
def add_expressions(*expressions)
|
59
|
-
self.expressions += expressions.flatten
|
60
|
-
end
|
61
|
-
|
62
|
-
# Passes any method calls to the object from the {#call}
|
63
|
-
def method_missing(sym, *args, &block)
|
64
|
-
if object.respond_to?(sym)
|
65
|
-
object.send(sym, *args, &block)
|
66
|
-
else
|
67
|
-
super
|
68
|
-
end
|
69
|
-
end
|
70
|
-
|
71
|
-
# Tests the expressions on the object.
|
72
|
-
#
|
73
|
-
# @note If the object is a {CodeObjects::Proxy} the result will always be true.
|
74
|
-
# @param [CodeObjects::Base] object the object to verify
|
75
|
-
# @return [Boolean] the result of the expressions
|
76
|
-
def call(object)
|
77
|
-
return true if object.is_a?(CodeObjects::Proxy)
|
78
|
-
modify_nilclass
|
79
|
-
@object = object
|
80
|
-
retval = __execute ? true : false
|
81
|
-
unmodify_nilclass
|
82
|
-
retval
|
83
|
-
end
|
84
|
-
|
85
|
-
# Runs a list of objects against the verifier and returns the subset
|
86
|
-
# of verified objects.
|
87
|
-
#
|
88
|
-
# @param [Array<CodeObjects::Base>] list a list of code objects
|
89
|
-
# @return [Array<CodeObjects::Base>] a list of code objects that match
|
90
|
-
# the verifier.
|
91
|
-
def run(list)
|
92
|
-
list.reject {|item| call(item).is_a?(FalseClass) }
|
93
|
-
end
|
94
|
-
|
95
|
-
protected
|
96
|
-
|
97
|
-
# @return [CodeObjects::Base] the current object being tested
|
98
|
-
attr_reader :object
|
99
|
-
alias o object
|
100
|
-
|
101
|
-
private
|
102
|
-
|
103
|
-
# @private
|
104
|
-
NILCLASS_METHODS = [:type, :method_missing]
|
105
|
-
|
106
|
-
# Modifies nil to not throw NoMethodErrors. This allows
|
107
|
-
# syntax like object.tag(:return).text to work if the #tag
|
108
|
-
# call returns nil, which means users don't need to perform
|
109
|
-
# stringent nil checking
|
110
|
-
#
|
111
|
-
# @return [void]
|
112
|
-
def modify_nilclass
|
113
|
-
NILCLASS_METHODS.each do |meth|
|
114
|
-
NilClass.send(:define_method, meth) {|*args| }
|
115
|
-
end
|
116
|
-
end
|
117
|
-
|
118
|
-
# Returns the state of NilClass back to normal
|
119
|
-
# @return [void]
|
120
|
-
def unmodify_nilclass
|
121
|
-
NILCLASS_METHODS.each do |meth|
|
122
|
-
next unless nil.respond_to?(meth)
|
123
|
-
NilClass.send(:remove_method, meth)
|
124
|
-
end
|
125
|
-
end
|
126
|
-
|
127
|
-
# Creates the +__execute+ method by evaluating the expressions
|
128
|
-
# as Ruby code
|
129
|
-
# @return [void]
|
130
|
-
def create_method_from_expressions
|
131
|
-
expr = expressions.map {|e| "(#{parse_expression(e)})" }.join(" && ")
|
132
|
-
|
133
|
-
instance_eval(<<-eof, __FILE__, __LINE__ + 1)
|
134
|
-
begin; undef __execute; rescue NameError; end
|
135
|
-
def __execute; #{expr}; end
|
136
|
-
eof
|
137
|
-
end
|
138
|
-
|
139
|
-
# Parses a single expression, handling some of the DSL syntax.
|
140
|
-
#
|
141
|
-
# The syntax "@tag" should be turned into object.tag(:tag),
|
142
|
-
# and "@@tag" should be turned into object.tags(:tag)
|
143
|
-
#
|
144
|
-
# @return [String] the parsed expression
|
145
|
-
def parse_expression(expr)
|
146
|
-
expr = expr.gsub(/@@(?:(\w+)|\{([\w\.]+)\})/, 'object.tags("\1\2")')
|
147
|
-
expr = expr.gsub(/@(?:(\w+)|\{([\w\.]+)\})/, 'object.tag("\1\2")')
|
148
|
-
expr
|
149
|
-
end
|
150
|
-
end
|
151
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
module YARD
|
3
|
+
# Similar to a Proc, but runs a set of Ruby expressions using a small
|
4
|
+
# DSL to make tag lookups easier.
|
5
|
+
#
|
6
|
+
# The syntax is as follows:
|
7
|
+
# * All syntax is Ruby compatible
|
8
|
+
# * +object+ (+o+ for short) exist to access the object being verified
|
9
|
+
# * +@TAGNAME+ is translated into +object.tag('TAGNAME')+
|
10
|
+
# * +@@TAGNAME+ is translated into +object.tags('TAGNAME')+
|
11
|
+
# * +object+ can be omitted as target for method calls (it is implied)
|
12
|
+
#
|
13
|
+
# @example Create a verifier to check for objects that don't have @private tags
|
14
|
+
# verifier = Verifier.new('!@private')
|
15
|
+
# verifier.call(object) # => true (no @private tag)
|
16
|
+
# @example Create a verifier to find any return tag with an empty description
|
17
|
+
# Verifier.new('@return.text.empty?')
|
18
|
+
# # Equivalent to:
|
19
|
+
# Verifier.new('object.tag(:return).text.empty?')
|
20
|
+
# @example Check if there are any @param tags
|
21
|
+
# Verifier.new('@@param.empty?')
|
22
|
+
# # Equivalent to:
|
23
|
+
# Verifier.new('object.tags(:param).empty?')
|
24
|
+
# @example Using +object+ or +o+ to look up object attributes directly
|
25
|
+
# Verifier.new('object.docstring == "hello world"')
|
26
|
+
# # Equivalent to:
|
27
|
+
# Verifier.new('o.docstring == "hello world"')
|
28
|
+
# @example Without using +object+ or +o+
|
29
|
+
# Verifier.new('tag(:return).size == 1 || has_tag?(:author)')
|
30
|
+
# @example Specifying multiple expressions
|
31
|
+
# Verifier.new('@return', '@param', '@yield')
|
32
|
+
# # Equivalent to:
|
33
|
+
# Verifier.new('@return && @param && @yield')
|
34
|
+
class Verifier
|
35
|
+
# @return [Array<String>] a list of all expressions the verifier checks for
|
36
|
+
# @since 0.5.6
|
37
|
+
attr_reader :expressions
|
38
|
+
|
39
|
+
def expressions=(value)
|
40
|
+
@expressions = value
|
41
|
+
create_method_from_expressions
|
42
|
+
end
|
43
|
+
|
44
|
+
# Creates a verifier from a set of expressions
|
45
|
+
#
|
46
|
+
# @param [Array<String>] expressions a list of Ruby expressions to
|
47
|
+
# parse.
|
48
|
+
def initialize(*expressions)
|
49
|
+
@expressions = []
|
50
|
+
add_expressions(*expressions)
|
51
|
+
end
|
52
|
+
|
53
|
+
# Adds a set of expressions and recompiles the verifier
|
54
|
+
#
|
55
|
+
# @param [Array<String>] expressions a list of expressions
|
56
|
+
# @return [void]
|
57
|
+
# @since 0.5.6
|
58
|
+
def add_expressions(*expressions)
|
59
|
+
self.expressions += expressions.flatten
|
60
|
+
end
|
61
|
+
|
62
|
+
# Passes any method calls to the object from the {#call}
|
63
|
+
def method_missing(sym, *args, &block)
|
64
|
+
if object.respond_to?(sym)
|
65
|
+
object.send(sym, *args, &block)
|
66
|
+
else
|
67
|
+
super
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
# Tests the expressions on the object.
|
72
|
+
#
|
73
|
+
# @note If the object is a {CodeObjects::Proxy} the result will always be true.
|
74
|
+
# @param [CodeObjects::Base] object the object to verify
|
75
|
+
# @return [Boolean] the result of the expressions
|
76
|
+
def call(object)
|
77
|
+
return true if object.is_a?(CodeObjects::Proxy)
|
78
|
+
modify_nilclass
|
79
|
+
@object = object
|
80
|
+
retval = __execute ? true : false
|
81
|
+
unmodify_nilclass
|
82
|
+
retval
|
83
|
+
end
|
84
|
+
|
85
|
+
# Runs a list of objects against the verifier and returns the subset
|
86
|
+
# of verified objects.
|
87
|
+
#
|
88
|
+
# @param [Array<CodeObjects::Base>] list a list of code objects
|
89
|
+
# @return [Array<CodeObjects::Base>] a list of code objects that match
|
90
|
+
# the verifier.
|
91
|
+
def run(list)
|
92
|
+
list.reject {|item| call(item).is_a?(FalseClass) }
|
93
|
+
end
|
94
|
+
|
95
|
+
protected
|
96
|
+
|
97
|
+
# @return [CodeObjects::Base] the current object being tested
|
98
|
+
attr_reader :object
|
99
|
+
alias o object
|
100
|
+
|
101
|
+
private
|
102
|
+
|
103
|
+
# @private
|
104
|
+
NILCLASS_METHODS = [:type, :method_missing]
|
105
|
+
|
106
|
+
# Modifies nil to not throw NoMethodErrors. This allows
|
107
|
+
# syntax like object.tag(:return).text to work if the #tag
|
108
|
+
# call returns nil, which means users don't need to perform
|
109
|
+
# stringent nil checking
|
110
|
+
#
|
111
|
+
# @return [void]
|
112
|
+
def modify_nilclass
|
113
|
+
NILCLASS_METHODS.each do |meth|
|
114
|
+
NilClass.send(:define_method, meth) {|*args| }
|
115
|
+
end
|
116
|
+
end
|
117
|
+
|
118
|
+
# Returns the state of NilClass back to normal
|
119
|
+
# @return [void]
|
120
|
+
def unmodify_nilclass
|
121
|
+
NILCLASS_METHODS.each do |meth|
|
122
|
+
next unless nil.respond_to?(meth)
|
123
|
+
NilClass.send(:remove_method, meth)
|
124
|
+
end
|
125
|
+
end
|
126
|
+
|
127
|
+
# Creates the +__execute+ method by evaluating the expressions
|
128
|
+
# as Ruby code
|
129
|
+
# @return [void]
|
130
|
+
def create_method_from_expressions
|
131
|
+
expr = expressions.map {|e| "(#{parse_expression(e)})" }.join(" && ")
|
132
|
+
|
133
|
+
instance_eval(<<-eof, __FILE__, __LINE__ + 1)
|
134
|
+
begin; undef __execute; rescue NameError; end
|
135
|
+
def __execute; #{expr}; end
|
136
|
+
eof
|
137
|
+
end
|
138
|
+
|
139
|
+
# Parses a single expression, handling some of the DSL syntax.
|
140
|
+
#
|
141
|
+
# The syntax "@tag" should be turned into object.tag(:tag),
|
142
|
+
# and "@@tag" should be turned into object.tags(:tag)
|
143
|
+
#
|
144
|
+
# @return [String] the parsed expression
|
145
|
+
def parse_expression(expr)
|
146
|
+
expr = expr.gsub(/@@(?:(\w+)|\{([\w\.]+)\})/, 'object.tags("\1\2")')
|
147
|
+
expr = expr.gsub(/@(?:(\w+)|\{([\w\.]+)\})/, 'object.tag("\1\2")')
|
148
|
+
expr
|
149
|
+
end
|
150
|
+
end
|
151
|
+
end
|