yard 0.9.18 → 0.9.19
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of yard might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/.yardopts +26 -26
- data/CHANGELOG.md +742 -728
- data/LEGAL +66 -66
- data/LICENSE +22 -22
- data/README.md +328 -328
- data/Rakefile +42 -53
- data/benchmarks/builtins_vs_eval.rb +24 -24
- data/benchmarks/concat_vs_join.rb +13 -13
- data/benchmarks/erb_vs_erubis.rb +54 -54
- data/benchmarks/format_args.rb +47 -47
- data/benchmarks/generation.rb +38 -38
- data/benchmarks/marshal_vs_dbm.rb +64 -64
- data/benchmarks/parsing.rb +46 -46
- data/benchmarks/pathname_vs_string.rb +50 -50
- data/benchmarks/rdoc_vs_yardoc.rb +11 -11
- data/benchmarks/registry_store_types.rb +49 -49
- data/benchmarks/ri_vs_yri.rb +19 -19
- data/benchmarks/ripper_parser.rb +13 -13
- data/benchmarks/splat_vs_flatten.rb +13 -13
- data/benchmarks/template_erb.rb +23 -23
- data/benchmarks/template_format.rb +7 -7
- data/benchmarks/template_profile.rb +18 -18
- data/benchmarks/yri_cache.rb +20 -20
- data/bin/yard +13 -13
- data/bin/yardoc +13 -13
- data/bin/yri +13 -13
- data/docs/CodeObjects.md +115 -115
- data/docs/GettingStarted.md +679 -679
- data/docs/Handlers.md +152 -152
- data/docs/Overview.md +61 -61
- data/docs/Parser.md +191 -191
- data/docs/Tags.md +283 -283
- data/docs/TagsArch.md +123 -123
- data/docs/Templates.md +496 -496
- data/docs/WhatsNew.md +1245 -1245
- data/docs/templates/default/fulldoc/html/full_list_tag.erb +8 -8
- data/docs/templates/default/fulldoc/html/setup.rb +6 -6
- data/docs/templates/default/layout/html/setup.rb +9 -9
- data/docs/templates/default/layout/html/tag_list.erb +11 -11
- data/docs/templates/default/yard_tags/html/list.erb +18 -18
- data/docs/templates/default/yard_tags/html/setup.rb +26 -26
- data/docs/templates/plugin.rb +70 -70
- data/lib/rubygems_plugin.rb +9 -9
- data/lib/yard.rb +69 -69
- data/lib/yard/autoload.rb +308 -303
- data/lib/yard/cli/command.rb +85 -85
- data/lib/yard/cli/command_parser.rb +93 -93
- data/lib/yard/cli/config.rb +198 -198
- data/lib/yard/cli/diff.rb +270 -270
- data/lib/yard/cli/display.rb +69 -69
- data/lib/yard/cli/gems.rb +84 -84
- data/lib/yard/cli/graph.rb +125 -125
- data/lib/yard/cli/help.rb +20 -20
- data/lib/yard/cli/i18n.rb +70 -70
- data/lib/yard/cli/list.rb +23 -23
- data/lib/yard/cli/markup_types.rb +32 -32
- data/lib/yard/cli/server.rb +257 -257
- data/lib/yard/cli/stats.rb +231 -231
- data/lib/yard/cli/yardoc.rb +789 -788
- data/lib/yard/cli/yardopts_command.rb +110 -110
- data/lib/yard/cli/yri.rb +215 -215
- data/lib/yard/code_objects/base.rb +615 -615
- data/lib/yard/code_objects/class_object.rb +146 -146
- data/lib/yard/code_objects/class_variable_object.rb +11 -11
- data/lib/yard/code_objects/constant_object.rb +16 -16
- data/lib/yard/code_objects/extended_method_object.rb +24 -24
- data/lib/yard/code_objects/extra_file_object.rb +134 -131
- data/lib/yard/code_objects/macro_object.rb +172 -172
- data/lib/yard/code_objects/method_object.rb +196 -196
- data/lib/yard/code_objects/module_object.rb +21 -21
- data/lib/yard/code_objects/namespace_mapper.rb +114 -114
- data/lib/yard/code_objects/namespace_object.rb +200 -200
- data/lib/yard/code_objects/proxy.rb +240 -240
- data/lib/yard/code_objects/root_object.rb +19 -19
- data/lib/yard/config.rb +270 -270
- data/lib/yard/core_ext/array.rb +16 -16
- data/lib/yard/core_ext/file.rb +69 -69
- data/lib/yard/core_ext/hash.rb +16 -16
- data/lib/yard/core_ext/insertion.rb +63 -63
- data/lib/yard/core_ext/module.rb +11 -20
- data/lib/yard/core_ext/string.rb +68 -68
- data/lib/yard/core_ext/symbol_hash.rb +75 -75
- data/lib/yard/docstring.rb +386 -386
- data/lib/yard/docstring_parser.rb +345 -345
- data/lib/yard/gem_index.rb +29 -29
- data/lib/yard/globals.rb +22 -22
- data/lib/yard/handlers/base.rb +595 -595
- data/lib/yard/handlers/c/alias_handler.rb +16 -16
- data/lib/yard/handlers/c/attribute_handler.rb +13 -13
- data/lib/yard/handlers/c/base.rb +129 -129
- data/lib/yard/handlers/c/class_handler.rb +27 -27
- data/lib/yard/handlers/c/constant_handler.rb +13 -13
- data/lib/yard/handlers/c/handler_methods.rb +212 -211
- data/lib/yard/handlers/c/init_handler.rb +20 -20
- data/lib/yard/handlers/c/method_handler.rb +45 -45
- data/lib/yard/handlers/c/mixin_handler.rb +21 -21
- data/lib/yard/handlers/c/module_handler.rb +17 -17
- data/lib/yard/handlers/c/override_comment_handler.rb +31 -31
- data/lib/yard/handlers/c/path_handler.rb +11 -11
- data/lib/yard/handlers/c/struct_handler.rb +13 -13
- data/lib/yard/handlers/c/symbol_handler.rb +8 -8
- data/lib/yard/handlers/common/method_handler.rb +19 -0
- data/lib/yard/handlers/processor.rb +200 -200
- data/lib/yard/handlers/ruby/alias_handler.rb +44 -44
- data/lib/yard/handlers/ruby/attribute_handler.rb +87 -87
- data/lib/yard/handlers/ruby/base.rb +165 -165
- data/lib/yard/handlers/ruby/class_condition_handler.rb +92 -92
- data/lib/yard/handlers/ruby/class_handler.rb +119 -119
- data/lib/yard/handlers/ruby/class_variable_handler.rb +17 -17
- data/lib/yard/handlers/ruby/comment_handler.rb +10 -10
- data/lib/yard/handlers/ruby/constant_handler.rb +59 -59
- data/lib/yard/handlers/ruby/decorator_handler_methods.rb +123 -123
- data/lib/yard/handlers/ruby/dsl_handler.rb +15 -15
- data/lib/yard/handlers/ruby/dsl_handler_methods.rb +96 -96
- data/lib/yard/handlers/ruby/exception_handler.rb +27 -27
- data/lib/yard/handlers/ruby/extend_handler.rb +22 -22
- data/lib/yard/handlers/ruby/legacy/alias_handler.rb +37 -37
- data/lib/yard/handlers/ruby/legacy/attribute_handler.rb +65 -65
- data/lib/yard/handlers/ruby/legacy/base.rb +245 -245
- data/lib/yard/handlers/ruby/legacy/class_condition_handler.rb +83 -83
- data/lib/yard/handlers/ruby/legacy/class_handler.rb +113 -113
- data/lib/yard/handlers/ruby/legacy/class_variable_handler.rb +15 -15
- data/lib/yard/handlers/ruby/legacy/comment_handler.rb +10 -10
- data/lib/yard/handlers/ruby/legacy/constant_handler.rb +29 -29
- data/lib/yard/handlers/ruby/legacy/dsl_handler.rb +17 -17
- data/lib/yard/handlers/ruby/legacy/exception_handler.rb +13 -13
- data/lib/yard/handlers/ruby/legacy/extend_handler.rb +21 -21
- data/lib/yard/handlers/ruby/legacy/method_handler.rb +90 -90
- data/lib/yard/handlers/ruby/legacy/mixin_handler.rb +39 -39
- data/lib/yard/handlers/ruby/legacy/module_function_handler.rb +19 -19
- data/lib/yard/handlers/ruby/legacy/module_handler.rb +12 -12
- data/lib/yard/handlers/ruby/legacy/private_class_method_handler.rb +22 -22
- data/lib/yard/handlers/ruby/legacy/private_constant_handler.rb +22 -22
- data/lib/yard/handlers/ruby/legacy/visibility_handler.rb +17 -17
- data/lib/yard/handlers/ruby/legacy/yield_handler.rb +29 -29
- data/lib/yard/handlers/ruby/method_condition_handler.rb +9 -9
- data/lib/yard/handlers/ruby/method_handler.rb +114 -118
- data/lib/yard/handlers/ruby/mixin_handler.rb +37 -37
- data/lib/yard/handlers/ruby/module_function_handler.rb +27 -27
- data/lib/yard/handlers/ruby/module_handler.rb +12 -12
- data/lib/yard/handlers/ruby/private_class_method_handler.rb +14 -14
- data/lib/yard/handlers/ruby/private_constant_handler.rb +43 -43
- data/lib/yard/handlers/ruby/public_class_method_handler.rb +14 -14
- data/lib/yard/handlers/ruby/struct_handler_methods.rb +143 -143
- data/lib/yard/handlers/ruby/visibility_handler.rb +22 -22
- data/lib/yard/handlers/ruby/yield_handler.rb +31 -31
- data/lib/yard/i18n/locale.rb +67 -67
- data/lib/yard/i18n/message.rb +57 -57
- data/lib/yard/i18n/messages.rb +56 -56
- data/lib/yard/i18n/po_parser.rb +61 -61
- data/lib/yard/i18n/pot_generator.rb +290 -290
- data/lib/yard/i18n/text.rb +173 -173
- data/lib/yard/logging.rb +205 -205
- data/lib/yard/options.rb +217 -217
- data/lib/yard/parser/base.rb +57 -57
- data/lib/yard/parser/c/c_parser.rb +235 -235
- data/lib/yard/parser/c/comment_parser.rb +134 -134
- data/lib/yard/parser/c/statement.rb +64 -64
- data/lib/yard/parser/ruby/ast_node.rb +540 -540
- data/lib/yard/parser/ruby/legacy/ruby_lex.rb +1354 -1354
- data/lib/yard/parser/ruby/legacy/ruby_parser.rb +32 -32
- data/lib/yard/parser/ruby/legacy/statement.rb +66 -66
- data/lib/yard/parser/ruby/legacy/statement_list.rb +394 -394
- data/lib/yard/parser/ruby/legacy/token_list.rb +74 -74
- data/lib/yard/parser/ruby/ruby_parser.rb +687 -687
- data/lib/yard/parser/ruby/token_resolver.rb +156 -156
- data/lib/yard/parser/source_parser.rb +526 -526
- data/lib/yard/rake/yardoc_task.rb +81 -81
- data/lib/yard/registry.rb +439 -439
- data/lib/yard/registry_resolver.rb +189 -189
- data/lib/yard/registry_store.rb +337 -337
- data/lib/yard/rubygems/backports.rb +10 -10
- data/lib/yard/rubygems/backports/LICENSE.txt +57 -57
- data/lib/yard/rubygems/backports/MIT.txt +20 -20
- data/lib/yard/rubygems/backports/gem.rb +10 -10
- data/lib/yard/rubygems/backports/source_index.rb +365 -365
- data/lib/yard/rubygems/doc_manager.rb +90 -90
- data/lib/yard/rubygems/hook.rb +197 -197
- data/lib/yard/rubygems/specification.rb +50 -50
- data/lib/yard/serializers/base.rb +83 -83
- data/lib/yard/serializers/file_system_serializer.rb +123 -123
- data/lib/yard/serializers/process_serializer.rb +24 -24
- data/lib/yard/serializers/stdout_serializer.rb +34 -34
- data/lib/yard/serializers/yardoc_serializer.rb +152 -152
- data/lib/yard/server.rb +13 -13
- data/lib/yard/server/adapter.rb +100 -100
- data/lib/yard/server/commands/base.rb +209 -209
- data/lib/yard/server/commands/display_file_command.rb +29 -29
- data/lib/yard/server/commands/display_object_command.rb +65 -65
- data/lib/yard/server/commands/frames_command.rb +16 -16
- data/lib/yard/server/commands/library_command.rb +187 -187
- data/lib/yard/server/commands/library_index_command.rb +28 -28
- data/lib/yard/server/commands/list_command.rb +25 -25
- data/lib/yard/server/commands/root_request_command.rb +15 -15
- data/lib/yard/server/commands/search_command.rb +79 -79
- data/lib/yard/server/commands/static_file_command.rb +23 -23
- data/lib/yard/server/commands/static_file_helpers.rb +62 -62
- data/lib/yard/server/doc_server_helper.rb +91 -91
- data/lib/yard/server/doc_server_serializer.rb +39 -39
- data/lib/yard/server/library_version.rb +277 -277
- data/lib/yard/server/rack_adapter.rb +89 -89
- data/lib/yard/server/router.rb +187 -187
- data/lib/yard/server/static_caching.rb +46 -46
- data/lib/yard/server/templates/default/fulldoc/html/css/custom.css +127 -127
- data/lib/yard/server/templates/default/fulldoc/html/js/autocomplete.js +11 -11
- data/lib/yard/server/templates/default/layout/html/breadcrumb.erb +37 -37
- data/lib/yard/server/templates/default/layout/html/script_setup.erb +7 -7
- data/lib/yard/server/templates/default/layout/html/setup.rb +8 -8
- data/lib/yard/server/templates/default/method_details/html/permalink.erb +4 -4
- data/lib/yard/server/templates/default/method_details/html/setup.rb +5 -5
- data/lib/yard/server/templates/doc_server/library_list/html/headers.erb +8 -8
- data/lib/yard/server/templates/doc_server/library_list/html/library_list.erb +14 -14
- data/lib/yard/server/templates/doc_server/library_list/html/listing.erb +13 -13
- data/lib/yard/server/templates/doc_server/library_list/html/setup.rb +6 -6
- data/lib/yard/server/templates/doc_server/library_list/html/title.erb +2 -2
- data/lib/yard/server/templates/doc_server/processing/html/processing.erb +52 -52
- data/lib/yard/server/templates/doc_server/processing/html/setup.rb +4 -4
- data/lib/yard/server/templates/doc_server/search/html/search.erb +18 -18
- data/lib/yard/server/templates/doc_server/search/html/setup.rb +9 -9
- data/lib/yard/server/webrick_adapter.rb +45 -45
- data/lib/yard/tags/default_factory.rb +191 -191
- data/lib/yard/tags/default_tag.rb +13 -13
- data/lib/yard/tags/directives.rb +616 -616
- data/lib/yard/tags/library.rb +633 -633
- data/lib/yard/tags/option_tag.rb +13 -13
- data/lib/yard/tags/overload_tag.rb +71 -71
- data/lib/yard/tags/ref_tag.rb +8 -8
- data/lib/yard/tags/ref_tag_list.rb +28 -28
- data/lib/yard/tags/tag.rb +71 -71
- data/lib/yard/tags/tag_format_error.rb +7 -7
- data/lib/yard/tags/types_explainer.rb +162 -162
- data/lib/yard/templates/engine.rb +186 -186
- data/lib/yard/templates/erb_cache.rb +23 -23
- data/lib/yard/templates/helpers/base_helper.rb +215 -215
- data/lib/yard/templates/helpers/filter_helper.rb +27 -27
- data/lib/yard/templates/helpers/html_helper.rb +646 -646
- data/lib/yard/templates/helpers/html_syntax_highlight_helper.rb +78 -78
- data/lib/yard/templates/helpers/markup/rdoc_markdown.rb +23 -23
- data/lib/yard/templates/helpers/markup/rdoc_markup.rb +109 -109
- data/lib/yard/templates/helpers/markup_helper.rb +172 -172
- data/lib/yard/templates/helpers/method_helper.rb +75 -75
- data/lib/yard/templates/helpers/module_helper.rb +21 -21
- data/lib/yard/templates/helpers/text_helper.rb +112 -112
- data/lib/yard/templates/helpers/uml_helper.rb +47 -47
- data/lib/yard/templates/section.rb +105 -105
- data/lib/yard/templates/template.rb +418 -418
- data/lib/yard/templates/template_options.rb +92 -92
- data/lib/yard/verifier.rb +151 -151
- data/lib/yard/version.rb +6 -6
- data/spec/cli/command_parser_spec.rb +43 -43
- data/spec/cli/command_spec.rb +36 -36
- data/spec/cli/config_spec.rb +148 -148
- data/spec/cli/diff_spec.rb +254 -254
- data/spec/cli/display_spec.rb +30 -30
- data/spec/cli/gems_spec.rb +81 -81
- data/spec/cli/graph_spec.rb +18 -18
- data/spec/cli/help_spec.rb +22 -22
- data/spec/cli/i18n_spec.rb +107 -107
- data/spec/cli/list_spec.rb +8 -8
- data/spec/cli/markup_types_spec.rb +22 -22
- data/spec/cli/server_spec.rb +324 -324
- data/spec/cli/stats_spec.rb +96 -96
- data/spec/cli/yard_on_yard_spec.rb +38 -38
- data/spec/cli/yardoc_spec.rb +896 -862
- data/spec/cli/yri_spec.rb +101 -101
- data/spec/code_objects/base_spec.rb +470 -470
- data/spec/code_objects/class_object_spec.rb +226 -226
- data/spec/code_objects/code_object_list_spec.rb +36 -36
- data/spec/code_objects/constants_spec.rb +116 -116
- data/spec/code_objects/extra_file_object_spec.rb +160 -160
- data/spec/code_objects/macro_object_spec.rb +150 -150
- data/spec/code_objects/method_object_spec.rb +184 -184
- data/spec/code_objects/module_object_spec.rb +142 -142
- data/spec/code_objects/namespace_object_spec.rb +171 -171
- data/spec/code_objects/proxy_spec.rb +141 -141
- data/spec/code_objects/spec_helper.rb +3 -3
- data/spec/config_spec.rb +171 -171
- data/spec/core_ext/array_spec.rb +13 -13
- data/spec/core_ext/file_spec.rb +72 -72
- data/spec/core_ext/hash_spec.rb +14 -14
- data/spec/core_ext/insertion_spec.rb +37 -37
- data/spec/core_ext/module_spec.rb +9 -15
- data/spec/core_ext/string_spec.rb +42 -42
- data/spec/core_ext/symbol_hash_spec.rb +89 -89
- data/spec/docstring_parser_spec.rb +280 -280
- data/spec/docstring_spec.rb +373 -373
- data/spec/examples.txt +1883 -1875
- data/spec/handlers/alias_handler_spec.rb +82 -82
- data/spec/handlers/attribute_handler_spec.rb +96 -96
- data/spec/handlers/base_spec.rb +216 -216
- data/spec/handlers/c/alias_handler_spec.rb +34 -34
- data/spec/handlers/c/attribute_handler_spec.rb +41 -41
- data/spec/handlers/c/class_handler_spec.rb +78 -78
- data/spec/handlers/c/constant_handler_spec.rb +71 -71
- data/spec/handlers/c/init_handler_spec.rb +48 -48
- data/spec/handlers/c/method_handler_spec.rb +327 -325
- data/spec/handlers/c/mixin_handler_spec.rb +44 -44
- data/spec/handlers/c/module_handler_spec.rb +71 -71
- data/spec/handlers/c/override_comment_handler_spec.rb +47 -47
- data/spec/handlers/c/path_handler_spec.rb +36 -36
- data/spec/handlers/c/spec_helper.rb +23 -23
- data/spec/handlers/c/struct_handler_spec.rb +16 -16
- data/spec/handlers/class_condition_handler_spec.rb +87 -87
- data/spec/handlers/class_handler_spec.rb +247 -247
- data/spec/handlers/class_method_handler_shared_examples.rb +133 -133
- data/spec/handlers/class_variable_handler_spec.rb +12 -12
- data/spec/handlers/constant_handler_spec.rb +112 -112
- data/spec/handlers/decorator_handler_methods_spec.rb +393 -393
- data/spec/handlers/dsl_handler_spec.rb +219 -219
- data/spec/handlers/examples/alias_handler_001.rb.txt +45 -45
- data/spec/handlers/examples/attribute_handler_001.rb.txt +31 -31
- data/spec/handlers/examples/class_condition_handler_001.rb.txt +68 -68
- data/spec/handlers/examples/class_handler_001.rb.txt +120 -120
- data/spec/handlers/examples/class_variable_handler_001.rb.txt +9 -9
- data/spec/handlers/examples/constant_handler_001.rb.txt +35 -35
- data/spec/handlers/examples/dsl_handler_001.rb.txt +154 -154
- data/spec/handlers/examples/exception_handler_001.rb.txt +58 -58
- data/spec/handlers/examples/extend_handler_001.rb.txt +15 -15
- data/spec/handlers/examples/method_condition_handler_001.rb.txt +9 -9
- data/spec/handlers/examples/method_handler_001.rb.txt +128 -128
- data/spec/handlers/examples/mixin_handler_001.rb.txt +37 -37
- data/spec/handlers/examples/module_handler_001.rb.txt +29 -29
- data/spec/handlers/examples/private_constant_handler_001.rb.txt +8 -8
- data/spec/handlers/examples/process_handler_001.rb.txt +11 -11
- data/spec/handlers/examples/visibility_handler_001.rb.txt +35 -35
- data/spec/handlers/examples/yield_handler_001.rb.txt +54 -54
- data/spec/handlers/exception_handler_spec.rb +49 -49
- data/spec/handlers/extend_handler_spec.rb +24 -24
- data/spec/handlers/legacy_base_spec.rb +128 -128
- data/spec/handlers/method_condition_handler_spec.rb +15 -15
- data/spec/handlers/method_handler_spec.rb +190 -190
- data/spec/handlers/mixin_handler_spec.rb +56 -56
- data/spec/handlers/module_function_handler_spec.rb +106 -106
- data/spec/handlers/module_handler_spec.rb +35 -35
- data/spec/handlers/private_class_method_handler_spec.rb +11 -11
- data/spec/handlers/private_constant_handler_spec.rb +25 -25
- data/spec/handlers/processor_spec.rb +35 -35
- data/spec/handlers/public_class_method_handler_spec.rb +11 -11
- data/spec/handlers/ruby/base_spec.rb +95 -95
- data/spec/handlers/ruby/legacy/base_spec.rb +84 -84
- data/spec/handlers/spec_helper.rb +33 -33
- data/spec/handlers/visibility_handler_spec.rb +44 -44
- data/spec/handlers/yield_handler_spec.rb +52 -52
- data/spec/i18n/locale_spec.rb +81 -81
- data/spec/i18n/message_spec.rb +52 -52
- data/spec/i18n/messages_spec.rb +67 -67
- data/spec/i18n/pot_generator_spec.rb +295 -295
- data/spec/i18n/text_spec.rb +184 -184
- data/spec/logging_spec.rb +44 -44
- data/spec/options_spec.rb +171 -171
- data/spec/parser/base_spec.rb +24 -24
- data/spec/parser/c_parser_spec.rb +236 -236
- data/spec/parser/examples/array.c.txt +6267 -6267
- data/spec/parser/examples/example1.rb.txt +7 -7
- data/spec/parser/examples/extrafile.c.txt +8 -8
- data/spec/parser/examples/file.c.txt +28 -28
- data/spec/parser/examples/multifile.c.txt +22 -22
- data/spec/parser/examples/namespace.cpp.txt +68 -68
- data/spec/parser/examples/override.c.txt +424 -424
- data/spec/parser/examples/parse_in_order_001.rb.txt +2 -2
- data/spec/parser/examples/parse_in_order_002.rb.txt +1 -1
- data/spec/parser/examples/tag_handler_001.rb.txt +7 -7
- data/spec/parser/ruby/ast_node_spec.rb +33 -33
- data/spec/parser/ruby/legacy/statement_list_spec.rb +299 -299
- data/spec/parser/ruby/legacy/token_list_spec.rb +79 -79
- data/spec/parser/ruby/ruby_parser_spec.rb +508 -508
- data/spec/parser/ruby/token_resolver_spec.rb +165 -165
- data/spec/parser/source_parser_spec.rb +727 -727
- data/spec/parser/tag_parsing_spec.rb +17 -17
- data/spec/rake/yardoc_task_spec.rb +118 -118
- data/spec/registry_spec.rb +463 -463
- data/spec/registry_store_spec.rb +316 -316
- data/spec/rubygems/doc_manager_spec.rb +112 -112
- data/spec/serializers/data/serialized_yardoc/checksums +1 -1
- data/spec/serializers/file_system_serializer_spec.rb +145 -145
- data/spec/serializers/spec_helper.rb +2 -2
- data/spec/serializers/yardoc_serializer_spec.rb +78 -78
- data/spec/server/adapter_spec.rb +39 -39
- data/spec/server/commands/base_spec.rb +91 -91
- data/spec/server/commands/library_command_spec.rb +39 -39
- data/spec/server/doc_server_helper_spec.rb +72 -72
- data/spec/server/doc_server_serializer_spec.rb +60 -60
- data/spec/server/rack_adapter_spec.rb +21 -21
- data/spec/server/router_spec.rb +123 -123
- data/spec/server/spec_helper.rb +22 -22
- data/spec/server/static_caching_spec.rb +47 -47
- data/spec/server/webrick_servlet_spec.rb +20 -20
- data/spec/server_spec.rb +19 -19
- data/spec/spec_helper.rb +212 -212
- data/spec/tags/default_factory_spec.rb +168 -168
- data/spec/tags/default_tag_spec.rb +11 -11
- data/spec/tags/directives_spec.rb +463 -463
- data/spec/tags/library_spec.rb +48 -48
- data/spec/tags/overload_tag_spec.rb +53 -53
- data/spec/tags/ref_tag_list_spec.rb +53 -53
- data/spec/tags/types_explainer_spec.rb +203 -203
- data/spec/templates/class_spec.rb +45 -45
- data/spec/templates/constant_spec.rb +41 -41
- data/spec/templates/engine_spec.rb +131 -131
- data/spec/templates/examples/class001.html +308 -308
- data/spec/templates/examples/class001.txt +36 -36
- data/spec/templates/examples/class002.html +39 -39
- data/spec/templates/examples/constant001.txt +24 -24
- data/spec/templates/examples/constant002.txt +6 -6
- data/spec/templates/examples/constant003.txt +10 -10
- data/spec/templates/examples/method001.html +137 -137
- data/spec/templates/examples/method001.txt +35 -35
- data/spec/templates/examples/method002.html +91 -91
- data/spec/templates/examples/method002.txt +20 -20
- data/spec/templates/examples/method003.html +165 -165
- data/spec/templates/examples/method003.txt +45 -45
- data/spec/templates/examples/method004.html +48 -48
- data/spec/templates/examples/method004.txt +10 -10
- data/spec/templates/examples/method005.html +105 -105
- data/spec/templates/examples/method005.txt +33 -33
- data/spec/templates/examples/method006.html +107 -107
- data/spec/templates/examples/method006.txt +20 -20
- data/spec/templates/examples/module001.dot +33 -33
- data/spec/templates/examples/module001.html +833 -833
- data/spec/templates/examples/module001.txt +33 -33
- data/spec/templates/examples/module002.html +341 -341
- data/spec/templates/examples/module003.html +202 -202
- data/spec/templates/examples/module004.html +394 -394
- data/spec/templates/examples/module005.html +81 -81
- data/spec/templates/examples/tag001.txt +82 -82
- data/spec/templates/helpers/base_helper_spec.rb +171 -171
- data/spec/templates/helpers/html_helper_spec.rb +687 -668
- data/spec/templates/helpers/html_syntax_highlight_helper_spec.rb +65 -65
- data/spec/templates/helpers/markup/rdoc_markup_spec.rb +84 -84
- data/spec/templates/helpers/markup_helper_spec.rb +136 -136
- data/spec/templates/helpers/method_helper_spec.rb +107 -107
- data/spec/templates/helpers/module_helper_spec.rb +35 -35
- data/spec/templates/helpers/shared_signature_examples.rb +126 -126
- data/spec/templates/helpers/text_helper_spec.rb +65 -65
- data/spec/templates/method_spec.rb +118 -118
- data/spec/templates/module_spec.rb +203 -203
- data/spec/templates/onefile_spec.rb +66 -66
- data/spec/templates/section_spec.rb +144 -144
- data/spec/templates/spec_helper.rb +76 -76
- data/spec/templates/tag_spec.rb +52 -52
- data/spec/templates/template_spec.rb +410 -410
- data/spec/verifier_spec.rb +106 -106
- data/templates/default/class/dot/setup.rb +7 -7
- data/templates/default/class/dot/superklass.erb +2 -2
- data/templates/default/class/html/constructor_details.erb +8 -8
- data/templates/default/class/html/setup.rb +2 -2
- data/templates/default/class/html/subclasses.erb +4 -4
- data/templates/default/class/setup.rb +36 -36
- data/templates/default/class/text/setup.rb +12 -12
- data/templates/default/class/text/subclasses.erb +5 -5
- data/templates/default/constant/text/header.erb +11 -11
- data/templates/default/constant/text/setup.rb +4 -4
- data/templates/default/docstring/html/abstract.erb +4 -4
- data/templates/default/docstring/html/deprecated.erb +1 -1
- data/templates/default/docstring/html/index.erb +5 -5
- data/templates/default/docstring/html/note.erb +6 -6
- data/templates/default/docstring/html/private.erb +4 -4
- data/templates/default/docstring/html/text.erb +1 -1
- data/templates/default/docstring/html/todo.erb +6 -6
- data/templates/default/docstring/setup.rb +52 -52
- data/templates/default/docstring/text/abstract.erb +2 -2
- data/templates/default/docstring/text/deprecated.erb +2 -2
- data/templates/default/docstring/text/index.erb +2 -2
- data/templates/default/docstring/text/note.erb +3 -3
- data/templates/default/docstring/text/private.erb +2 -2
- data/templates/default/docstring/text/text.erb +1 -1
- data/templates/default/docstring/text/todo.erb +3 -3
- data/templates/default/fulldoc/html/css/full_list.css +58 -58
- data/templates/default/fulldoc/html/css/style.css +496 -496
- data/templates/default/fulldoc/html/frames.erb +17 -17
- data/templates/default/fulldoc/html/full_list.erb +37 -37
- data/templates/default/fulldoc/html/full_list_class.erb +2 -2
- data/templates/default/fulldoc/html/full_list_file.erb +7 -7
- data/templates/default/fulldoc/html/full_list_method.erb +10 -10
- data/templates/default/fulldoc/html/js/app.js +303 -292
- data/templates/default/fulldoc/html/js/full_list.js +216 -216
- data/templates/default/fulldoc/html/js/jquery.js +3 -3
- data/templates/default/fulldoc/html/setup.rb +241 -241
- data/templates/default/layout/dot/header.erb +5 -5
- data/templates/default/layout/dot/setup.rb +15 -15
- data/templates/default/layout/html/breadcrumb.erb +11 -11
- data/templates/default/layout/html/files.erb +11 -11
- data/templates/default/layout/html/footer.erb +5 -5
- data/templates/default/layout/html/headers.erb +15 -15
- data/templates/default/layout/html/index.erb +2 -2
- data/templates/default/layout/html/layout.erb +23 -23
- data/templates/default/layout/html/listing.erb +4 -4
- data/templates/default/layout/html/objects.erb +32 -32
- data/templates/default/layout/html/script_setup.erb +4 -4
- data/templates/default/layout/html/search.erb +12 -12
- data/templates/default/layout/html/setup.rb +89 -89
- data/templates/default/method/html/header.erb +16 -16
- data/templates/default/method/setup.rb +4 -4
- data/templates/default/method_details/html/header.erb +2 -2
- data/templates/default/method_details/html/method_signature.erb +24 -24
- data/templates/default/method_details/html/source.erb +9 -9
- data/templates/default/method_details/setup.rb +11 -11
- data/templates/default/method_details/text/header.erb +10 -10
- data/templates/default/method_details/text/method_signature.erb +12 -12
- data/templates/default/method_details/text/setup.rb +11 -11
- data/templates/default/module/dot/child.erb +1 -1
- data/templates/default/module/dot/dependencies.erb +2 -2
- data/templates/default/module/dot/header.erb +6 -6
- data/templates/default/module/dot/info.erb +13 -13
- data/templates/default/module/dot/setup.rb +15 -15
- data/templates/default/module/html/attribute_details.erb +10 -10
- data/templates/default/module/html/attribute_summary.erb +8 -8
- data/templates/default/module/html/box_info.erb +43 -43
- data/templates/default/module/html/children.erb +8 -8
- data/templates/default/module/html/constant_summary.erb +17 -17
- data/templates/default/module/html/defines.erb +2 -2
- data/templates/default/module/html/header.erb +5 -5
- data/templates/default/module/html/inherited_attributes.erb +14 -14
- data/templates/default/module/html/inherited_constants.erb +8 -8
- data/templates/default/module/html/inherited_methods.erb +18 -18
- data/templates/default/module/html/item_summary.erb +40 -40
- data/templates/default/module/html/method_details_list.erb +9 -9
- data/templates/default/module/html/method_summary.erb +13 -13
- data/templates/default/module/html/methodmissing.erb +12 -12
- data/templates/default/module/setup.rb +167 -167
- data/templates/default/module/text/children.erb +9 -9
- data/templates/default/module/text/class_meths_list.erb +7 -7
- data/templates/default/module/text/extends.erb +7 -7
- data/templates/default/module/text/header.erb +7 -7
- data/templates/default/module/text/includes.erb +7 -7
- data/templates/default/module/text/instance_meths_list.erb +7 -7
- data/templates/default/module/text/setup.rb +13 -13
- data/templates/default/onefile/html/files.erb +4 -4
- data/templates/default/onefile/html/headers.erb +6 -6
- data/templates/default/onefile/html/layout.erb +17 -17
- data/templates/default/onefile/html/readme.erb +2 -2
- data/templates/default/onefile/html/setup.rb +62 -62
- data/templates/default/root/dot/child.erb +2 -2
- data/templates/default/root/dot/setup.rb +6 -6
- data/templates/default/root/html/setup.rb +2 -2
- data/templates/default/tags/html/example.erb +10 -10
- data/templates/default/tags/html/index.erb +2 -2
- data/templates/default/tags/html/option.erb +24 -24
- data/templates/default/tags/html/overload.erb +13 -13
- data/templates/default/tags/html/see.erb +7 -7
- data/templates/default/tags/html/tag.erb +20 -20
- data/templates/default/tags/setup.rb +57 -57
- data/templates/default/tags/text/example.erb +12 -12
- data/templates/default/tags/text/index.erb +1 -1
- data/templates/default/tags/text/option.erb +20 -20
- data/templates/default/tags/text/overload.erb +19 -19
- data/templates/default/tags/text/see.erb +11 -11
- data/templates/default/tags/text/tag.erb +13 -13
- data/templates/guide/class/html/setup.rb +2 -2
- data/templates/guide/docstring/html/setup.rb +2 -2
- data/templates/guide/fulldoc/html/css/style.css +108 -108
- data/templates/guide/fulldoc/html/js/app.js +33 -33
- data/templates/guide/fulldoc/html/setup.rb +74 -74
- data/templates/guide/layout/html/layout.erb +81 -81
- data/templates/guide/layout/html/setup.rb +25 -25
- data/templates/guide/method/html/header.erb +17 -17
- data/templates/guide/method/html/setup.rb +22 -22
- data/templates/guide/module/html/header.erb +6 -6
- data/templates/guide/module/html/method_list.erb +4 -4
- data/templates/guide/module/html/setup.rb +27 -27
- data/templates/guide/onefile/html/files.erb +4 -4
- data/templates/guide/onefile/html/setup.rb +6 -6
- data/templates/guide/onefile/html/toc.erb +3 -3
- data/templates/guide/tags/html/setup.rb +9 -9
- data/yard.gemspec +43 -43
- metadata +4 -3
@@ -1,110 +1,110 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
require 'optparse'
|
3
|
-
|
4
|
-
module YARD
|
5
|
-
module CLI
|
6
|
-
# Abstract base class for command that reads .yardopts file
|
7
|
-
#
|
8
|
-
# @abstract
|
9
|
-
# @since 0.8.3
|
10
|
-
class YardoptsCommand < Command
|
11
|
-
# The configuration filename to load extra options from
|
12
|
-
DEFAULT_YARDOPTS_FILE = ".yardopts"
|
13
|
-
|
14
|
-
# @return [Boolean] whether to parse options from .yardopts
|
15
|
-
attr_accessor :use_yardopts_file
|
16
|
-
|
17
|
-
# @return [Boolean] whether to parse options from .document
|
18
|
-
attr_accessor :use_document_file
|
19
|
-
|
20
|
-
# The options file name (defaults to {DEFAULT_YARDOPTS_FILE})
|
21
|
-
# @return [String] the filename to load extra options from
|
22
|
-
attr_accessor :options_file
|
23
|
-
|
24
|
-
# Creates a new command that reads .yardopts
|
25
|
-
def initialize
|
26
|
-
super
|
27
|
-
@options_file = DEFAULT_YARDOPTS_FILE
|
28
|
-
@use_yardopts_file = true
|
29
|
-
@use_document_file = true
|
30
|
-
end
|
31
|
-
|
32
|
-
# Parses commandline arguments
|
33
|
-
# @param [Array<String>] args the list of arguments
|
34
|
-
# @return [Boolean] whether or not arguments are valid
|
35
|
-
# @since 0.5.6
|
36
|
-
def parse_arguments(*args)
|
37
|
-
parse_yardopts_options(*args)
|
38
|
-
|
39
|
-
# Parse files and then command line arguments
|
40
|
-
parse_rdoc_document_file
|
41
|
-
parse_yardopts
|
42
|
-
optparse(*args)
|
43
|
-
end
|
44
|
-
|
45
|
-
protected
|
46
|
-
|
47
|
-
# Adds --[no-]yardopts / --[no-]document
|
48
|
-
def yardopts_options(opts)
|
49
|
-
opts.on('--[no-]yardopts [FILE]',
|
50
|
-
"If arguments should be read from FILE",
|
51
|
-
" (defaults to yes, FILE defaults to .yardopts)") do |use_yardopts|
|
52
|
-
if use_yardopts.is_a?(String)
|
53
|
-
self.options_file = use_yardopts
|
54
|
-
self.use_yardopts_file = true
|
55
|
-
else
|
56
|
-
self.use_yardopts_file = (use_yardopts != false)
|
57
|
-
end
|
58
|
-
end
|
59
|
-
|
60
|
-
opts.on('--[no-]document', "If arguments should be read from .document file. ",
|
61
|
-
" (defaults to yes)") do |use_document|
|
62
|
-
self.use_document_file = use_document
|
63
|
-
end
|
64
|
-
end
|
65
|
-
|
66
|
-
private
|
67
|
-
|
68
|
-
# Parses the .yardopts file for default yard options
|
69
|
-
# @return [Array<String>] an array of options parsed from .yardopts
|
70
|
-
def yardopts(file = options_file)
|
71
|
-
return [] unless use_yardopts_file
|
72
|
-
File.read_binary(file).shell_split
|
73
|
-
rescue Errno::ENOENT
|
74
|
-
[]
|
75
|
-
end
|
76
|
-
|
77
|
-
# Parses out the yardopts/document options
|
78
|
-
def parse_yardopts_options(*args)
|
79
|
-
opts = OptionParser.new
|
80
|
-
opts.base.long.clear # HACK: why are --help and --version defined?
|
81
|
-
yardopts_options(opts)
|
82
|
-
begin
|
83
|
-
opts.parse(args)
|
84
|
-
rescue OptionParser::ParseError => err
|
85
|
-
idx = args.index(err.args.first)
|
86
|
-
args = args[(idx + 1)..-1]
|
87
|
-
args.shift while args.first && args.first[0, 1] != '-'
|
88
|
-
retry
|
89
|
-
end
|
90
|
-
end
|
91
|
-
|
92
|
-
def parse_rdoc_document_file(file = '.document')
|
93
|
-
optparse(*support_rdoc_document_file!(file)) if use_document_file
|
94
|
-
end
|
95
|
-
|
96
|
-
def parse_yardopts(file = options_file)
|
97
|
-
optparse(*yardopts(file)) if use_yardopts_file
|
98
|
-
end
|
99
|
-
|
100
|
-
# Reads a .document file in the directory to get source file globs
|
101
|
-
# @return [Array<String>] an array of files parsed from .document
|
102
|
-
def support_rdoc_document_file!(file = '.document')
|
103
|
-
return [] unless use_document_file
|
104
|
-
File.read(file).gsub(/^[ \t]*#.+/m, '').split(/\s+/)
|
105
|
-
rescue Errno::ENOENT
|
106
|
-
[]
|
107
|
-
end
|
108
|
-
end
|
109
|
-
end
|
110
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
require 'optparse'
|
3
|
+
|
4
|
+
module YARD
|
5
|
+
module CLI
|
6
|
+
# Abstract base class for command that reads .yardopts file
|
7
|
+
#
|
8
|
+
# @abstract
|
9
|
+
# @since 0.8.3
|
10
|
+
class YardoptsCommand < Command
|
11
|
+
# The configuration filename to load extra options from
|
12
|
+
DEFAULT_YARDOPTS_FILE = ".yardopts"
|
13
|
+
|
14
|
+
# @return [Boolean] whether to parse options from .yardopts
|
15
|
+
attr_accessor :use_yardopts_file
|
16
|
+
|
17
|
+
# @return [Boolean] whether to parse options from .document
|
18
|
+
attr_accessor :use_document_file
|
19
|
+
|
20
|
+
# The options file name (defaults to {DEFAULT_YARDOPTS_FILE})
|
21
|
+
# @return [String] the filename to load extra options from
|
22
|
+
attr_accessor :options_file
|
23
|
+
|
24
|
+
# Creates a new command that reads .yardopts
|
25
|
+
def initialize
|
26
|
+
super
|
27
|
+
@options_file = DEFAULT_YARDOPTS_FILE
|
28
|
+
@use_yardopts_file = true
|
29
|
+
@use_document_file = true
|
30
|
+
end
|
31
|
+
|
32
|
+
# Parses commandline arguments
|
33
|
+
# @param [Array<String>] args the list of arguments
|
34
|
+
# @return [Boolean] whether or not arguments are valid
|
35
|
+
# @since 0.5.6
|
36
|
+
def parse_arguments(*args)
|
37
|
+
parse_yardopts_options(*args)
|
38
|
+
|
39
|
+
# Parse files and then command line arguments
|
40
|
+
parse_rdoc_document_file
|
41
|
+
parse_yardopts
|
42
|
+
optparse(*args)
|
43
|
+
end
|
44
|
+
|
45
|
+
protected
|
46
|
+
|
47
|
+
# Adds --[no-]yardopts / --[no-]document
|
48
|
+
def yardopts_options(opts)
|
49
|
+
opts.on('--[no-]yardopts [FILE]',
|
50
|
+
"If arguments should be read from FILE",
|
51
|
+
" (defaults to yes, FILE defaults to .yardopts)") do |use_yardopts|
|
52
|
+
if use_yardopts.is_a?(String)
|
53
|
+
self.options_file = use_yardopts
|
54
|
+
self.use_yardopts_file = true
|
55
|
+
else
|
56
|
+
self.use_yardopts_file = (use_yardopts != false)
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
opts.on('--[no-]document', "If arguments should be read from .document file. ",
|
61
|
+
" (defaults to yes)") do |use_document|
|
62
|
+
self.use_document_file = use_document
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
private
|
67
|
+
|
68
|
+
# Parses the .yardopts file for default yard options
|
69
|
+
# @return [Array<String>] an array of options parsed from .yardopts
|
70
|
+
def yardopts(file = options_file)
|
71
|
+
return [] unless use_yardopts_file
|
72
|
+
File.read_binary(file).shell_split
|
73
|
+
rescue Errno::ENOENT
|
74
|
+
[]
|
75
|
+
end
|
76
|
+
|
77
|
+
# Parses out the yardopts/document options
|
78
|
+
def parse_yardopts_options(*args)
|
79
|
+
opts = OptionParser.new
|
80
|
+
opts.base.long.clear # HACK: why are --help and --version defined?
|
81
|
+
yardopts_options(opts)
|
82
|
+
begin
|
83
|
+
opts.parse(args)
|
84
|
+
rescue OptionParser::ParseError => err
|
85
|
+
idx = args.index(err.args.first)
|
86
|
+
args = args[(idx + 1)..-1]
|
87
|
+
args.shift while args.first && args.first[0, 1] != '-'
|
88
|
+
retry
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
def parse_rdoc_document_file(file = '.document')
|
93
|
+
optparse(*support_rdoc_document_file!(file)) if use_document_file
|
94
|
+
end
|
95
|
+
|
96
|
+
def parse_yardopts(file = options_file)
|
97
|
+
optparse(*yardopts(file)) if use_yardopts_file
|
98
|
+
end
|
99
|
+
|
100
|
+
# Reads a .document file in the directory to get source file globs
|
101
|
+
# @return [Array<String>] an array of files parsed from .document
|
102
|
+
def support_rdoc_document_file!(file = '.document')
|
103
|
+
return [] unless use_document_file
|
104
|
+
File.read(file).gsub(/^[ \t]*#.+/m, '').split(/\s+/)
|
105
|
+
rescue Errno::ENOENT
|
106
|
+
[]
|
107
|
+
end
|
108
|
+
end
|
109
|
+
end
|
110
|
+
end
|
data/lib/yard/cli/yri.rb
CHANGED
@@ -1,215 +1,215 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
require 'rbconfig'
|
3
|
-
|
4
|
-
module YARD
|
5
|
-
module CLI
|
6
|
-
# A tool to view documentation in the console like `ri`
|
7
|
-
class YRI < Command
|
8
|
-
# The location in {YARD::CONFIG_DIR} where the YRI cache file is loaded
|
9
|
-
# from.
|
10
|
-
CACHE_FILE = File.expand_path(File.join(YARD::Config::CONFIG_DIR, 'yri_cache'))
|
11
|
-
|
12
|
-
# A file containing all paths, delimited by newlines, to search for
|
13
|
-
# yardoc databases.
|
14
|
-
# @since 0.5.1
|
15
|
-
SEARCH_PATHS_FILE = File.expand_path(File.join(YARD::Config::CONFIG_DIR, 'yri_search_paths'))
|
16
|
-
|
17
|
-
# Default search paths that should be loaded dynamically into YRI. These paths
|
18
|
-
# take precedence over all other paths ({SEARCH_PATHS_FILE} and RubyGems
|
19
|
-
# paths). To add a path, call:
|
20
|
-
#
|
21
|
-
# DEFAULT_SEARCH_PATHS.push("/path/to/.yardoc")
|
22
|
-
#
|
23
|
-
# @return [Array<String>] a list of extra search paths
|
24
|
-
# @since 0.6.0
|
25
|
-
DEFAULT_SEARCH_PATHS = []
|
26
|
-
|
27
|
-
# Helper method to run the utility on an instance.
|
28
|
-
# @see #run
|
29
|
-
def self.run(*args) new.run(*args) end
|
30
|
-
|
31
|
-
def initialize
|
32
|
-
super
|
33
|
-
@cache = {}
|
34
|
-
@search_paths = []
|
35
|
-
add_default_paths
|
36
|
-
add_gem_paths
|
37
|
-
load_cache
|
38
|
-
@search_paths.uniq!
|
39
|
-
end
|
40
|
-
|
41
|
-
def description
|
42
|
-
"A tool to view documentation in the console like `ri`"
|
43
|
-
end
|
44
|
-
|
45
|
-
# Runs the command-line utility.
|
46
|
-
#
|
47
|
-
# @example
|
48
|
-
# YRI.new.run('String#reverse')
|
49
|
-
# @param [Array<String>] args each tokenized argument
|
50
|
-
def run(*args)
|
51
|
-
optparse(*args)
|
52
|
-
|
53
|
-
if ::RbConfig::CONFIG['host_os'] =~ /mingw|win32/
|
54
|
-
@serializer ||= YARD::Serializers::StdoutSerializer.new
|
55
|
-
else
|
56
|
-
@serializer ||= YARD::Serializers::ProcessSerializer.new('less')
|
57
|
-
end
|
58
|
-
|
59
|
-
if @name.nil? || @name.strip.empty?
|
60
|
-
print_usage
|
61
|
-
return exit(1)
|
62
|
-
end
|
63
|
-
|
64
|
-
object = find_object(@name)
|
65
|
-
if object
|
66
|
-
print_object(object)
|
67
|
-
else
|
68
|
-
STDERR.puts "No documentation for `#{@name}'"
|
69
|
-
return exit(1)
|
70
|
-
end
|
71
|
-
end
|
72
|
-
|
73
|
-
protected
|
74
|
-
|
75
|
-
# Prints the command usage
|
76
|
-
# @return [void]
|
77
|
-
# @since 0.5.6
|
78
|
-
def print_usage
|
79
|
-
log.puts "Usage: yri [options] <Path to object>"
|
80
|
-
log.puts "See yri --help for more options."
|
81
|
-
end
|
82
|
-
|
83
|
-
# Caches the .yardoc file where an object can be found in the {CACHE_FILE}
|
84
|
-
# @return [void]
|
85
|
-
def cache_object(name, path)
|
86
|
-
return if path == Registry.yardoc_file
|
87
|
-
@cache[name] = path
|
88
|
-
|
89
|
-
File.open!(CACHE_FILE, 'w') do |file|
|
90
|
-
@cache.each do |key, value|
|
91
|
-
file.puts("#{key} #{value}")
|
92
|
-
end
|
93
|
-
end
|
94
|
-
end
|
95
|
-
|
96
|
-
# @param [CodeObjects::Base] object the object to print.
|
97
|
-
# @return [String] the formatted output for an object.
|
98
|
-
def print_object(object)
|
99
|
-
if object.type == :method && object.is_alias?
|
100
|
-
tmp = P(object.namespace, (object.scope == :instance ? "#" : "") +
|
101
|
-
object.namespace.aliases[object].to_s)
|
102
|
-
object = tmp unless YARD::CodeObjects::Proxy === tmp
|
103
|
-
end
|
104
|
-
object.format(:serializer => @serializer)
|
105
|
-
end
|
106
|
-
|
107
|
-
# Locates an object by name starting in the cached paths and then
|
108
|
-
# searching through any search paths.
|
109
|
-
#
|
110
|
-
# @param [String] name the full name of the object
|
111
|
-
# @return [CodeObjects::Base] an object if found
|
112
|
-
# @return [nil] if no object is found
|
113
|
-
def find_object(name)
|
114
|
-
@search_paths.unshift(@cache[name]) if @cache[name]
|
115
|
-
@search_paths.unshift(Registry.yardoc_file)
|
116
|
-
|
117
|
-
# Try to load it from in memory cache
|
118
|
-
log.debug "Searching for #{name} in memory"
|
119
|
-
obj = try_load_object(name, nil)
|
120
|
-
return obj if obj
|
121
|
-
|
122
|
-
log.debug "Searching for #{name} in search paths"
|
123
|
-
@search_paths.each do |path|
|
124
|
-
next unless File.exist?(path)
|
125
|
-
log.debug "Searching for #{name} in #{path}..."
|
126
|
-
Registry.load(path)
|
127
|
-
obj = try_load_object(name, path)
|
128
|
-
return obj if obj
|
129
|
-
end
|
130
|
-
nil
|
131
|
-
end
|
132
|
-
|
133
|
-
private
|
134
|
-
|
135
|
-
# Tries to load the object with name. If successful, caches the object
|
136
|
-
# with the cache_path
|
137
|
-
#
|
138
|
-
# @param [String] name the object path
|
139
|
-
# @param [String] cache_path the location of the yardoc
|
140
|
-
# db containing the object to cache for future lookups.
|
141
|
-
# No caching is done if this is nil.
|
142
|
-
# @return [void]
|
143
|
-
def try_load_object(name, cache_path)
|
144
|
-
obj = Registry.at(name)
|
145
|
-
cache_object(name, cache_path) if obj && cache_path
|
146
|
-
obj
|
147
|
-
end
|
148
|
-
|
149
|
-
# Loads {CACHE_FILE}
|
150
|
-
# @return [void]
|
151
|
-
def load_cache
|
152
|
-
return unless File.file?(CACHE_FILE)
|
153
|
-
File.readlines(CACHE_FILE).each do |line|
|
154
|
-
line = line.strip.split(/\s+/)
|
155
|
-
@cache[line[0]] = line[1]
|
156
|
-
end
|
157
|
-
end
|
158
|
-
|
159
|
-
# Adds all RubyGems yardoc files to search paths
|
160
|
-
# @return [void]
|
161
|
-
def add_gem_paths
|
162
|
-
require 'rubygems'
|
163
|
-
gem_paths = []
|
164
|
-
YARD::GemIndex.each do |spec|
|
165
|
-
yfile = Registry.yardoc_file_for_gem(spec.name)
|
166
|
-
next if yfile.nil?
|
167
|
-
|
168
|
-
if spec.name =~ /^yard-doc-/
|
169
|
-
gem_paths.unshift(yfile)
|
170
|
-
else
|
171
|
-
gem_paths.push(yfile)
|
172
|
-
end
|
173
|
-
end
|
174
|
-
@search_paths += gem_paths
|
175
|
-
rescue LoadError
|
176
|
-
nil # noop
|
177
|
-
end
|
178
|
-
|
179
|
-
# Adds paths in {SEARCH_PATHS_FILE}
|
180
|
-
# @since 0.5.1
|
181
|
-
def add_default_paths
|
182
|
-
@search_paths.concat(DEFAULT_SEARCH_PATHS)
|
183
|
-
return unless File.file?(SEARCH_PATHS_FILE)
|
184
|
-
paths = File.readlines(SEARCH_PATHS_FILE).map(&:strip)
|
185
|
-
@search_paths.concat(paths)
|
186
|
-
end
|
187
|
-
|
188
|
-
# Parses commandline options.
|
189
|
-
# @param [Array<String>] args each tokenized argument
|
190
|
-
def optparse(*args)
|
191
|
-
opts = OptionParser.new
|
192
|
-
opts.banner = "Usage: yri [options] <Path to object>"
|
193
|
-
opts.separator "Example: yri String#gsub"
|
194
|
-
opts.separator ""
|
195
|
-
opts.separator "General Options:"
|
196
|
-
|
197
|
-
opts.on('-b', '--db FILE', 'Use a specified .yardoc db to search in') do |yfile|
|
198
|
-
@search_paths.unshift(yfile)
|
199
|
-
end
|
200
|
-
|
201
|
-
opts.on('-T', '--no-pager', 'No pager') do
|
202
|
-
@serializer = YARD::Serializers::StdoutSerializer.new
|
203
|
-
end
|
204
|
-
|
205
|
-
opts.on('-p PAGER', '--pager') do |pager|
|
206
|
-
@serializer = YARD::Serializers::ProcessSerializer.new(pager)
|
207
|
-
end
|
208
|
-
|
209
|
-
common_options(opts)
|
210
|
-
parse_options(opts, args)
|
211
|
-
@name = args.first
|
212
|
-
end
|
213
|
-
end
|
214
|
-
end
|
215
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
require 'rbconfig'
|
3
|
+
|
4
|
+
module YARD
|
5
|
+
module CLI
|
6
|
+
# A tool to view documentation in the console like `ri`
|
7
|
+
class YRI < Command
|
8
|
+
# The location in {YARD::CONFIG_DIR} where the YRI cache file is loaded
|
9
|
+
# from.
|
10
|
+
CACHE_FILE = File.expand_path(File.join(YARD::Config::CONFIG_DIR, 'yri_cache'))
|
11
|
+
|
12
|
+
# A file containing all paths, delimited by newlines, to search for
|
13
|
+
# yardoc databases.
|
14
|
+
# @since 0.5.1
|
15
|
+
SEARCH_PATHS_FILE = File.expand_path(File.join(YARD::Config::CONFIG_DIR, 'yri_search_paths'))
|
16
|
+
|
17
|
+
# Default search paths that should be loaded dynamically into YRI. These paths
|
18
|
+
# take precedence over all other paths ({SEARCH_PATHS_FILE} and RubyGems
|
19
|
+
# paths). To add a path, call:
|
20
|
+
#
|
21
|
+
# DEFAULT_SEARCH_PATHS.push("/path/to/.yardoc")
|
22
|
+
#
|
23
|
+
# @return [Array<String>] a list of extra search paths
|
24
|
+
# @since 0.6.0
|
25
|
+
DEFAULT_SEARCH_PATHS = []
|
26
|
+
|
27
|
+
# Helper method to run the utility on an instance.
|
28
|
+
# @see #run
|
29
|
+
def self.run(*args) new.run(*args) end
|
30
|
+
|
31
|
+
def initialize
|
32
|
+
super
|
33
|
+
@cache = {}
|
34
|
+
@search_paths = []
|
35
|
+
add_default_paths
|
36
|
+
add_gem_paths
|
37
|
+
load_cache
|
38
|
+
@search_paths.uniq!
|
39
|
+
end
|
40
|
+
|
41
|
+
def description
|
42
|
+
"A tool to view documentation in the console like `ri`"
|
43
|
+
end
|
44
|
+
|
45
|
+
# Runs the command-line utility.
|
46
|
+
#
|
47
|
+
# @example
|
48
|
+
# YRI.new.run('String#reverse')
|
49
|
+
# @param [Array<String>] args each tokenized argument
|
50
|
+
def run(*args)
|
51
|
+
optparse(*args)
|
52
|
+
|
53
|
+
if ::RbConfig::CONFIG['host_os'] =~ /mingw|win32/
|
54
|
+
@serializer ||= YARD::Serializers::StdoutSerializer.new
|
55
|
+
else
|
56
|
+
@serializer ||= YARD::Serializers::ProcessSerializer.new('less')
|
57
|
+
end
|
58
|
+
|
59
|
+
if @name.nil? || @name.strip.empty?
|
60
|
+
print_usage
|
61
|
+
return exit(1)
|
62
|
+
end
|
63
|
+
|
64
|
+
object = find_object(@name)
|
65
|
+
if object
|
66
|
+
print_object(object)
|
67
|
+
else
|
68
|
+
STDERR.puts "No documentation for `#{@name}'"
|
69
|
+
return exit(1)
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
protected
|
74
|
+
|
75
|
+
# Prints the command usage
|
76
|
+
# @return [void]
|
77
|
+
# @since 0.5.6
|
78
|
+
def print_usage
|
79
|
+
log.puts "Usage: yri [options] <Path to object>"
|
80
|
+
log.puts "See yri --help for more options."
|
81
|
+
end
|
82
|
+
|
83
|
+
# Caches the .yardoc file where an object can be found in the {CACHE_FILE}
|
84
|
+
# @return [void]
|
85
|
+
def cache_object(name, path)
|
86
|
+
return if path == Registry.yardoc_file
|
87
|
+
@cache[name] = path
|
88
|
+
|
89
|
+
File.open!(CACHE_FILE, 'w') do |file|
|
90
|
+
@cache.each do |key, value|
|
91
|
+
file.puts("#{key} #{value}")
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
# @param [CodeObjects::Base] object the object to print.
|
97
|
+
# @return [String] the formatted output for an object.
|
98
|
+
def print_object(object)
|
99
|
+
if object.type == :method && object.is_alias?
|
100
|
+
tmp = P(object.namespace, (object.scope == :instance ? "#" : "") +
|
101
|
+
object.namespace.aliases[object].to_s)
|
102
|
+
object = tmp unless YARD::CodeObjects::Proxy === tmp
|
103
|
+
end
|
104
|
+
object.format(:serializer => @serializer)
|
105
|
+
end
|
106
|
+
|
107
|
+
# Locates an object by name starting in the cached paths and then
|
108
|
+
# searching through any search paths.
|
109
|
+
#
|
110
|
+
# @param [String] name the full name of the object
|
111
|
+
# @return [CodeObjects::Base] an object if found
|
112
|
+
# @return [nil] if no object is found
|
113
|
+
def find_object(name)
|
114
|
+
@search_paths.unshift(@cache[name]) if @cache[name]
|
115
|
+
@search_paths.unshift(Registry.yardoc_file)
|
116
|
+
|
117
|
+
# Try to load it from in memory cache
|
118
|
+
log.debug "Searching for #{name} in memory"
|
119
|
+
obj = try_load_object(name, nil)
|
120
|
+
return obj if obj
|
121
|
+
|
122
|
+
log.debug "Searching for #{name} in search paths"
|
123
|
+
@search_paths.each do |path|
|
124
|
+
next unless File.exist?(path)
|
125
|
+
log.debug "Searching for #{name} in #{path}..."
|
126
|
+
Registry.load(path)
|
127
|
+
obj = try_load_object(name, path)
|
128
|
+
return obj if obj
|
129
|
+
end
|
130
|
+
nil
|
131
|
+
end
|
132
|
+
|
133
|
+
private
|
134
|
+
|
135
|
+
# Tries to load the object with name. If successful, caches the object
|
136
|
+
# with the cache_path
|
137
|
+
#
|
138
|
+
# @param [String] name the object path
|
139
|
+
# @param [String] cache_path the location of the yardoc
|
140
|
+
# db containing the object to cache for future lookups.
|
141
|
+
# No caching is done if this is nil.
|
142
|
+
# @return [void]
|
143
|
+
def try_load_object(name, cache_path)
|
144
|
+
obj = Registry.at(name)
|
145
|
+
cache_object(name, cache_path) if obj && cache_path
|
146
|
+
obj
|
147
|
+
end
|
148
|
+
|
149
|
+
# Loads {CACHE_FILE}
|
150
|
+
# @return [void]
|
151
|
+
def load_cache
|
152
|
+
return unless File.file?(CACHE_FILE)
|
153
|
+
File.readlines(CACHE_FILE).each do |line|
|
154
|
+
line = line.strip.split(/\s+/)
|
155
|
+
@cache[line[0]] = line[1]
|
156
|
+
end
|
157
|
+
end
|
158
|
+
|
159
|
+
# Adds all RubyGems yardoc files to search paths
|
160
|
+
# @return [void]
|
161
|
+
def add_gem_paths
|
162
|
+
require 'rubygems'
|
163
|
+
gem_paths = []
|
164
|
+
YARD::GemIndex.each do |spec|
|
165
|
+
yfile = Registry.yardoc_file_for_gem(spec.name)
|
166
|
+
next if yfile.nil?
|
167
|
+
|
168
|
+
if spec.name =~ /^yard-doc-/
|
169
|
+
gem_paths.unshift(yfile)
|
170
|
+
else
|
171
|
+
gem_paths.push(yfile)
|
172
|
+
end
|
173
|
+
end
|
174
|
+
@search_paths += gem_paths
|
175
|
+
rescue LoadError
|
176
|
+
nil # noop
|
177
|
+
end
|
178
|
+
|
179
|
+
# Adds paths in {SEARCH_PATHS_FILE}
|
180
|
+
# @since 0.5.1
|
181
|
+
def add_default_paths
|
182
|
+
@search_paths.concat(DEFAULT_SEARCH_PATHS)
|
183
|
+
return unless File.file?(SEARCH_PATHS_FILE)
|
184
|
+
paths = File.readlines(SEARCH_PATHS_FILE).map(&:strip)
|
185
|
+
@search_paths.concat(paths)
|
186
|
+
end
|
187
|
+
|
188
|
+
# Parses commandline options.
|
189
|
+
# @param [Array<String>] args each tokenized argument
|
190
|
+
def optparse(*args)
|
191
|
+
opts = OptionParser.new
|
192
|
+
opts.banner = "Usage: yri [options] <Path to object>"
|
193
|
+
opts.separator "Example: yri String#gsub"
|
194
|
+
opts.separator ""
|
195
|
+
opts.separator "General Options:"
|
196
|
+
|
197
|
+
opts.on('-b', '--db FILE', 'Use a specified .yardoc db to search in') do |yfile|
|
198
|
+
@search_paths.unshift(yfile)
|
199
|
+
end
|
200
|
+
|
201
|
+
opts.on('-T', '--no-pager', 'No pager') do
|
202
|
+
@serializer = YARD::Serializers::StdoutSerializer.new
|
203
|
+
end
|
204
|
+
|
205
|
+
opts.on('-p PAGER', '--pager') do |pager|
|
206
|
+
@serializer = YARD::Serializers::ProcessSerializer.new(pager)
|
207
|
+
end
|
208
|
+
|
209
|
+
common_options(opts)
|
210
|
+
parse_options(opts, args)
|
211
|
+
@name = args.first
|
212
|
+
end
|
213
|
+
end
|
214
|
+
end
|
215
|
+
end
|