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,19 +1,19 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
module YARD
|
3
|
-
module CodeObjects
|
4
|
-
# Represents the root namespace object (the invisible Ruby module that
|
5
|
-
# holds all top level modules, class and other objects).
|
6
|
-
class RootObject < ModuleObject
|
7
|
-
def path; @path ||= "" end
|
8
|
-
def inspect; @inspect ||= "#<yardoc root>" end
|
9
|
-
def root?; true end
|
10
|
-
def title; 'Top Level Namespace' end
|
11
|
-
|
12
|
-
def equal?(other)
|
13
|
-
other == :root ? true : super(other)
|
14
|
-
end
|
15
|
-
|
16
|
-
def hash; :root.hash end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
module YARD
|
3
|
+
module CodeObjects
|
4
|
+
# Represents the root namespace object (the invisible Ruby module that
|
5
|
+
# holds all top level modules, class and other objects).
|
6
|
+
class RootObject < ModuleObject
|
7
|
+
def path; @path ||= "" end
|
8
|
+
def inspect; @inspect ||= "#<yardoc root>" end
|
9
|
+
def root?; true end
|
10
|
+
def title; 'Top Level Namespace' end
|
11
|
+
|
12
|
+
def equal?(other)
|
13
|
+
other == :root ? true : super(other)
|
14
|
+
end
|
15
|
+
|
16
|
+
def hash; :root.hash end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
data/lib/yard/config.rb
CHANGED
@@ -1,270 +1,270 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
module YARD
|
3
|
-
# This class maintains all system-wide configuration for YARD and handles
|
4
|
-
# the loading of plugins. To access options call {options}, and to load
|
5
|
-
# a plugin use {load_plugin}. All other public methods are used by YARD
|
6
|
-
# during load time.
|
7
|
-
#
|
8
|
-
# == User Configuration Files
|
9
|
-
#
|
10
|
-
# Persistent user configuration files can be stored in the file
|
11
|
-
# +~/.yard/config+, which is read when YARD first loads. The file should
|
12
|
-
# be formatted as YAML, and should contain a map of keys and values.
|
13
|
-
#
|
14
|
-
# Although you can specify any key-value mapping in the configuration file,
|
15
|
-
# YARD defines special keys specified in {DEFAULT_CONFIG_OPTIONS}.
|
16
|
-
#
|
17
|
-
# An example of a configuration file is listed below:
|
18
|
-
#
|
19
|
-
# !!!yaml
|
20
|
-
# load_plugins: true # Auto-load plugins when YARD starts
|
21
|
-
# ignored_plugins:
|
22
|
-
# - yard-broken
|
23
|
-
# - broken2 # yard- prefix not necessary
|
24
|
-
# autoload_plugins:
|
25
|
-
# - yard-rspec
|
26
|
-
#
|
27
|
-
# == Automatic Loading of Plugins
|
28
|
-
#
|
29
|
-
# YARD 0.6.2 will no longer automatically load all plugins by default. This
|
30
|
-
# option can be reset by setting 'load_plugins' to true in the configuration
|
31
|
-
# file. In addition, you can specify a set of specific plugins to load on
|
32
|
-
# load through the 'autoload_plugins' list setting. This setting is
|
33
|
-
# independent of the 'load_plugins' value and will always be processed.
|
34
|
-
#
|
35
|
-
# == Ignored Plugins File
|
36
|
-
#
|
37
|
-
# YARD 0.5 and below used a +~/.yard/ignored_plugins+ file to specify
|
38
|
-
# plugins to be ignored at load time. Ignored plugins in 0.6.2 and above
|
39
|
-
# should now be specified in the main configuration file, though YARD
|
40
|
-
# will support the +ignored_plugins+ file until 0.7.x.
|
41
|
-
#
|
42
|
-
# == Safe Mode
|
43
|
-
#
|
44
|
-
# YARD supports running in safe-mode. By doing this, it will avoid executing
|
45
|
-
# any user code such as require files or queries. Plugins will still be
|
46
|
-
# loaded with safe mode on, because plugins are properly namespaced with
|
47
|
-
# a 'yard-' prefix, must be installed as a gem, and therefore cannot be
|
48
|
-
# touched by the user. To specify safe mode, use the +safe_mode+ key.
|
49
|
-
#
|
50
|
-
# == Plugin Specific Configuration
|
51
|
-
#
|
52
|
-
# Additional settings can be defined within the configuration file
|
53
|
-
# specifically to provide configuration for a plugin. A plugin that utilizes
|
54
|
-
# the YARD configuration is strongly encouraged to utilize namespacing of
|
55
|
-
# their configuration content.
|
56
|
-
#
|
57
|
-
# !!!yaml
|
58
|
-
# load_plugins: true # Auto-load plugins when YARD starts
|
59
|
-
# ignored_plugins:
|
60
|
-
# - yard-broken
|
61
|
-
# - broken2 # yard- prefix not necessary
|
62
|
-
# autoload_plugins:
|
63
|
-
# - yard-rspec
|
64
|
-
# # Plugin Specific Configuration
|
65
|
-
# yard-sample-plugin:
|
66
|
-
# show-results-inline: true
|
67
|
-
#
|
68
|
-
# As the configuration is available system wide, it can be
|
69
|
-
# accessed within the plugin code.
|
70
|
-
#
|
71
|
-
#
|
72
|
-
# if YARD::Config.options['yard-sample-plugin'] and
|
73
|
-
# YARD::Config.options['yard-sample-plugin']['show-results-inline']
|
74
|
-
# # ... perform the action that places the results inline ...
|
75
|
-
# else
|
76
|
-
# # ... do the default behavior of not showing the results inline ...
|
77
|
-
# end
|
78
|
-
#
|
79
|
-
# When accessing the configuration, be aware that this file is user managed
|
80
|
-
# so configuration keys and values may not be present. Make no assumptions and
|
81
|
-
# instead ensure that you check for the existence of keys before proceeding to
|
82
|
-
# retrieve values.
|
83
|
-
#
|
84
|
-
# @since 0.6.2
|
85
|
-
# @see options
|
86
|
-
class Config
|
87
|
-
class << self
|
88
|
-
# The system-wide configuration options for YARD
|
89
|
-
# @return [SymbolHash] a map a key-value pair settings.
|
90
|
-
# @see DEFAULT_CONFIG_OPTIONS
|
91
|
-
attr_accessor :options
|
92
|
-
end
|
93
|
-
|
94
|
-
# The location where YARD stores user-specific settings
|
95
|
-
CONFIG_DIR = File.expand_path('~/.yard')
|
96
|
-
|
97
|
-
# The main configuration YAML file.
|
98
|
-
CONFIG_FILE = File.join(CONFIG_DIR, 'config')
|
99
|
-
|
100
|
-
# File listing all ignored plugins
|
101
|
-
# @deprecated Set `ignored_plugins` in the {CONFIG_FILE} instead.
|
102
|
-
IGNORED_PLUGINS = File.join(CONFIG_DIR, 'ignored_plugins')
|
103
|
-
|
104
|
-
# Default configuration options
|
105
|
-
DEFAULT_CONFIG_OPTIONS = {
|
106
|
-
:load_plugins => false, # Whether to load plugins automatically with YARD
|
107
|
-
:ignored_plugins => [], # A list of ignored plugins by name
|
108
|
-
:autoload_plugins => [], # A list of plugins to be automatically loaded
|
109
|
-
:safe_mode => false # Does not execute or eval any user-level code
|
110
|
-
}
|
111
|
-
|
112
|
-
# The prefix used for YARD plugins. Name your gem with this prefix
|
113
|
-
# to allow it to be used as a plugin.
|
114
|
-
YARD_PLUGIN_PREFIX = /^yard[-_]/
|
115
|
-
|
116
|
-
# Loads settings from {CONFIG_FILE}. This method is called by YARD at
|
117
|
-
# load time and should not be called by the user.
|
118
|
-
# @return [void]
|
119
|
-
def self.load
|
120
|
-
self.options = SymbolHash.new(false)
|
121
|
-
options.update(DEFAULT_CONFIG_OPTIONS)
|
122
|
-
options.update(read_config_file)
|
123
|
-
load_commandline_safemode
|
124
|
-
add_ignored_plugins_file
|
125
|
-
translate_plugin_names
|
126
|
-
load_plugins
|
127
|
-
rescue => e
|
128
|
-
log.error "Invalid configuration file, using default options."
|
129
|
-
log.backtrace(e)
|
130
|
-
options.update(DEFAULT_CONFIG_OPTIONS)
|
131
|
-
end
|
132
|
-
|
133
|
-
# Saves settings to {CONFIG_FILE}.
|
134
|
-
# @return [void]
|
135
|
-
def self.save
|
136
|
-
require 'yaml'
|
137
|
-
Dir.mkdir(CONFIG_DIR) unless File.directory?(CONFIG_DIR)
|
138
|
-
File.open(CONFIG_FILE, 'w') {|f| f.write(YAML.dump(options)) }
|
139
|
-
end
|
140
|
-
|
141
|
-
# Loads gems that match the name 'yard-*' (recommended) or 'yard_*' except
|
142
|
-
# those listed in +~/.yard/ignored_plugins+. This is called immediately
|
143
|
-
# after YARD is loaded to allow plugin support.
|
144
|
-
#
|
145
|
-
# @return [Boolean] true if all plugins loaded successfully, false otherwise.
|
146
|
-
def self.load_plugins
|
147
|
-
load_gem_plugins &&
|
148
|
-
load_autoload_plugins &&
|
149
|
-
load_commandline_plugins ? true : false
|
150
|
-
end
|
151
|
-
|
152
|
-
# Loads an individual plugin by name. It is not necessary to include the
|
153
|
-
# +yard-+ plugin prefix here.
|
154
|
-
#
|
155
|
-
# @param [String] name the name of the plugin (with or without +yard-+ prefix)
|
156
|
-
# @return [Boolean] whether the plugin was successfully loaded
|
157
|
-
def self.load_plugin(name)
|
158
|
-
name = translate_plugin_name(name)
|
159
|
-
return false if options[:ignored_plugins].include?(name)
|
160
|
-
return false if name =~ /^yard-doc-/
|
161
|
-
log.debug "Loading plugin '#{name}'..."
|
162
|
-
require name
|
163
|
-
true
|
164
|
-
rescue LoadError => e
|
165
|
-
load_plugin_failed(name, e)
|
166
|
-
end
|
167
|
-
|
168
|
-
# Load gem plugins if :load_plugins is true
|
169
|
-
def self.load_gem_plugins
|
170
|
-
return true unless options[:load_plugins]
|
171
|
-
require 'rubygems'
|
172
|
-
result = true
|
173
|
-
YARD::GemIndex.each do |gem|
|
174
|
-
begin
|
175
|
-
next true unless gem.name =~ YARD_PLUGIN_PREFIX
|
176
|
-
load_plugin(gem.name)
|
177
|
-
rescue Gem::LoadError => e
|
178
|
-
tmp = load_plugin_failed(gem.name, e)
|
179
|
-
result = tmp unless tmp
|
180
|
-
end
|
181
|
-
end
|
182
|
-
result
|
183
|
-
rescue LoadError
|
184
|
-
log.debug "RubyGems is not present, skipping plugin loading"
|
185
|
-
false
|
186
|
-
end
|
187
|
-
|
188
|
-
# Load plugins set in :autoload_plugins
|
189
|
-
def self.load_autoload_plugins
|
190
|
-
options[:autoload_plugins].each {|name| load_plugin(name) }
|
191
|
-
end
|
192
|
-
|
193
|
-
# Load plugins from {arguments}
|
194
|
-
def self.load_commandline_plugins
|
195
|
-
with_yardopts do
|
196
|
-
arguments.each_with_index do |arg, i|
|
197
|
-
next unless arg == '--plugin'
|
198
|
-
load_plugin(arguments[i + 1])
|
199
|
-
end
|
200
|
-
end
|
201
|
-
end
|
202
|
-
|
203
|
-
# Check for command-line safe_mode switch in {arguments}
|
204
|
-
def self.load_commandline_safemode
|
205
|
-
with_yardopts do
|
206
|
-
arguments.each_with_index do |arg, _i|
|
207
|
-
options[:safe_mode] = true if arg == '--safe'
|
208
|
-
end
|
209
|
-
end
|
210
|
-
end
|
211
|
-
|
212
|
-
# Print a warning if the plugin failed to load
|
213
|
-
# @return [false]
|
214
|
-
def self.load_plugin_failed(name, exception)
|
215
|
-
log.error "Error loading plugin '#{name}'"
|
216
|
-
log.backtrace(exception) if $DEBUG
|
217
|
-
false
|
218
|
-
end
|
219
|
-
|
220
|
-
# Legacy support for {IGNORED_PLUGINS}
|
221
|
-
def self.add_ignored_plugins_file
|
222
|
-
if File.file?(IGNORED_PLUGINS)
|
223
|
-
options[:ignored_plugins] += File.read(IGNORED_PLUGINS).split(/\s+/)
|
224
|
-
end
|
225
|
-
end
|
226
|
-
|
227
|
-
# Translates plugin names to add yard- prefix.
|
228
|
-
def self.translate_plugin_names
|
229
|
-
options[:ignored_plugins].map! {|name| translate_plugin_name(name) }
|
230
|
-
options[:autoload_plugins].map! {|name| translate_plugin_name(name) }
|
231
|
-
end
|
232
|
-
|
233
|
-
# Loads the YAML configuration file into memory
|
234
|
-
# @return [Hash] the contents of the YAML file from disk
|
235
|
-
# @see CONFIG_FILE
|
236
|
-
def self.read_config_file
|
237
|
-
if File.file?(CONFIG_FILE)
|
238
|
-
require 'yaml'
|
239
|
-
YAML.load_file(CONFIG_FILE)
|
240
|
-
else
|
241
|
-
{}
|
242
|
-
end
|
243
|
-
end
|
244
|
-
|
245
|
-
# Sanitizes and normalizes a plugin name to include the 'yard-' prefix.
|
246
|
-
# @param [String] name the plugin name
|
247
|
-
# @return [String] the sanitized and normalized plugin name.
|
248
|
-
def self.translate_plugin_name(name)
|
249
|
-
name = name.delete('/') # Security sanitization
|
250
|
-
name = "yard-" + name unless name =~ YARD_PLUGIN_PREFIX
|
251
|
-
name
|
252
|
-
end
|
253
|
-
|
254
|
-
# Temporarily loads .yardopts file into @yardopts
|
255
|
-
def self.with_yardopts
|
256
|
-
yfile = CLI::Yardoc::DEFAULT_YARDOPTS_FILE
|
257
|
-
@yardopts = File.file?(yfile) ? File.read_binary(yfile).shell_split : []
|
258
|
-
result = yield
|
259
|
-
@yardopts = nil
|
260
|
-
result
|
261
|
-
end
|
262
|
-
|
263
|
-
# @return [Array<String>] arguments from commandline and yardopts file
|
264
|
-
def self.arguments
|
265
|
-
ARGV + @yardopts
|
266
|
-
end
|
267
|
-
end
|
268
|
-
|
269
|
-
Config.options = Config::DEFAULT_CONFIG_OPTIONS
|
270
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
module YARD
|
3
|
+
# This class maintains all system-wide configuration for YARD and handles
|
4
|
+
# the loading of plugins. To access options call {options}, and to load
|
5
|
+
# a plugin use {load_plugin}. All other public methods are used by YARD
|
6
|
+
# during load time.
|
7
|
+
#
|
8
|
+
# == User Configuration Files
|
9
|
+
#
|
10
|
+
# Persistent user configuration files can be stored in the file
|
11
|
+
# +~/.yard/config+, which is read when YARD first loads. The file should
|
12
|
+
# be formatted as YAML, and should contain a map of keys and values.
|
13
|
+
#
|
14
|
+
# Although you can specify any key-value mapping in the configuration file,
|
15
|
+
# YARD defines special keys specified in {DEFAULT_CONFIG_OPTIONS}.
|
16
|
+
#
|
17
|
+
# An example of a configuration file is listed below:
|
18
|
+
#
|
19
|
+
# !!!yaml
|
20
|
+
# load_plugins: true # Auto-load plugins when YARD starts
|
21
|
+
# ignored_plugins:
|
22
|
+
# - yard-broken
|
23
|
+
# - broken2 # yard- prefix not necessary
|
24
|
+
# autoload_plugins:
|
25
|
+
# - yard-rspec
|
26
|
+
#
|
27
|
+
# == Automatic Loading of Plugins
|
28
|
+
#
|
29
|
+
# YARD 0.6.2 will no longer automatically load all plugins by default. This
|
30
|
+
# option can be reset by setting 'load_plugins' to true in the configuration
|
31
|
+
# file. In addition, you can specify a set of specific plugins to load on
|
32
|
+
# load through the 'autoload_plugins' list setting. This setting is
|
33
|
+
# independent of the 'load_plugins' value and will always be processed.
|
34
|
+
#
|
35
|
+
# == Ignored Plugins File
|
36
|
+
#
|
37
|
+
# YARD 0.5 and below used a +~/.yard/ignored_plugins+ file to specify
|
38
|
+
# plugins to be ignored at load time. Ignored plugins in 0.6.2 and above
|
39
|
+
# should now be specified in the main configuration file, though YARD
|
40
|
+
# will support the +ignored_plugins+ file until 0.7.x.
|
41
|
+
#
|
42
|
+
# == Safe Mode
|
43
|
+
#
|
44
|
+
# YARD supports running in safe-mode. By doing this, it will avoid executing
|
45
|
+
# any user code such as require files or queries. Plugins will still be
|
46
|
+
# loaded with safe mode on, because plugins are properly namespaced with
|
47
|
+
# a 'yard-' prefix, must be installed as a gem, and therefore cannot be
|
48
|
+
# touched by the user. To specify safe mode, use the +safe_mode+ key.
|
49
|
+
#
|
50
|
+
# == Plugin Specific Configuration
|
51
|
+
#
|
52
|
+
# Additional settings can be defined within the configuration file
|
53
|
+
# specifically to provide configuration for a plugin. A plugin that utilizes
|
54
|
+
# the YARD configuration is strongly encouraged to utilize namespacing of
|
55
|
+
# their configuration content.
|
56
|
+
#
|
57
|
+
# !!!yaml
|
58
|
+
# load_plugins: true # Auto-load plugins when YARD starts
|
59
|
+
# ignored_plugins:
|
60
|
+
# - yard-broken
|
61
|
+
# - broken2 # yard- prefix not necessary
|
62
|
+
# autoload_plugins:
|
63
|
+
# - yard-rspec
|
64
|
+
# # Plugin Specific Configuration
|
65
|
+
# yard-sample-plugin:
|
66
|
+
# show-results-inline: true
|
67
|
+
#
|
68
|
+
# As the configuration is available system wide, it can be
|
69
|
+
# accessed within the plugin code.
|
70
|
+
#
|
71
|
+
#
|
72
|
+
# if YARD::Config.options['yard-sample-plugin'] and
|
73
|
+
# YARD::Config.options['yard-sample-plugin']['show-results-inline']
|
74
|
+
# # ... perform the action that places the results inline ...
|
75
|
+
# else
|
76
|
+
# # ... do the default behavior of not showing the results inline ...
|
77
|
+
# end
|
78
|
+
#
|
79
|
+
# When accessing the configuration, be aware that this file is user managed
|
80
|
+
# so configuration keys and values may not be present. Make no assumptions and
|
81
|
+
# instead ensure that you check for the existence of keys before proceeding to
|
82
|
+
# retrieve values.
|
83
|
+
#
|
84
|
+
# @since 0.6.2
|
85
|
+
# @see options
|
86
|
+
class Config
|
87
|
+
class << self
|
88
|
+
# The system-wide configuration options for YARD
|
89
|
+
# @return [SymbolHash] a map a key-value pair settings.
|
90
|
+
# @see DEFAULT_CONFIG_OPTIONS
|
91
|
+
attr_accessor :options
|
92
|
+
end
|
93
|
+
|
94
|
+
# The location where YARD stores user-specific settings
|
95
|
+
CONFIG_DIR = File.expand_path('~/.yard')
|
96
|
+
|
97
|
+
# The main configuration YAML file.
|
98
|
+
CONFIG_FILE = File.join(CONFIG_DIR, 'config')
|
99
|
+
|
100
|
+
# File listing all ignored plugins
|
101
|
+
# @deprecated Set `ignored_plugins` in the {CONFIG_FILE} instead.
|
102
|
+
IGNORED_PLUGINS = File.join(CONFIG_DIR, 'ignored_plugins')
|
103
|
+
|
104
|
+
# Default configuration options
|
105
|
+
DEFAULT_CONFIG_OPTIONS = {
|
106
|
+
:load_plugins => false, # Whether to load plugins automatically with YARD
|
107
|
+
:ignored_plugins => [], # A list of ignored plugins by name
|
108
|
+
:autoload_plugins => [], # A list of plugins to be automatically loaded
|
109
|
+
:safe_mode => false # Does not execute or eval any user-level code
|
110
|
+
}
|
111
|
+
|
112
|
+
# The prefix used for YARD plugins. Name your gem with this prefix
|
113
|
+
# to allow it to be used as a plugin.
|
114
|
+
YARD_PLUGIN_PREFIX = /^yard[-_]/
|
115
|
+
|
116
|
+
# Loads settings from {CONFIG_FILE}. This method is called by YARD at
|
117
|
+
# load time and should not be called by the user.
|
118
|
+
# @return [void]
|
119
|
+
def self.load
|
120
|
+
self.options = SymbolHash.new(false)
|
121
|
+
options.update(DEFAULT_CONFIG_OPTIONS)
|
122
|
+
options.update(read_config_file)
|
123
|
+
load_commandline_safemode
|
124
|
+
add_ignored_plugins_file
|
125
|
+
translate_plugin_names
|
126
|
+
load_plugins
|
127
|
+
rescue => e
|
128
|
+
log.error "Invalid configuration file, using default options."
|
129
|
+
log.backtrace(e)
|
130
|
+
options.update(DEFAULT_CONFIG_OPTIONS)
|
131
|
+
end
|
132
|
+
|
133
|
+
# Saves settings to {CONFIG_FILE}.
|
134
|
+
# @return [void]
|
135
|
+
def self.save
|
136
|
+
require 'yaml'
|
137
|
+
Dir.mkdir(CONFIG_DIR) unless File.directory?(CONFIG_DIR)
|
138
|
+
File.open(CONFIG_FILE, 'w') {|f| f.write(YAML.dump(options)) }
|
139
|
+
end
|
140
|
+
|
141
|
+
# Loads gems that match the name 'yard-*' (recommended) or 'yard_*' except
|
142
|
+
# those listed in +~/.yard/ignored_plugins+. This is called immediately
|
143
|
+
# after YARD is loaded to allow plugin support.
|
144
|
+
#
|
145
|
+
# @return [Boolean] true if all plugins loaded successfully, false otherwise.
|
146
|
+
def self.load_plugins
|
147
|
+
load_gem_plugins &&
|
148
|
+
load_autoload_plugins &&
|
149
|
+
load_commandline_plugins ? true : false
|
150
|
+
end
|
151
|
+
|
152
|
+
# Loads an individual plugin by name. It is not necessary to include the
|
153
|
+
# +yard-+ plugin prefix here.
|
154
|
+
#
|
155
|
+
# @param [String] name the name of the plugin (with or without +yard-+ prefix)
|
156
|
+
# @return [Boolean] whether the plugin was successfully loaded
|
157
|
+
def self.load_plugin(name)
|
158
|
+
name = translate_plugin_name(name)
|
159
|
+
return false if options[:ignored_plugins].include?(name)
|
160
|
+
return false if name =~ /^yard-doc-/
|
161
|
+
log.debug "Loading plugin '#{name}'..."
|
162
|
+
require name
|
163
|
+
true
|
164
|
+
rescue LoadError => e
|
165
|
+
load_plugin_failed(name, e)
|
166
|
+
end
|
167
|
+
|
168
|
+
# Load gem plugins if :load_plugins is true
|
169
|
+
def self.load_gem_plugins
|
170
|
+
return true unless options[:load_plugins]
|
171
|
+
require 'rubygems'
|
172
|
+
result = true
|
173
|
+
YARD::GemIndex.each do |gem|
|
174
|
+
begin
|
175
|
+
next true unless gem.name =~ YARD_PLUGIN_PREFIX
|
176
|
+
load_plugin(gem.name)
|
177
|
+
rescue Gem::LoadError => e
|
178
|
+
tmp = load_plugin_failed(gem.name, e)
|
179
|
+
result = tmp unless tmp
|
180
|
+
end
|
181
|
+
end
|
182
|
+
result
|
183
|
+
rescue LoadError
|
184
|
+
log.debug "RubyGems is not present, skipping plugin loading"
|
185
|
+
false
|
186
|
+
end
|
187
|
+
|
188
|
+
# Load plugins set in :autoload_plugins
|
189
|
+
def self.load_autoload_plugins
|
190
|
+
options[:autoload_plugins].each {|name| load_plugin(name) }
|
191
|
+
end
|
192
|
+
|
193
|
+
# Load plugins from {arguments}
|
194
|
+
def self.load_commandline_plugins
|
195
|
+
with_yardopts do
|
196
|
+
arguments.each_with_index do |arg, i|
|
197
|
+
next unless arg == '--plugin'
|
198
|
+
load_plugin(arguments[i + 1])
|
199
|
+
end
|
200
|
+
end
|
201
|
+
end
|
202
|
+
|
203
|
+
# Check for command-line safe_mode switch in {arguments}
|
204
|
+
def self.load_commandline_safemode
|
205
|
+
with_yardopts do
|
206
|
+
arguments.each_with_index do |arg, _i|
|
207
|
+
options[:safe_mode] = true if arg == '--safe'
|
208
|
+
end
|
209
|
+
end
|
210
|
+
end
|
211
|
+
|
212
|
+
# Print a warning if the plugin failed to load
|
213
|
+
# @return [false]
|
214
|
+
def self.load_plugin_failed(name, exception)
|
215
|
+
log.error "Error loading plugin '#{name}'"
|
216
|
+
log.backtrace(exception) if $DEBUG
|
217
|
+
false
|
218
|
+
end
|
219
|
+
|
220
|
+
# Legacy support for {IGNORED_PLUGINS}
|
221
|
+
def self.add_ignored_plugins_file
|
222
|
+
if File.file?(IGNORED_PLUGINS)
|
223
|
+
options[:ignored_plugins] += File.read(IGNORED_PLUGINS).split(/\s+/)
|
224
|
+
end
|
225
|
+
end
|
226
|
+
|
227
|
+
# Translates plugin names to add yard- prefix.
|
228
|
+
def self.translate_plugin_names
|
229
|
+
options[:ignored_plugins].map! {|name| translate_plugin_name(name) }
|
230
|
+
options[:autoload_plugins].map! {|name| translate_plugin_name(name) }
|
231
|
+
end
|
232
|
+
|
233
|
+
# Loads the YAML configuration file into memory
|
234
|
+
# @return [Hash] the contents of the YAML file from disk
|
235
|
+
# @see CONFIG_FILE
|
236
|
+
def self.read_config_file
|
237
|
+
if File.file?(CONFIG_FILE)
|
238
|
+
require 'yaml'
|
239
|
+
YAML.load_file(CONFIG_FILE)
|
240
|
+
else
|
241
|
+
{}
|
242
|
+
end
|
243
|
+
end
|
244
|
+
|
245
|
+
# Sanitizes and normalizes a plugin name to include the 'yard-' prefix.
|
246
|
+
# @param [String] name the plugin name
|
247
|
+
# @return [String] the sanitized and normalized plugin name.
|
248
|
+
def self.translate_plugin_name(name)
|
249
|
+
name = name.delete('/') # Security sanitization
|
250
|
+
name = "yard-" + name unless name =~ YARD_PLUGIN_PREFIX
|
251
|
+
name
|
252
|
+
end
|
253
|
+
|
254
|
+
# Temporarily loads .yardopts file into @yardopts
|
255
|
+
def self.with_yardopts
|
256
|
+
yfile = CLI::Yardoc::DEFAULT_YARDOPTS_FILE
|
257
|
+
@yardopts = File.file?(yfile) ? File.read_binary(yfile).shell_split : []
|
258
|
+
result = yield
|
259
|
+
@yardopts = nil
|
260
|
+
result
|
261
|
+
end
|
262
|
+
|
263
|
+
# @return [Array<String>] arguments from commandline and yardopts file
|
264
|
+
def self.arguments
|
265
|
+
ARGV + @yardopts
|
266
|
+
end
|
267
|
+
end
|
268
|
+
|
269
|
+
Config.options = Config::DEFAULT_CONFIG_OPTIONS
|
270
|
+
end
|