yard 0.9.16 → 0.9.17
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of yard might be problematic. Click here for more details.
- checksums.yaml +5 -5
- data/.yardopts +26 -26
- data/CHANGELOG.md +728 -728
- data/LEGAL +66 -66
- data/LICENSE +22 -22
- data/README.md +328 -328
- data/Rakefile +53 -47
- data/benchmarks/builtins_vs_eval.rb +24 -24
- data/benchmarks/concat_vs_join.rb +13 -13
- data/benchmarks/erb_vs_erubis.rb +54 -54
- data/benchmarks/format_args.rb +47 -47
- data/benchmarks/generation.rb +38 -38
- data/benchmarks/marshal_vs_dbm.rb +64 -64
- data/benchmarks/parsing.rb +46 -46
- data/benchmarks/pathname_vs_string.rb +50 -50
- data/benchmarks/rdoc_vs_yardoc.rb +11 -11
- data/benchmarks/registry_store_types.rb +49 -49
- data/benchmarks/ri_vs_yri.rb +19 -19
- data/benchmarks/ripper_parser.rb +13 -13
- data/benchmarks/splat_vs_flatten.rb +13 -13
- data/benchmarks/template_erb.rb +23 -23
- data/benchmarks/template_format.rb +7 -7
- data/benchmarks/template_profile.rb +18 -18
- data/benchmarks/yri_cache.rb +20 -20
- data/bin/yard +13 -13
- data/bin/yardoc +13 -13
- data/bin/yri +13 -13
- data/docs/CodeObjects.md +115 -115
- data/docs/GettingStarted.md +679 -679
- data/docs/Handlers.md +152 -152
- data/docs/Overview.md +61 -61
- data/docs/Parser.md +191 -191
- data/docs/Tags.md +283 -283
- data/docs/TagsArch.md +123 -123
- data/docs/Templates.md +496 -496
- data/docs/WhatsNew.md +1245 -1245
- data/docs/templates/default/fulldoc/html/full_list_tag.erb +8 -8
- data/docs/templates/default/fulldoc/html/setup.rb +6 -6
- data/docs/templates/default/layout/html/setup.rb +9 -9
- data/docs/templates/default/layout/html/tag_list.erb +11 -11
- data/docs/templates/default/yard_tags/html/list.erb +18 -18
- data/docs/templates/default/yard_tags/html/setup.rb +26 -26
- data/docs/templates/plugin.rb +70 -70
- data/lib/rubygems_plugin.rb +9 -9
- data/lib/yard.rb +69 -69
- data/lib/yard/autoload.rb +303 -303
- data/lib/yard/cli/command.rb +85 -85
- data/lib/yard/cli/command_parser.rb +93 -93
- data/lib/yard/cli/config.rb +198 -198
- data/lib/yard/cli/diff.rb +270 -270
- data/lib/yard/cli/display.rb +69 -69
- data/lib/yard/cli/gems.rb +84 -84
- data/lib/yard/cli/graph.rb +125 -125
- data/lib/yard/cli/help.rb +20 -20
- data/lib/yard/cli/i18n.rb +70 -70
- data/lib/yard/cli/list.rb +23 -23
- data/lib/yard/cli/markup_types.rb +32 -32
- data/lib/yard/cli/server.rb +257 -257
- data/lib/yard/cli/stats.rb +231 -231
- data/lib/yard/cli/yardoc.rb +788 -788
- data/lib/yard/cli/yardopts_command.rb +110 -110
- data/lib/yard/cli/yri.rb +215 -215
- data/lib/yard/code_objects/base.rb +615 -610
- data/lib/yard/code_objects/class_object.rb +146 -146
- data/lib/yard/code_objects/class_variable_object.rb +11 -11
- data/lib/yard/code_objects/constant_object.rb +16 -16
- data/lib/yard/code_objects/extended_method_object.rb +24 -24
- data/lib/yard/code_objects/extra_file_object.rb +131 -131
- data/lib/yard/code_objects/macro_object.rb +172 -172
- data/lib/yard/code_objects/method_object.rb +196 -196
- data/lib/yard/code_objects/module_object.rb +21 -21
- data/lib/yard/code_objects/namespace_mapper.rb +114 -114
- data/lib/yard/code_objects/namespace_object.rb +200 -200
- data/lib/yard/code_objects/proxy.rb +240 -240
- data/lib/yard/code_objects/root_object.rb +19 -19
- data/lib/yard/config.rb +270 -270
- data/lib/yard/core_ext/array.rb +16 -16
- data/lib/yard/core_ext/file.rb +69 -69
- data/lib/yard/core_ext/hash.rb +16 -16
- data/lib/yard/core_ext/insertion.rb +63 -63
- data/lib/yard/core_ext/module.rb +20 -20
- data/lib/yard/core_ext/string.rb +68 -68
- data/lib/yard/core_ext/symbol_hash.rb +75 -75
- data/lib/yard/docstring.rb +386 -378
- data/lib/yard/docstring_parser.rb +345 -345
- data/lib/yard/gem_index.rb +29 -29
- data/lib/yard/globals.rb +22 -22
- data/lib/yard/handlers/base.rb +595 -595
- data/lib/yard/handlers/c/alias_handler.rb +16 -16
- data/lib/yard/handlers/c/attribute_handler.rb +13 -13
- data/lib/yard/handlers/c/base.rb +129 -129
- data/lib/yard/handlers/c/class_handler.rb +27 -27
- data/lib/yard/handlers/c/constant_handler.rb +13 -13
- data/lib/yard/handlers/c/handler_methods.rb +211 -211
- data/lib/yard/handlers/c/init_handler.rb +20 -20
- data/lib/yard/handlers/c/method_handler.rb +45 -36
- data/lib/yard/handlers/c/mixin_handler.rb +21 -21
- data/lib/yard/handlers/c/module_handler.rb +17 -17
- data/lib/yard/handlers/c/override_comment_handler.rb +31 -31
- data/lib/yard/handlers/c/path_handler.rb +11 -11
- data/lib/yard/handlers/c/struct_handler.rb +13 -13
- data/lib/yard/handlers/c/symbol_handler.rb +8 -8
- data/lib/yard/handlers/processor.rb +200 -200
- data/lib/yard/handlers/ruby/alias_handler.rb +44 -44
- data/lib/yard/handlers/ruby/attribute_handler.rb +87 -87
- data/lib/yard/handlers/ruby/base.rb +165 -165
- data/lib/yard/handlers/ruby/class_condition_handler.rb +92 -92
- data/lib/yard/handlers/ruby/class_handler.rb +119 -119
- data/lib/yard/handlers/ruby/class_variable_handler.rb +17 -17
- data/lib/yard/handlers/ruby/comment_handler.rb +10 -10
- data/lib/yard/handlers/ruby/constant_handler.rb +59 -59
- data/lib/yard/handlers/ruby/decorator_handler_methods.rb +123 -123
- data/lib/yard/handlers/ruby/dsl_handler.rb +15 -15
- data/lib/yard/handlers/ruby/dsl_handler_methods.rb +96 -95
- data/lib/yard/handlers/ruby/exception_handler.rb +27 -27
- data/lib/yard/handlers/ruby/extend_handler.rb +22 -22
- data/lib/yard/handlers/ruby/legacy/alias_handler.rb +37 -37
- data/lib/yard/handlers/ruby/legacy/attribute_handler.rb +65 -65
- data/lib/yard/handlers/ruby/legacy/base.rb +245 -245
- data/lib/yard/handlers/ruby/legacy/class_condition_handler.rb +83 -83
- data/lib/yard/handlers/ruby/legacy/class_handler.rb +113 -113
- data/lib/yard/handlers/ruby/legacy/class_variable_handler.rb +15 -15
- data/lib/yard/handlers/ruby/legacy/comment_handler.rb +10 -10
- data/lib/yard/handlers/ruby/legacy/constant_handler.rb +29 -29
- data/lib/yard/handlers/ruby/legacy/dsl_handler.rb +17 -17
- data/lib/yard/handlers/ruby/legacy/exception_handler.rb +13 -13
- data/lib/yard/handlers/ruby/legacy/extend_handler.rb +21 -21
- data/lib/yard/handlers/ruby/legacy/method_handler.rb +90 -90
- data/lib/yard/handlers/ruby/legacy/mixin_handler.rb +39 -39
- data/lib/yard/handlers/ruby/legacy/module_function_handler.rb +19 -19
- data/lib/yard/handlers/ruby/legacy/module_handler.rb +12 -12
- data/lib/yard/handlers/ruby/legacy/private_class_method_handler.rb +22 -22
- data/lib/yard/handlers/ruby/legacy/private_constant_handler.rb +22 -22
- data/lib/yard/handlers/ruby/legacy/visibility_handler.rb +17 -17
- data/lib/yard/handlers/ruby/legacy/yield_handler.rb +29 -29
- data/lib/yard/handlers/ruby/method_condition_handler.rb +9 -9
- data/lib/yard/handlers/ruby/method_handler.rb +118 -118
- data/lib/yard/handlers/ruby/mixin_handler.rb +37 -37
- data/lib/yard/handlers/ruby/module_function_handler.rb +27 -27
- data/lib/yard/handlers/ruby/module_handler.rb +12 -12
- data/lib/yard/handlers/ruby/private_class_method_handler.rb +14 -14
- data/lib/yard/handlers/ruby/private_constant_handler.rb +43 -43
- data/lib/yard/handlers/ruby/public_class_method_handler.rb +14 -14
- data/lib/yard/handlers/ruby/struct_handler_methods.rb +143 -143
- data/lib/yard/handlers/ruby/visibility_handler.rb +22 -22
- data/lib/yard/handlers/ruby/yield_handler.rb +31 -31
- data/lib/yard/i18n/locale.rb +67 -67
- data/lib/yard/i18n/message.rb +57 -57
- data/lib/yard/i18n/messages.rb +56 -56
- data/lib/yard/i18n/po_parser.rb +61 -61
- data/lib/yard/i18n/pot_generator.rb +290 -290
- data/lib/yard/i18n/text.rb +173 -173
- data/lib/yard/logging.rb +205 -205
- data/lib/yard/options.rb +217 -217
- data/lib/yard/parser/base.rb +57 -57
- data/lib/yard/parser/c/c_parser.rb +235 -235
- data/lib/yard/parser/c/comment_parser.rb +134 -134
- data/lib/yard/parser/c/statement.rb +64 -64
- data/lib/yard/parser/ruby/ast_node.rb +540 -540
- data/lib/yard/parser/ruby/legacy/ruby_lex.rb +1354 -1354
- data/lib/yard/parser/ruby/legacy/ruby_parser.rb +32 -32
- data/lib/yard/parser/ruby/legacy/statement.rb +66 -66
- data/lib/yard/parser/ruby/legacy/statement_list.rb +394 -394
- data/lib/yard/parser/ruby/legacy/token_list.rb +74 -74
- data/lib/yard/parser/ruby/ruby_parser.rb +687 -687
- data/lib/yard/parser/ruby/token_resolver.rb +156 -156
- data/lib/yard/parser/source_parser.rb +526 -526
- data/lib/yard/rake/yardoc_task.rb +81 -81
- data/lib/yard/registry.rb +439 -439
- data/lib/yard/registry_resolver.rb +189 -189
- data/lib/yard/registry_store.rb +337 -337
- data/lib/yard/rubygems/backports.rb +10 -10
- data/lib/yard/rubygems/backports/LICENSE.txt +57 -57
- data/lib/yard/rubygems/backports/MIT.txt +20 -20
- data/lib/yard/rubygems/backports/gem.rb +10 -10
- data/lib/yard/rubygems/backports/source_index.rb +365 -365
- data/lib/yard/rubygems/doc_manager.rb +90 -90
- data/lib/yard/rubygems/hook.rb +197 -197
- data/lib/yard/rubygems/specification.rb +50 -50
- data/lib/yard/serializers/base.rb +83 -83
- data/lib/yard/serializers/file_system_serializer.rb +123 -123
- data/lib/yard/serializers/process_serializer.rb +24 -24
- data/lib/yard/serializers/stdout_serializer.rb +34 -34
- data/lib/yard/serializers/yardoc_serializer.rb +152 -152
- data/lib/yard/server.rb +13 -13
- data/lib/yard/server/adapter.rb +100 -100
- data/lib/yard/server/commands/base.rb +209 -209
- data/lib/yard/server/commands/display_file_command.rb +29 -29
- data/lib/yard/server/commands/display_object_command.rb +65 -65
- data/lib/yard/server/commands/frames_command.rb +16 -16
- data/lib/yard/server/commands/library_command.rb +187 -187
- data/lib/yard/server/commands/library_index_command.rb +28 -28
- data/lib/yard/server/commands/list_command.rb +25 -25
- data/lib/yard/server/commands/root_request_command.rb +15 -15
- data/lib/yard/server/commands/search_command.rb +79 -79
- data/lib/yard/server/commands/static_file_command.rb +23 -23
- data/lib/yard/server/commands/static_file_helpers.rb +62 -62
- data/lib/yard/server/doc_server_helper.rb +91 -91
- data/lib/yard/server/doc_server_serializer.rb +39 -39
- data/lib/yard/server/library_version.rb +277 -277
- data/lib/yard/server/rack_adapter.rb +89 -89
- data/lib/yard/server/router.rb +187 -187
- data/lib/yard/server/static_caching.rb +46 -46
- data/lib/yard/server/templates/default/fulldoc/html/css/custom.css +127 -127
- data/lib/yard/server/templates/default/fulldoc/html/js/autocomplete.js +11 -11
- data/lib/yard/server/templates/default/layout/html/breadcrumb.erb +37 -37
- data/lib/yard/server/templates/default/layout/html/script_setup.erb +7 -7
- data/lib/yard/server/templates/default/layout/html/setup.rb +8 -8
- data/lib/yard/server/templates/default/method_details/html/permalink.erb +4 -4
- data/lib/yard/server/templates/default/method_details/html/setup.rb +5 -5
- data/lib/yard/server/templates/doc_server/library_list/html/headers.erb +8 -8
- data/lib/yard/server/templates/doc_server/library_list/html/library_list.erb +14 -14
- data/lib/yard/server/templates/doc_server/library_list/html/listing.erb +13 -13
- data/lib/yard/server/templates/doc_server/library_list/html/setup.rb +6 -6
- data/lib/yard/server/templates/doc_server/library_list/html/title.erb +2 -2
- data/lib/yard/server/templates/doc_server/processing/html/processing.erb +52 -52
- data/lib/yard/server/templates/doc_server/processing/html/setup.rb +4 -4
- data/lib/yard/server/templates/doc_server/search/html/search.erb +18 -18
- data/lib/yard/server/templates/doc_server/search/html/setup.rb +9 -9
- data/lib/yard/server/webrick_adapter.rb +45 -45
- data/lib/yard/tags/default_factory.rb +191 -191
- data/lib/yard/tags/default_tag.rb +13 -13
- data/lib/yard/tags/directives.rb +616 -616
- data/lib/yard/tags/library.rb +633 -633
- data/lib/yard/tags/option_tag.rb +13 -13
- data/lib/yard/tags/overload_tag.rb +71 -71
- data/lib/yard/tags/ref_tag.rb +8 -8
- data/lib/yard/tags/ref_tag_list.rb +28 -28
- data/lib/yard/tags/tag.rb +71 -71
- data/lib/yard/tags/tag_format_error.rb +7 -7
- data/lib/yard/tags/types_explainer.rb +162 -162
- data/lib/yard/templates/engine.rb +186 -186
- data/lib/yard/templates/erb_cache.rb +23 -23
- data/lib/yard/templates/helpers/base_helper.rb +215 -215
- data/lib/yard/templates/helpers/filter_helper.rb +27 -27
- data/lib/yard/templates/helpers/html_helper.rb +646 -642
- data/lib/yard/templates/helpers/html_syntax_highlight_helper.rb +78 -78
- data/lib/yard/templates/helpers/markup/rdoc_markdown.rb +23 -23
- data/lib/yard/templates/helpers/markup/rdoc_markup.rb +109 -109
- data/lib/yard/templates/helpers/markup_helper.rb +172 -172
- data/lib/yard/templates/helpers/method_helper.rb +75 -75
- data/lib/yard/templates/helpers/module_helper.rb +21 -21
- data/lib/yard/templates/helpers/text_helper.rb +112 -112
- data/lib/yard/templates/helpers/uml_helper.rb +47 -47
- data/lib/yard/templates/section.rb +105 -105
- data/lib/yard/templates/template.rb +418 -418
- data/lib/yard/templates/template_options.rb +92 -92
- data/lib/yard/verifier.rb +151 -151
- data/lib/yard/version.rb +3 -1
- data/spec/cli/command_parser_spec.rb +43 -43
- data/spec/cli/command_spec.rb +36 -36
- data/spec/cli/config_spec.rb +148 -148
- data/spec/cli/diff_spec.rb +254 -254
- data/spec/cli/display_spec.rb +30 -30
- data/spec/cli/gems_spec.rb +81 -81
- data/spec/cli/graph_spec.rb +18 -18
- data/spec/cli/help_spec.rb +22 -22
- data/spec/cli/i18n_spec.rb +107 -107
- data/spec/cli/list_spec.rb +8 -8
- data/spec/cli/markup_types_spec.rb +22 -22
- data/spec/cli/server_spec.rb +324 -324
- data/spec/cli/stats_spec.rb +96 -96
- data/spec/cli/yard_on_yard_spec.rb +38 -38
- data/spec/cli/yardoc_spec.rb +862 -849
- data/spec/cli/yri_spec.rb +101 -101
- data/spec/code_objects/base_spec.rb +470 -460
- data/spec/code_objects/class_object_spec.rb +226 -226
- data/spec/code_objects/code_object_list_spec.rb +36 -36
- data/spec/code_objects/constants_spec.rb +116 -116
- data/spec/code_objects/extra_file_object_spec.rb +160 -160
- data/spec/code_objects/macro_object_spec.rb +150 -150
- data/spec/code_objects/method_object_spec.rb +184 -184
- data/spec/code_objects/module_object_spec.rb +142 -142
- data/spec/code_objects/namespace_object_spec.rb +171 -171
- data/spec/code_objects/proxy_spec.rb +141 -141
- data/spec/code_objects/spec_helper.rb +3 -3
- data/spec/config_spec.rb +171 -171
- data/spec/core_ext/array_spec.rb +13 -13
- data/spec/core_ext/file_spec.rb +72 -72
- data/spec/core_ext/hash_spec.rb +14 -14
- data/spec/core_ext/insertion_spec.rb +37 -37
- data/spec/core_ext/module_spec.rb +15 -15
- data/spec/core_ext/string_spec.rb +42 -42
- data/spec/core_ext/symbol_hash_spec.rb +89 -89
- data/spec/docstring_parser_spec.rb +280 -262
- data/spec/docstring_spec.rb +373 -364
- data/spec/examples.txt +1875 -1871
- data/spec/handlers/alias_handler_spec.rb +82 -82
- data/spec/handlers/attribute_handler_spec.rb +96 -96
- data/spec/handlers/base_spec.rb +216 -216
- data/spec/handlers/c/alias_handler_spec.rb +34 -34
- data/spec/handlers/c/attribute_handler_spec.rb +41 -41
- data/spec/handlers/c/class_handler_spec.rb +78 -78
- data/spec/handlers/c/constant_handler_spec.rb +71 -71
- data/spec/handlers/c/init_handler_spec.rb +48 -48
- data/spec/handlers/c/method_handler_spec.rb +325 -325
- data/spec/handlers/c/mixin_handler_spec.rb +44 -44
- data/spec/handlers/c/module_handler_spec.rb +71 -71
- data/spec/handlers/c/override_comment_handler_spec.rb +47 -47
- data/spec/handlers/c/path_handler_spec.rb +36 -36
- data/spec/handlers/c/spec_helper.rb +23 -23
- data/spec/handlers/c/struct_handler_spec.rb +16 -16
- data/spec/handlers/class_condition_handler_spec.rb +87 -87
- data/spec/handlers/class_handler_spec.rb +247 -247
- data/spec/handlers/class_method_handler_shared_examples.rb +133 -133
- data/spec/handlers/class_variable_handler_spec.rb +12 -12
- data/spec/handlers/constant_handler_spec.rb +112 -112
- data/spec/handlers/decorator_handler_methods_spec.rb +393 -393
- data/spec/handlers/dsl_handler_spec.rb +219 -219
- data/spec/handlers/examples/alias_handler_001.rb.txt +45 -45
- data/spec/handlers/examples/attribute_handler_001.rb.txt +31 -31
- data/spec/handlers/examples/class_condition_handler_001.rb.txt +68 -68
- data/spec/handlers/examples/class_handler_001.rb.txt +120 -120
- data/spec/handlers/examples/class_variable_handler_001.rb.txt +9 -9
- data/spec/handlers/examples/constant_handler_001.rb.txt +35 -35
- data/spec/handlers/examples/dsl_handler_001.rb.txt +154 -154
- data/spec/handlers/examples/exception_handler_001.rb.txt +58 -58
- data/spec/handlers/examples/extend_handler_001.rb.txt +15 -15
- data/spec/handlers/examples/method_condition_handler_001.rb.txt +9 -9
- data/spec/handlers/examples/method_handler_001.rb.txt +128 -128
- data/spec/handlers/examples/mixin_handler_001.rb.txt +37 -37
- data/spec/handlers/examples/module_handler_001.rb.txt +29 -29
- data/spec/handlers/examples/private_constant_handler_001.rb.txt +8 -8
- data/spec/handlers/examples/process_handler_001.rb.txt +11 -11
- data/spec/handlers/examples/visibility_handler_001.rb.txt +35 -35
- data/spec/handlers/examples/yield_handler_001.rb.txt +54 -54
- data/spec/handlers/exception_handler_spec.rb +49 -49
- data/spec/handlers/extend_handler_spec.rb +24 -24
- data/spec/handlers/legacy_base_spec.rb +128 -128
- data/spec/handlers/method_condition_handler_spec.rb +15 -15
- data/spec/handlers/method_handler_spec.rb +190 -190
- data/spec/handlers/mixin_handler_spec.rb +56 -56
- data/spec/handlers/module_function_handler_spec.rb +106 -106
- data/spec/handlers/module_handler_spec.rb +35 -35
- data/spec/handlers/private_class_method_handler_spec.rb +11 -11
- data/spec/handlers/private_constant_handler_spec.rb +25 -25
- data/spec/handlers/processor_spec.rb +35 -35
- data/spec/handlers/public_class_method_handler_spec.rb +11 -11
- data/spec/handlers/ruby/base_spec.rb +95 -95
- data/spec/handlers/ruby/legacy/base_spec.rb +84 -84
- data/spec/handlers/spec_helper.rb +33 -33
- data/spec/handlers/visibility_handler_spec.rb +44 -44
- data/spec/handlers/yield_handler_spec.rb +52 -52
- data/spec/i18n/locale_spec.rb +81 -81
- data/spec/i18n/message_spec.rb +52 -52
- data/spec/i18n/messages_spec.rb +67 -67
- data/spec/i18n/pot_generator_spec.rb +295 -295
- data/spec/i18n/text_spec.rb +184 -184
- data/spec/logging_spec.rb +44 -44
- data/spec/options_spec.rb +171 -171
- data/spec/parser/base_spec.rb +24 -24
- data/spec/parser/c_parser_spec.rb +236 -223
- data/spec/parser/examples/array.c.txt +6267 -6267
- data/spec/parser/examples/example1.rb.txt +7 -7
- data/spec/parser/examples/extrafile.c.txt +8 -8
- data/spec/parser/examples/file.c.txt +28 -0
- data/spec/parser/examples/multifile.c.txt +22 -22
- data/spec/parser/examples/namespace.cpp.txt +68 -68
- data/spec/parser/examples/override.c.txt +424 -424
- data/spec/parser/examples/parse_in_order_001.rb.txt +2 -2
- data/spec/parser/examples/parse_in_order_002.rb.txt +1 -1
- data/spec/parser/examples/tag_handler_001.rb.txt +7 -7
- data/spec/parser/ruby/ast_node_spec.rb +33 -33
- data/spec/parser/ruby/legacy/statement_list_spec.rb +299 -299
- data/spec/parser/ruby/legacy/token_list_spec.rb +79 -79
- data/spec/parser/ruby/ruby_parser_spec.rb +508 -508
- data/spec/parser/ruby/token_resolver_spec.rb +165 -165
- data/spec/parser/source_parser_spec.rb +727 -727
- data/spec/parser/tag_parsing_spec.rb +17 -17
- data/spec/rake/yardoc_task_spec.rb +118 -118
- data/spec/registry_spec.rb +463 -463
- data/spec/registry_store_spec.rb +316 -316
- data/spec/rubygems/doc_manager_spec.rb +112 -112
- data/spec/serializers/data/serialized_yardoc/checksums +1 -1
- data/spec/serializers/file_system_serializer_spec.rb +145 -145
- data/spec/serializers/spec_helper.rb +2 -2
- data/spec/serializers/yardoc_serializer_spec.rb +78 -78
- data/spec/server/adapter_spec.rb +39 -39
- data/spec/server/commands/base_spec.rb +91 -91
- data/spec/server/commands/library_command_spec.rb +39 -39
- data/spec/server/doc_server_helper_spec.rb +72 -72
- data/spec/server/doc_server_serializer_spec.rb +60 -60
- data/spec/server/rack_adapter_spec.rb +21 -21
- data/spec/server/router_spec.rb +123 -123
- data/spec/server/spec_helper.rb +22 -22
- data/spec/server/static_caching_spec.rb +47 -47
- data/spec/server/webrick_servlet_spec.rb +20 -20
- data/spec/server_spec.rb +19 -19
- data/spec/spec_helper.rb +212 -212
- data/spec/tags/default_factory_spec.rb +168 -168
- data/spec/tags/default_tag_spec.rb +11 -11
- data/spec/tags/directives_spec.rb +463 -463
- data/spec/tags/library_spec.rb +48 -48
- data/spec/tags/overload_tag_spec.rb +53 -53
- data/spec/tags/ref_tag_list_spec.rb +53 -53
- data/spec/tags/types_explainer_spec.rb +203 -203
- data/spec/templates/class_spec.rb +45 -45
- data/spec/templates/constant_spec.rb +41 -41
- data/spec/templates/engine_spec.rb +131 -131
- data/spec/templates/examples/class001.html +308 -308
- data/spec/templates/examples/class001.txt +36 -36
- data/spec/templates/examples/class002.html +39 -39
- data/spec/templates/examples/constant001.txt +24 -24
- data/spec/templates/examples/constant002.txt +6 -6
- data/spec/templates/examples/constant003.txt +10 -10
- data/spec/templates/examples/method001.html +137 -137
- data/spec/templates/examples/method001.txt +35 -35
- data/spec/templates/examples/method002.html +91 -91
- data/spec/templates/examples/method002.txt +20 -20
- data/spec/templates/examples/method003.html +165 -165
- data/spec/templates/examples/method003.txt +45 -45
- data/spec/templates/examples/method004.html +48 -48
- data/spec/templates/examples/method004.txt +10 -10
- data/spec/templates/examples/method005.html +105 -105
- data/spec/templates/examples/method005.txt +33 -33
- data/spec/templates/examples/method006.html +107 -107
- data/spec/templates/examples/method006.txt +20 -20
- data/spec/templates/examples/module001.dot +33 -33
- data/spec/templates/examples/module001.html +833 -833
- data/spec/templates/examples/module001.txt +33 -33
- data/spec/templates/examples/module002.html +341 -341
- data/spec/templates/examples/module003.html +202 -202
- data/spec/templates/examples/module004.html +394 -394
- data/spec/templates/examples/module005.html +81 -81
- data/spec/templates/examples/tag001.txt +82 -82
- data/spec/templates/helpers/base_helper_spec.rb +171 -171
- data/spec/templates/helpers/html_helper_spec.rb +668 -653
- data/spec/templates/helpers/html_syntax_highlight_helper_spec.rb +65 -65
- data/spec/templates/helpers/markup/rdoc_markup_spec.rb +84 -84
- data/spec/templates/helpers/markup_helper_spec.rb +136 -136
- data/spec/templates/helpers/method_helper_spec.rb +107 -107
- data/spec/templates/helpers/module_helper_spec.rb +35 -35
- data/spec/templates/helpers/shared_signature_examples.rb +126 -126
- data/spec/templates/helpers/text_helper_spec.rb +65 -65
- data/spec/templates/method_spec.rb +118 -118
- data/spec/templates/module_spec.rb +203 -203
- data/spec/templates/onefile_spec.rb +66 -66
- data/spec/templates/section_spec.rb +144 -144
- data/spec/templates/spec_helper.rb +76 -76
- data/spec/templates/tag_spec.rb +52 -52
- data/spec/templates/template_spec.rb +410 -410
- data/spec/verifier_spec.rb +106 -106
- data/templates/default/class/dot/setup.rb +7 -7
- data/templates/default/class/dot/superklass.erb +2 -2
- data/templates/default/class/html/constructor_details.erb +8 -8
- data/templates/default/class/html/setup.rb +2 -2
- data/templates/default/class/html/subclasses.erb +4 -4
- data/templates/default/class/setup.rb +36 -36
- data/templates/default/class/text/setup.rb +12 -12
- data/templates/default/class/text/subclasses.erb +5 -5
- data/templates/default/constant/text/header.erb +11 -11
- data/templates/default/constant/text/setup.rb +4 -4
- data/templates/default/docstring/html/abstract.erb +4 -4
- data/templates/default/docstring/html/deprecated.erb +1 -1
- data/templates/default/docstring/html/index.erb +5 -5
- data/templates/default/docstring/html/note.erb +6 -6
- data/templates/default/docstring/html/private.erb +4 -4
- data/templates/default/docstring/html/text.erb +1 -1
- data/templates/default/docstring/html/todo.erb +6 -6
- data/templates/default/docstring/setup.rb +52 -52
- data/templates/default/docstring/text/abstract.erb +2 -2
- data/templates/default/docstring/text/deprecated.erb +2 -2
- data/templates/default/docstring/text/index.erb +2 -2
- data/templates/default/docstring/text/note.erb +3 -3
- data/templates/default/docstring/text/private.erb +2 -2
- data/templates/default/docstring/text/text.erb +1 -1
- data/templates/default/docstring/text/todo.erb +3 -3
- data/templates/default/fulldoc/html/css/full_list.css +58 -58
- data/templates/default/fulldoc/html/css/style.css +496 -496
- data/templates/default/fulldoc/html/frames.erb +17 -17
- data/templates/default/fulldoc/html/full_list.erb +37 -37
- data/templates/default/fulldoc/html/full_list_class.erb +2 -2
- data/templates/default/fulldoc/html/full_list_file.erb +7 -7
- data/templates/default/fulldoc/html/full_list_method.erb +10 -10
- data/templates/default/fulldoc/html/js/app.js +292 -292
- data/templates/default/fulldoc/html/js/full_list.js +216 -216
- data/templates/default/fulldoc/html/js/jquery.js +3 -3
- data/templates/default/fulldoc/html/setup.rb +241 -241
- data/templates/default/layout/dot/header.erb +5 -5
- data/templates/default/layout/dot/setup.rb +15 -15
- data/templates/default/layout/html/breadcrumb.erb +11 -11
- data/templates/default/layout/html/files.erb +11 -11
- data/templates/default/layout/html/footer.erb +5 -5
- data/templates/default/layout/html/headers.erb +15 -15
- data/templates/default/layout/html/index.erb +2 -2
- data/templates/default/layout/html/layout.erb +23 -23
- data/templates/default/layout/html/listing.erb +4 -4
- data/templates/default/layout/html/objects.erb +32 -32
- data/templates/default/layout/html/script_setup.erb +4 -4
- data/templates/default/layout/html/search.erb +12 -12
- data/templates/default/layout/html/setup.rb +89 -89
- data/templates/default/method/html/header.erb +16 -16
- data/templates/default/method/setup.rb +4 -4
- data/templates/default/method_details/html/header.erb +2 -2
- data/templates/default/method_details/html/method_signature.erb +24 -24
- data/templates/default/method_details/html/source.erb +9 -9
- data/templates/default/method_details/setup.rb +11 -11
- data/templates/default/method_details/text/header.erb +10 -10
- data/templates/default/method_details/text/method_signature.erb +12 -12
- data/templates/default/method_details/text/setup.rb +11 -11
- data/templates/default/module/dot/child.erb +1 -1
- data/templates/default/module/dot/dependencies.erb +2 -2
- data/templates/default/module/dot/header.erb +6 -6
- data/templates/default/module/dot/info.erb +13 -13
- data/templates/default/module/dot/setup.rb +15 -15
- data/templates/default/module/html/attribute_details.erb +10 -10
- data/templates/default/module/html/attribute_summary.erb +8 -8
- data/templates/default/module/html/box_info.erb +43 -43
- data/templates/default/module/html/children.erb +8 -8
- data/templates/default/module/html/constant_summary.erb +17 -17
- data/templates/default/module/html/defines.erb +2 -2
- data/templates/default/module/html/header.erb +5 -5
- data/templates/default/module/html/inherited_attributes.erb +14 -14
- data/templates/default/module/html/inherited_constants.erb +8 -8
- data/templates/default/module/html/inherited_methods.erb +18 -18
- data/templates/default/module/html/item_summary.erb +40 -40
- data/templates/default/module/html/method_details_list.erb +9 -9
- data/templates/default/module/html/method_summary.erb +13 -13
- data/templates/default/module/html/methodmissing.erb +12 -12
- data/templates/default/module/setup.rb +167 -167
- data/templates/default/module/text/children.erb +9 -9
- data/templates/default/module/text/class_meths_list.erb +7 -7
- data/templates/default/module/text/extends.erb +7 -7
- data/templates/default/module/text/header.erb +7 -7
- data/templates/default/module/text/includes.erb +7 -7
- data/templates/default/module/text/instance_meths_list.erb +7 -7
- data/templates/default/module/text/setup.rb +13 -13
- data/templates/default/onefile/html/files.erb +4 -4
- data/templates/default/onefile/html/headers.erb +6 -6
- data/templates/default/onefile/html/layout.erb +17 -17
- data/templates/default/onefile/html/readme.erb +2 -2
- data/templates/default/onefile/html/setup.rb +62 -62
- data/templates/default/root/dot/child.erb +2 -2
- data/templates/default/root/dot/setup.rb +6 -6
- data/templates/default/root/html/setup.rb +2 -2
- data/templates/default/tags/html/example.erb +10 -10
- data/templates/default/tags/html/index.erb +2 -2
- data/templates/default/tags/html/option.erb +24 -24
- data/templates/default/tags/html/overload.erb +13 -13
- data/templates/default/tags/html/see.erb +7 -7
- data/templates/default/tags/html/tag.erb +20 -20
- data/templates/default/tags/setup.rb +57 -57
- data/templates/default/tags/text/example.erb +12 -12
- data/templates/default/tags/text/index.erb +1 -1
- data/templates/default/tags/text/option.erb +20 -20
- data/templates/default/tags/text/overload.erb +19 -19
- data/templates/default/tags/text/see.erb +11 -11
- data/templates/default/tags/text/tag.erb +13 -13
- data/templates/guide/class/html/setup.rb +2 -2
- data/templates/guide/docstring/html/setup.rb +2 -2
- data/templates/guide/fulldoc/html/css/style.css +108 -108
- data/templates/guide/fulldoc/html/js/app.js +33 -33
- data/templates/guide/fulldoc/html/setup.rb +74 -74
- data/templates/guide/layout/html/layout.erb +81 -81
- data/templates/guide/layout/html/setup.rb +25 -25
- data/templates/guide/method/html/header.erb +17 -17
- data/templates/guide/method/html/setup.rb +22 -22
- data/templates/guide/module/html/header.erb +6 -6
- data/templates/guide/module/html/method_list.erb +4 -4
- data/templates/guide/module/html/setup.rb +27 -27
- data/templates/guide/onefile/html/files.erb +4 -4
- data/templates/guide/onefile/html/setup.rb +6 -6
- data/templates/guide/onefile/html/toc.erb +3 -3
- data/templates/guide/tags/html/setup.rb +9 -9
- data/yard.gemspec +43 -43
- metadata +4 -4
@@ -1,20 +1,20 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
# Handles the Init_Libname() method
|
3
|
-
class YARD::Handlers::C::InitHandler < YARD::Handlers::C::Base
|
4
|
-
MATCH = /\A\s*(?:\S+\s+)*void\s+(?:[Ii]nit_)?(\w+)\s*/
|
5
|
-
handles MATCH
|
6
|
-
statement_class ToplevelStatement
|
7
|
-
|
8
|
-
process do
|
9
|
-
parse_block
|
10
|
-
decl = statement.declaration[MATCH, 1]
|
11
|
-
if decl
|
12
|
-
ns = namespace_for_variable(decl)
|
13
|
-
if ns.is_a?(YARD::CodeObjects::NamespaceObject) && ns.docstring.blank?
|
14
|
-
if statement.comments
|
15
|
-
register_docstring(ns, statement.comments.source, statement)
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
# Handles the Init_Libname() method
|
3
|
+
class YARD::Handlers::C::InitHandler < YARD::Handlers::C::Base
|
4
|
+
MATCH = /\A\s*(?:\S+\s+)*void\s+(?:[Ii]nit_)?(\w+)\s*/
|
5
|
+
handles MATCH
|
6
|
+
statement_class ToplevelStatement
|
7
|
+
|
8
|
+
process do
|
9
|
+
parse_block
|
10
|
+
decl = statement.declaration[MATCH, 1]
|
11
|
+
if decl
|
12
|
+
ns = namespace_for_variable(decl)
|
13
|
+
if ns.is_a?(YARD::CodeObjects::NamespaceObject) && ns.docstring.blank?
|
14
|
+
if statement.comments
|
15
|
+
register_docstring(ns, statement.comments.source, statement)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -1,36 +1,45 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
class YARD::Handlers::C::MethodHandler < YARD::Handlers::C::Base
|
3
|
-
MATCH1 = /rb_define_
|
4
|
-
(
|
5
|
-
singleton_method |
|
6
|
-
method |
|
7
|
-
module_function |
|
8
|
-
private_method
|
9
|
-
)
|
10
|
-
\s*\(\s*([\w\.]+)\s*,
|
11
|
-
\s*"([^"]+)"\s*,
|
12
|
-
\s*(?:RUBY_METHOD_FUNC\(|VALUEFUNC\(|\(\w+\))?(\w+)\)?\s*,
|
13
|
-
\s*(-?\w+)\s*\)/xm
|
14
|
-
MATCH2 = /rb_define_global_function\s*\(
|
15
|
-
\s*"([^"]+)",
|
16
|
-
\s*(?:RUBY_METHOD_FUNC\(|VALUEFUNC\(|\(\w+\))?(\w+)\)?,
|
17
|
-
\s*(-?\w+)\s*\)/xm
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
class YARD::Handlers::C::MethodHandler < YARD::Handlers::C::Base
|
3
|
+
MATCH1 = /rb_define_
|
4
|
+
(
|
5
|
+
singleton_method |
|
6
|
+
method |
|
7
|
+
module_function |
|
8
|
+
private_method
|
9
|
+
)
|
10
|
+
\s*\(\s*([\w\.]+)\s*,
|
11
|
+
\s*"([^"]+)"\s*,
|
12
|
+
\s*(?:RUBY_METHOD_FUNC\(|VALUEFUNC\(|\(\w+\))?(\w+)\)?\s*,
|
13
|
+
\s*(-?\w+)\s*\)/xm
|
14
|
+
MATCH2 = /rb_define_global_function\s*\(
|
15
|
+
\s*"([^"]+)",
|
16
|
+
\s*(?:RUBY_METHOD_FUNC\(|VALUEFUNC\(|\(\w+\))?(\w+)\)?,
|
17
|
+
\s*(-?\w+)\s*\)/xm
|
18
|
+
MATCH3 = /define_filetest_function\s*\(
|
19
|
+
\s*"([^"]+)",
|
20
|
+
\s*(?:RUBY_METHOD_FUNC\(|VALUEFUNC\(|\(\w+\))?(\w+)\)?,
|
21
|
+
\s*(-?\w+)\s*\)/xm
|
22
|
+
handles MATCH1
|
23
|
+
handles MATCH2
|
24
|
+
handles MATCH3
|
25
|
+
statement_class BodyStatement
|
26
|
+
|
27
|
+
process do
|
28
|
+
statement.source.scan(MATCH1) do |type, var_name, name, func_name, _param_count|
|
29
|
+
break if var_name == "ruby_top_self"
|
30
|
+
break if var_name == "nstr"
|
31
|
+
break if var_name == "envtbl"
|
32
|
+
|
33
|
+
var_name = "rb_cObject" if var_name == "rb_mKernel"
|
34
|
+
handle_method(type, var_name, name, func_name)
|
35
|
+
end
|
36
|
+
|
37
|
+
statement.source.scan(MATCH2) do |name, func_name, _param_count|
|
38
|
+
handle_method("method", "rb_mKernel", name, func_name)
|
39
|
+
end
|
40
|
+
|
41
|
+
statement.source.scan(MATCH3) do |name, func_name, _param_count|
|
42
|
+
handle_method("singleton_method", "rb_cFile", name, func_name)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -1,21 +1,21 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
class YARD::Handlers::C::MixinHandler < YARD::Handlers::C::Base
|
3
|
-
MATCH = /rb_include_module\s*\(\s*(\w+?),\s*(\w+?)\s*\)/
|
4
|
-
handles MATCH
|
5
|
-
statement_class BodyStatement
|
6
|
-
|
7
|
-
process do
|
8
|
-
statement.source.scan(MATCH) do |klass_var, mixin_var|
|
9
|
-
namespace = namespace_for_variable(klass_var)
|
10
|
-
ensure_loaded!(namespace)
|
11
|
-
|
12
|
-
var = namespace_for_variable(mixin_var)
|
13
|
-
if var
|
14
|
-
namespace.mixins(:instance) << var
|
15
|
-
else
|
16
|
-
raise YARD::Parser::UndocumentableError,
|
17
|
-
"CRuby mixin for unrecognized variable '#{mixin_var}'"
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
class YARD::Handlers::C::MixinHandler < YARD::Handlers::C::Base
|
3
|
+
MATCH = /rb_include_module\s*\(\s*(\w+?),\s*(\w+?)\s*\)/
|
4
|
+
handles MATCH
|
5
|
+
statement_class BodyStatement
|
6
|
+
|
7
|
+
process do
|
8
|
+
statement.source.scan(MATCH) do |klass_var, mixin_var|
|
9
|
+
namespace = namespace_for_variable(klass_var)
|
10
|
+
ensure_loaded!(namespace)
|
11
|
+
|
12
|
+
var = namespace_for_variable(mixin_var)
|
13
|
+
if var
|
14
|
+
namespace.mixins(:instance) << var
|
15
|
+
else
|
16
|
+
raise YARD::Parser::UndocumentableError,
|
17
|
+
"CRuby mixin for unrecognized variable '#{mixin_var}'"
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -1,17 +1,17 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
class YARD::Handlers::C::ModuleHandler < YARD::Handlers::C::Base
|
3
|
-
MATCH1 = /([\w\.]+)\s* = \s*rb_define_module\s*\(\s*"([\w:]+)"\s*\)/mx
|
4
|
-
MATCH2 = /([\w\.]+)\s* = \s*rb_define_module_under\s*\(\s*(\w+),\s*"(\w+)"\s*\)/mx
|
5
|
-
handles MATCH1
|
6
|
-
handles MATCH2
|
7
|
-
statement_class BodyStatement
|
8
|
-
|
9
|
-
process do
|
10
|
-
statement.source.scan(MATCH1) do |var_name, module_name|
|
11
|
-
handle_module(var_name, module_name)
|
12
|
-
end
|
13
|
-
statement.source.scan(MATCH2) do |var_name, in_module, module_name|
|
14
|
-
handle_module(var_name, module_name, in_module)
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
class YARD::Handlers::C::ModuleHandler < YARD::Handlers::C::Base
|
3
|
+
MATCH1 = /([\w\.]+)\s* = \s*rb_define_module\s*\(\s*"([\w:]+)"\s*\)/mx
|
4
|
+
MATCH2 = /([\w\.]+)\s* = \s*rb_define_module_under\s*\(\s*(\w+),\s*"(\w+)"\s*\)/mx
|
5
|
+
handles MATCH1
|
6
|
+
handles MATCH2
|
7
|
+
statement_class BodyStatement
|
8
|
+
|
9
|
+
process do
|
10
|
+
statement.source.scan(MATCH1) do |var_name, module_name|
|
11
|
+
handle_module(var_name, module_name)
|
12
|
+
end
|
13
|
+
statement.source.scan(MATCH2) do |var_name, in_module, module_name|
|
14
|
+
handle_module(var_name, module_name, in_module)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -1,31 +1,31 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
# Parses comments
|
3
|
-
class YARD::Handlers::C::OverrideCommentHandler < YARD::Handlers::C::Base
|
4
|
-
handles(/./)
|
5
|
-
statement_class Comment
|
6
|
-
|
7
|
-
process do
|
8
|
-
return if statement.overrides.empty?
|
9
|
-
statement.overrides.each do |type, name|
|
10
|
-
override_comments << [name, statement]
|
11
|
-
obj = nil
|
12
|
-
case type
|
13
|
-
when :class
|
14
|
-
name, superclass = *name.split(/\s*<\s*/)
|
15
|
-
obj = YARD::CodeObjects::ClassObject.new(:root, name)
|
16
|
-
obj.superclass = "::#{superclass}" if superclass
|
17
|
-
when :module
|
18
|
-
obj = YARD::CodeObjects::ModuleObject.new(:root, name)
|
19
|
-
end
|
20
|
-
register(obj)
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
def register_docstring(object, docstring = statement.source, stmt = statement)
|
25
|
-
super
|
26
|
-
end
|
27
|
-
|
28
|
-
def register_file_info(object, file = parser.file, line = statement.line, comments = statement.comments)
|
29
|
-
super
|
30
|
-
end
|
31
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
# Parses comments
|
3
|
+
class YARD::Handlers::C::OverrideCommentHandler < YARD::Handlers::C::Base
|
4
|
+
handles(/./)
|
5
|
+
statement_class Comment
|
6
|
+
|
7
|
+
process do
|
8
|
+
return if statement.overrides.empty?
|
9
|
+
statement.overrides.each do |type, name|
|
10
|
+
override_comments << [name, statement]
|
11
|
+
obj = nil
|
12
|
+
case type
|
13
|
+
when :class
|
14
|
+
name, superclass = *name.split(/\s*<\s*/)
|
15
|
+
obj = YARD::CodeObjects::ClassObject.new(:root, name)
|
16
|
+
obj.superclass = "::#{superclass}" if superclass
|
17
|
+
when :module
|
18
|
+
obj = YARD::CodeObjects::ModuleObject.new(:root, name)
|
19
|
+
end
|
20
|
+
register(obj)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def register_docstring(object, docstring = statement.source, stmt = statement)
|
25
|
+
super
|
26
|
+
end
|
27
|
+
|
28
|
+
def register_file_info(object, file = parser.file, line = statement.line, comments = statement.comments)
|
29
|
+
super
|
30
|
+
end
|
31
|
+
end
|
@@ -1,11 +1,11 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
class YARD::Handlers::C::PathHandler < YARD::Handlers::C::Base
|
3
|
-
MATCH = /([\w\.]+)\s* = \s*rb_path2class\s*\(\s*"([\w:]+)"\)/mx
|
4
|
-
handles MATCH
|
5
|
-
|
6
|
-
process do
|
7
|
-
statement.source.scan(MATCH) do |var_name, path|
|
8
|
-
namespaces[var_name] = P(path)
|
9
|
-
end
|
10
|
-
end
|
11
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
class YARD::Handlers::C::PathHandler < YARD::Handlers::C::Base
|
3
|
+
MATCH = /([\w\.]+)\s* = \s*rb_path2class\s*\(\s*"([\w:]+)"\)/mx
|
4
|
+
handles MATCH
|
5
|
+
|
6
|
+
process do
|
7
|
+
statement.source.scan(MATCH) do |var_name, path|
|
8
|
+
namespaces[var_name] = P(path)
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
@@ -1,13 +1,13 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
class YARD::Handlers::C::StructHandler < YARD::Handlers::C::Base
|
3
|
-
MATCH = /([\w\.]+)\s*=\s*(?:rb_struct_define_without_accessor)\s*
|
4
|
-
\(\s*"([\w:]+)"\s*,\s*(\w+)\s*/mx
|
5
|
-
handles MATCH
|
6
|
-
statement_class BodyStatement
|
7
|
-
|
8
|
-
process do
|
9
|
-
statement.source.scan(MATCH) do |var_name, class_name, parent|
|
10
|
-
handle_class(var_name, class_name, parent)
|
11
|
-
end
|
12
|
-
end
|
13
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
class YARD::Handlers::C::StructHandler < YARD::Handlers::C::Base
|
3
|
+
MATCH = /([\w\.]+)\s*=\s*(?:rb_struct_define_without_accessor)\s*
|
4
|
+
\(\s*"([\w:]+)"\s*,\s*(\w+)\s*/mx
|
5
|
+
handles MATCH
|
6
|
+
statement_class BodyStatement
|
7
|
+
|
8
|
+
process do
|
9
|
+
statement.source.scan(MATCH) do |var_name, class_name, parent|
|
10
|
+
handle_class(var_name, class_name, parent)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -1,8 +1,8 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
# Keeps track of function bodies for symbol lookup during Ruby method declarations
|
3
|
-
class YARD::Handlers::C::SymbolHandler < YARD::Handlers::C::Base
|
4
|
-
MATCH = /\A\s*(?:(?:\w+)\s+)?(?:intern\s+)?VALUE\s+(\w+)\s*\(/
|
5
|
-
handles MATCH
|
6
|
-
statement_class ToplevelStatement
|
7
|
-
process { symbols[statement.source[MATCH, 1]] = statement }
|
8
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
# Keeps track of function bodies for symbol lookup during Ruby method declarations
|
3
|
+
class YARD::Handlers::C::SymbolHandler < YARD::Handlers::C::Base
|
4
|
+
MATCH = /\A\s*(?:(?:\w+)\s+)?(?:intern\s+)?VALUE\s+(\w+)\s*\(/
|
5
|
+
handles MATCH
|
6
|
+
statement_class ToplevelStatement
|
7
|
+
process { symbols[statement.source[MATCH, 1]] = statement }
|
8
|
+
end
|
@@ -1,200 +1,200 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
require 'ostruct'
|
3
|
-
|
4
|
-
module YARD
|
5
|
-
module Handlers
|
6
|
-
# Iterates over all statements in a file and delegates them to the
|
7
|
-
# {Handlers::Base} objects that are registered to handle the statement.
|
8
|
-
#
|
9
|
-
# This class is passed to each handler and keeps overall processing state.
|
10
|
-
# For example, if the {#visibility} is set in a handler, all following
|
11
|
-
# statements will have access to this state. This allows "public",
|
12
|
-
# "protected" and "private" statements to be handled in classes and modules.
|
13
|
-
# In addition, the {#namespace} can be set during parsing to control
|
14
|
-
# where objects are being created from. You can also access extra stateful
|
15
|
-
# properties that any handler can set during the duration of the post
|
16
|
-
# processing of a file from {#extra_state}. If you need to access state
|
17
|
-
# across different files, look at {#globals}.
|
18
|
-
#
|
19
|
-
# @see Handlers::Base
|
20
|
-
class Processor
|
21
|
-
class << self
|
22
|
-
# Registers a new namespace for handlers of the given type.
|
23
|
-
# @since 0.6.0
|
24
|
-
def register_handler_namespace(type, ns)
|
25
|
-
namespace_for_handler[type] = ns
|
26
|
-
end
|
27
|
-
|
28
|
-
# @return [Hash] a list of registered parser type extensions
|
29
|
-
# @private
|
30
|
-
# @since 0.6.0
|
31
|
-
attr_reader :namespace_for_handler
|
32
|
-
undef namespace_for_handler
|
33
|
-
def namespace_for_handler; @@parser_type_extensions ||= {} end
|
34
|
-
end
|
35
|
-
|
36
|
-
register_handler_namespace :ruby, Ruby
|
37
|
-
register_handler_namespace :ruby18, Ruby::Legacy
|
38
|
-
register_handler_namespace :c, C
|
39
|
-
|
40
|
-
# @return [String] the filename
|
41
|
-
attr_accessor :file
|
42
|
-
|
43
|
-
# @return [CodeObjects::NamespaceObject] the current namespace
|
44
|
-
attr_accessor :namespace
|
45
|
-
|
46
|
-
# @return [Symbol] the current visibility (public, private, protected)
|
47
|
-
attr_accessor :visibility
|
48
|
-
|
49
|
-
# @return [Symbol] the current scope (class, instance)
|
50
|
-
attr_accessor :scope
|
51
|
-
|
52
|
-
# @return [CodeObjects::Base, nil] unlike the namespace, the owner
|
53
|
-
# is a non-namespace object that should be stored between statements.
|
54
|
-
# For instance, when parsing a method body, the {CodeObjects::MethodObject}
|
55
|
-
# is set as the owner, in case any extra method information is processed.
|
56
|
-
attr_accessor :owner
|
57
|
-
|
58
|
-
# @return [Symbol] the parser type (:ruby, :ruby18, :c)
|
59
|
-
attr_accessor :parser_type
|
60
|
-
|
61
|
-
# Handlers can share state for the entire post processing stage through
|
62
|
-
# this attribute. Note that post processing stage spans multiple files.
|
63
|
-
# To share state only within a single file, use {#extra_state}
|
64
|
-
#
|
65
|
-
# @example Sharing state among two handlers
|
66
|
-
# class Handler1 < YARD::Handlers::Ruby::Base
|
67
|
-
# handles :class
|
68
|
-
# process { globals.foo = :bar }
|
69
|
-
# end
|
70
|
-
#
|
71
|
-
# class Handler2 < YARD::Handlers::Ruby::Base
|
72
|
-
# handles :method
|
73
|
-
# process { puts globals.foo }
|
74
|
-
# end
|
75
|
-
# @return [OpenStruct] global shared state for post-processing stage
|
76
|
-
# @see #extra_state
|
77
|
-
attr_accessor :globals
|
78
|
-
|
79
|
-
# Share state across different handlers inside of a file.
|
80
|
-
# This attribute is similar to {#visibility}, {#scope}, {#namespace}
|
81
|
-
# and {#owner}, in that they all maintain state across all handlers
|
82
|
-
# for the entire source file. Use this attribute to store any data
|
83
|
-
# your handler might need to save during the parsing of a file. If
|
84
|
-
# you need to save state across files, see {#globals}.
|
85
|
-
#
|
86
|
-
# @return [OpenStruct] an open structure that can store arbitrary data
|
87
|
-
# @see #globals
|
88
|
-
attr_accessor :extra_state
|
89
|
-
|
90
|
-
# Creates a new Processor for a +file+.
|
91
|
-
# @param [Parser::SourceParser] parser the parser used to initialize the processor
|
92
|
-
def initialize(parser)
|
93
|
-
@file = parser.file || "(stdin)"
|
94
|
-
@namespace = YARD::Registry.root
|
95
|
-
@visibility = :public
|
96
|
-
@scope = :instance
|
97
|
-
@owner = @namespace
|
98
|
-
@parser_type = parser.parser_type
|
99
|
-
@handlers_loaded = {}
|
100
|
-
@globals = parser.globals || OpenStruct.new
|
101
|
-
@extra_state = OpenStruct.new
|
102
|
-
load_handlers
|
103
|
-
end
|
104
|
-
|
105
|
-
# Processes a list of statements by finding handlers to process each
|
106
|
-
# one.
|
107
|
-
#
|
108
|
-
# @param [Array] statements a list of statements
|
109
|
-
# @return [void]
|
110
|
-
def process(statements)
|
111
|
-
statements.each_with_index do |stmt, _index|
|
112
|
-
find_handlers(stmt).each do |handler|
|
113
|
-
begin
|
114
|
-
handler.new(self, stmt).process
|
115
|
-
rescue HandlerAborted
|
116
|
-
log.debug "#{handler} cancelled from #{caller.last}"
|
117
|
-
log.debug "\tin file '#{file}':#{stmt.line}:\n\n" + stmt.show + "\n"
|
118
|
-
rescue NamespaceMissingError => missingerr
|
119
|
-
log.warn "The #{missingerr.object.type} #{missingerr.object.path} has not yet been recognized.\n" \
|
120
|
-
"If this class/method is part of your source tree, this will affect your documentation results.\n" \
|
121
|
-
"You can correct this issue by loading the source file for this object before `#{file}'\n"
|
122
|
-
rescue Parser::UndocumentableError => undocerr
|
123
|
-
log.warn "in #{handler}: Undocumentable #{undocerr.message}\n" \
|
124
|
-
"\tin file '#{file}':#{stmt.line}:\n\n" + stmt.show + "\n"
|
125
|
-
rescue => e
|
126
|
-
log.error "Unhandled exception in #{handler}:\n" \
|
127
|
-
" in `#{file}`:#{stmt.line}:\n\n#{stmt.show}\n"
|
128
|
-
log.backtrace(e)
|
129
|
-
end
|
130
|
-
end
|
131
|
-
end
|
132
|
-
end
|
133
|
-
|
134
|
-
# Continue parsing the remainder of the files in the +globals.ordered_parser+
|
135
|
-
# object. After the remainder of files are parsed, processing will continue
|
136
|
-
# on the current file.
|
137
|
-
#
|
138
|
-
# @return [void]
|
139
|
-
# @see Parser::OrderedParser
|
140
|
-
def parse_remaining_files
|
141
|
-
if globals.ordered_parser
|
142
|
-
globals.ordered_parser.parse
|
143
|
-
log.debug("Re-processing #{@file}...")
|
144
|
-
end
|
145
|
-
end
|
146
|
-
|
147
|
-
# Searches for all handlers in {Base.subclasses} that match the +statement+
|
148
|
-
#
|
149
|
-
# @param statement the statement object to match.
|
150
|
-
# @return [Array<Base>] a list of handlers to process the statement with.
|
151
|
-
def find_handlers(statement)
|
152
|
-
Base.subclasses.find_all do |handler|
|
153
|
-
handler_base_class > handler &&
|
154
|
-
(handler.namespace_only? ? owner.is_a?(CodeObjects::NamespaceObject) : true) &&
|
155
|
-
handles?(handler, statement)
|
156
|
-
end
|
157
|
-
end
|
158
|
-
|
159
|
-
private
|
160
|
-
|
161
|
-
def handles?(handler, statement)
|
162
|
-
return false unless handler.matches_file?(file)
|
163
|
-
if handler.method(:handles?).arity == 1
|
164
|
-
handler.handles?(statement)
|
165
|
-
elsif [-1, 2].include?(handler.method(:handles?).arity)
|
166
|
-
handler.handles?(statement, self)
|
167
|
-
end
|
168
|
-
end
|
169
|
-
|
170
|
-
# Returns the handler base class
|
171
|
-
# @return [Base] the base class
|
172
|
-
def handler_base_class
|
173
|
-
handler_base_namespace.const_get(:Base)
|
174
|
-
end
|
175
|
-
|
176
|
-
# The module holding the handlers to be loaded
|
177
|
-
#
|
178
|
-
# @return [Module] the module containing the handlers depending on
|
179
|
-
# {#parser_type}.
|
180
|
-
def handler_base_namespace
|
181
|
-
self.class.namespace_for_handler[parser_type]
|
182
|
-
end
|
183
|
-
|
184
|
-
# Loads handlers from {#handler_base_namespace}. This ensures that
|
185
|
-
# Ruby1.9 handlers are never loaded into 1.8; also lowers the amount
|
186
|
-
# of modules that are loaded
|
187
|
-
# @return [void]
|
188
|
-
def load_handlers
|
189
|
-
return if @handlers_loaded[parser_type]
|
190
|
-
handler_base_namespace.constants.each do |c|
|
191
|
-
const = handler_base_namespace.const_get(c)
|
192
|
-
unless Handlers::Base.subclasses.include?(const)
|
193
|
-
Handlers::Base.subclasses << const
|
194
|
-
end
|
195
|
-
end
|
196
|
-
@handlers_loaded[parser_type] = true
|
197
|
-
end
|
198
|
-
end
|
199
|
-
end
|
200
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
require 'ostruct'
|
3
|
+
|
4
|
+
module YARD
|
5
|
+
module Handlers
|
6
|
+
# Iterates over all statements in a file and delegates them to the
|
7
|
+
# {Handlers::Base} objects that are registered to handle the statement.
|
8
|
+
#
|
9
|
+
# This class is passed to each handler and keeps overall processing state.
|
10
|
+
# For example, if the {#visibility} is set in a handler, all following
|
11
|
+
# statements will have access to this state. This allows "public",
|
12
|
+
# "protected" and "private" statements to be handled in classes and modules.
|
13
|
+
# In addition, the {#namespace} can be set during parsing to control
|
14
|
+
# where objects are being created from. You can also access extra stateful
|
15
|
+
# properties that any handler can set during the duration of the post
|
16
|
+
# processing of a file from {#extra_state}. If you need to access state
|
17
|
+
# across different files, look at {#globals}.
|
18
|
+
#
|
19
|
+
# @see Handlers::Base
|
20
|
+
class Processor
|
21
|
+
class << self
|
22
|
+
# Registers a new namespace for handlers of the given type.
|
23
|
+
# @since 0.6.0
|
24
|
+
def register_handler_namespace(type, ns)
|
25
|
+
namespace_for_handler[type] = ns
|
26
|
+
end
|
27
|
+
|
28
|
+
# @return [Hash] a list of registered parser type extensions
|
29
|
+
# @private
|
30
|
+
# @since 0.6.0
|
31
|
+
attr_reader :namespace_for_handler
|
32
|
+
undef namespace_for_handler
|
33
|
+
def namespace_for_handler; @@parser_type_extensions ||= {} end
|
34
|
+
end
|
35
|
+
|
36
|
+
register_handler_namespace :ruby, Ruby
|
37
|
+
register_handler_namespace :ruby18, Ruby::Legacy
|
38
|
+
register_handler_namespace :c, C
|
39
|
+
|
40
|
+
# @return [String] the filename
|
41
|
+
attr_accessor :file
|
42
|
+
|
43
|
+
# @return [CodeObjects::NamespaceObject] the current namespace
|
44
|
+
attr_accessor :namespace
|
45
|
+
|
46
|
+
# @return [Symbol] the current visibility (public, private, protected)
|
47
|
+
attr_accessor :visibility
|
48
|
+
|
49
|
+
# @return [Symbol] the current scope (class, instance)
|
50
|
+
attr_accessor :scope
|
51
|
+
|
52
|
+
# @return [CodeObjects::Base, nil] unlike the namespace, the owner
|
53
|
+
# is a non-namespace object that should be stored between statements.
|
54
|
+
# For instance, when parsing a method body, the {CodeObjects::MethodObject}
|
55
|
+
# is set as the owner, in case any extra method information is processed.
|
56
|
+
attr_accessor :owner
|
57
|
+
|
58
|
+
# @return [Symbol] the parser type (:ruby, :ruby18, :c)
|
59
|
+
attr_accessor :parser_type
|
60
|
+
|
61
|
+
# Handlers can share state for the entire post processing stage through
|
62
|
+
# this attribute. Note that post processing stage spans multiple files.
|
63
|
+
# To share state only within a single file, use {#extra_state}
|
64
|
+
#
|
65
|
+
# @example Sharing state among two handlers
|
66
|
+
# class Handler1 < YARD::Handlers::Ruby::Base
|
67
|
+
# handles :class
|
68
|
+
# process { globals.foo = :bar }
|
69
|
+
# end
|
70
|
+
#
|
71
|
+
# class Handler2 < YARD::Handlers::Ruby::Base
|
72
|
+
# handles :method
|
73
|
+
# process { puts globals.foo }
|
74
|
+
# end
|
75
|
+
# @return [OpenStruct] global shared state for post-processing stage
|
76
|
+
# @see #extra_state
|
77
|
+
attr_accessor :globals
|
78
|
+
|
79
|
+
# Share state across different handlers inside of a file.
|
80
|
+
# This attribute is similar to {#visibility}, {#scope}, {#namespace}
|
81
|
+
# and {#owner}, in that they all maintain state across all handlers
|
82
|
+
# for the entire source file. Use this attribute to store any data
|
83
|
+
# your handler might need to save during the parsing of a file. If
|
84
|
+
# you need to save state across files, see {#globals}.
|
85
|
+
#
|
86
|
+
# @return [OpenStruct] an open structure that can store arbitrary data
|
87
|
+
# @see #globals
|
88
|
+
attr_accessor :extra_state
|
89
|
+
|
90
|
+
# Creates a new Processor for a +file+.
|
91
|
+
# @param [Parser::SourceParser] parser the parser used to initialize the processor
|
92
|
+
def initialize(parser)
|
93
|
+
@file = parser.file || "(stdin)"
|
94
|
+
@namespace = YARD::Registry.root
|
95
|
+
@visibility = :public
|
96
|
+
@scope = :instance
|
97
|
+
@owner = @namespace
|
98
|
+
@parser_type = parser.parser_type
|
99
|
+
@handlers_loaded = {}
|
100
|
+
@globals = parser.globals || OpenStruct.new
|
101
|
+
@extra_state = OpenStruct.new
|
102
|
+
load_handlers
|
103
|
+
end
|
104
|
+
|
105
|
+
# Processes a list of statements by finding handlers to process each
|
106
|
+
# one.
|
107
|
+
#
|
108
|
+
# @param [Array] statements a list of statements
|
109
|
+
# @return [void]
|
110
|
+
def process(statements)
|
111
|
+
statements.each_with_index do |stmt, _index|
|
112
|
+
find_handlers(stmt).each do |handler|
|
113
|
+
begin
|
114
|
+
handler.new(self, stmt).process
|
115
|
+
rescue HandlerAborted
|
116
|
+
log.debug "#{handler} cancelled from #{caller.last}"
|
117
|
+
log.debug "\tin file '#{file}':#{stmt.line}:\n\n" + stmt.show + "\n"
|
118
|
+
rescue NamespaceMissingError => missingerr
|
119
|
+
log.warn "The #{missingerr.object.type} #{missingerr.object.path} has not yet been recognized.\n" \
|
120
|
+
"If this class/method is part of your source tree, this will affect your documentation results.\n" \
|
121
|
+
"You can correct this issue by loading the source file for this object before `#{file}'\n"
|
122
|
+
rescue Parser::UndocumentableError => undocerr
|
123
|
+
log.warn "in #{handler}: Undocumentable #{undocerr.message}\n" \
|
124
|
+
"\tin file '#{file}':#{stmt.line}:\n\n" + stmt.show + "\n"
|
125
|
+
rescue => e
|
126
|
+
log.error "Unhandled exception in #{handler}:\n" \
|
127
|
+
" in `#{file}`:#{stmt.line}:\n\n#{stmt.show}\n"
|
128
|
+
log.backtrace(e)
|
129
|
+
end
|
130
|
+
end
|
131
|
+
end
|
132
|
+
end
|
133
|
+
|
134
|
+
# Continue parsing the remainder of the files in the +globals.ordered_parser+
|
135
|
+
# object. After the remainder of files are parsed, processing will continue
|
136
|
+
# on the current file.
|
137
|
+
#
|
138
|
+
# @return [void]
|
139
|
+
# @see Parser::OrderedParser
|
140
|
+
def parse_remaining_files
|
141
|
+
if globals.ordered_parser
|
142
|
+
globals.ordered_parser.parse
|
143
|
+
log.debug("Re-processing #{@file}...")
|
144
|
+
end
|
145
|
+
end
|
146
|
+
|
147
|
+
# Searches for all handlers in {Base.subclasses} that match the +statement+
|
148
|
+
#
|
149
|
+
# @param statement the statement object to match.
|
150
|
+
# @return [Array<Base>] a list of handlers to process the statement with.
|
151
|
+
def find_handlers(statement)
|
152
|
+
Base.subclasses.find_all do |handler|
|
153
|
+
handler_base_class > handler &&
|
154
|
+
(handler.namespace_only? ? owner.is_a?(CodeObjects::NamespaceObject) : true) &&
|
155
|
+
handles?(handler, statement)
|
156
|
+
end
|
157
|
+
end
|
158
|
+
|
159
|
+
private
|
160
|
+
|
161
|
+
def handles?(handler, statement)
|
162
|
+
return false unless handler.matches_file?(file)
|
163
|
+
if handler.method(:handles?).arity == 1
|
164
|
+
handler.handles?(statement)
|
165
|
+
elsif [-1, 2].include?(handler.method(:handles?).arity)
|
166
|
+
handler.handles?(statement, self)
|
167
|
+
end
|
168
|
+
end
|
169
|
+
|
170
|
+
# Returns the handler base class
|
171
|
+
# @return [Base] the base class
|
172
|
+
def handler_base_class
|
173
|
+
handler_base_namespace.const_get(:Base)
|
174
|
+
end
|
175
|
+
|
176
|
+
# The module holding the handlers to be loaded
|
177
|
+
#
|
178
|
+
# @return [Module] the module containing the handlers depending on
|
179
|
+
# {#parser_type}.
|
180
|
+
def handler_base_namespace
|
181
|
+
self.class.namespace_for_handler[parser_type]
|
182
|
+
end
|
183
|
+
|
184
|
+
# Loads handlers from {#handler_base_namespace}. This ensures that
|
185
|
+
# Ruby1.9 handlers are never loaded into 1.8; also lowers the amount
|
186
|
+
# of modules that are loaded
|
187
|
+
# @return [void]
|
188
|
+
def load_handlers
|
189
|
+
return if @handlers_loaded[parser_type]
|
190
|
+
handler_base_namespace.constants.each do |c|
|
191
|
+
const = handler_base_namespace.const_get(c)
|
192
|
+
unless Handlers::Base.subclasses.include?(const)
|
193
|
+
Handlers::Base.subclasses << const
|
194
|
+
end
|
195
|
+
end
|
196
|
+
@handlers_loaded[parser_type] = true
|
197
|
+
end
|
198
|
+
end
|
199
|
+
end
|
200
|
+
end
|