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
data/lib/yard/i18n/text.rb
CHANGED
@@ -1,173 +1,173 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
module YARD
|
3
|
-
module I18n
|
4
|
-
# Provides some convenient features for translating a text.
|
5
|
-
class Text
|
6
|
-
# Creates a text object that has translation related features for
|
7
|
-
# the input text.
|
8
|
-
#
|
9
|
-
# @param [#each_line] input a text to be translated.
|
10
|
-
# @option options [Boolean] :have_header (false) whether the
|
11
|
-
# input text has header or not.
|
12
|
-
def initialize(input, options = {})
|
13
|
-
@input = input
|
14
|
-
@options = options
|
15
|
-
end
|
16
|
-
|
17
|
-
# Extracts translation target messages from +@input+.
|
18
|
-
#
|
19
|
-
# @yield [:attribute, name, value, line_no] the block that
|
20
|
-
# receives extracted an attribute in header. It may called many
|
21
|
-
# times.
|
22
|
-
# @yieldparam [String] name the name of extracted attribute.
|
23
|
-
# @yieldparam [String] value the value of extracted attribute.
|
24
|
-
# @yieldparam [Integer] line_no the defined line number of extracted
|
25
|
-
# attribute.
|
26
|
-
# @yield [:paragraph, text, start_line_no] the block that
|
27
|
-
# receives extracted a paragraph in body. Paragraph is a text
|
28
|
-
# block separated by one or more empty lines. Empty line is a
|
29
|
-
# line that contains only zero or more whitespaces. It may
|
30
|
-
# called many times.
|
31
|
-
# @yieldparam [String] text the text of extracted paragraph.
|
32
|
-
# @yieldparam [Integer] start_line_no the start line number of
|
33
|
-
# extracted paragraph.
|
34
|
-
# @return [void]
|
35
|
-
def extract_messages
|
36
|
-
parse do |part|
|
37
|
-
case part[:type]
|
38
|
-
when :markup, :empty_line
|
39
|
-
# ignore
|
40
|
-
when :attribute
|
41
|
-
yield(:attribute, part[:name], part[:value], part[:line_no])
|
42
|
-
when :paragraph
|
43
|
-
yield(:paragraph, part[:paragraph], part[:line_no])
|
44
|
-
end
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
# Translates into +locale+.
|
49
|
-
#
|
50
|
-
# @param [Locale] locale the translation target locale.
|
51
|
-
# @return [String] translated text.
|
52
|
-
def translate(locale)
|
53
|
-
translated_text = String.new("")
|
54
|
-
parse do |part|
|
55
|
-
case part[:type]
|
56
|
-
when :markup
|
57
|
-
translated_text << part[:line]
|
58
|
-
when :attribute
|
59
|
-
prefix = "#{part[:prefix]}#{part[:name]}#{part[:infix]}"
|
60
|
-
value = locale.translate(part[:value])
|
61
|
-
suffix = part[:suffix]
|
62
|
-
translated_text << "#{prefix}#{value}#{suffix}"
|
63
|
-
when :paragraph
|
64
|
-
translated_text << locale.translate(part[:paragraph])
|
65
|
-
when :empty_line
|
66
|
-
translated_text << part[:line]
|
67
|
-
else
|
68
|
-
raise "should not reach here: unexpected type: #{type}"
|
69
|
-
end
|
70
|
-
end
|
71
|
-
translated_text
|
72
|
-
end
|
73
|
-
|
74
|
-
private
|
75
|
-
|
76
|
-
def parse(&block)
|
77
|
-
paragraph = String.new("")
|
78
|
-
paragraph_start_line = 0
|
79
|
-
line_no = 0
|
80
|
-
in_header = @options[:have_header]
|
81
|
-
|
82
|
-
@input.each_line do |line|
|
83
|
-
line_no += 1
|
84
|
-
if in_header
|
85
|
-
case line
|
86
|
-
when /^#!\S+\s*$/
|
87
|
-
if line_no == 1
|
88
|
-
emit_markup_event(line, line_no, &block)
|
89
|
-
else
|
90
|
-
in_header = false
|
91
|
-
end
|
92
|
-
when /^(\s*#\s*@)(\S+)(\s*)(.+?)(\s*)$/
|
93
|
-
emit_attribute_event(Regexp.last_match, line_no, &block)
|
94
|
-
else
|
95
|
-
in_header = false
|
96
|
-
if line.strip.empty?
|
97
|
-
emit_empty_line_event(line, line_no, &block)
|
98
|
-
next
|
99
|
-
end
|
100
|
-
end
|
101
|
-
next if in_header
|
102
|
-
end
|
103
|
-
|
104
|
-
case line
|
105
|
-
when /^\s*$/
|
106
|
-
if paragraph.empty?
|
107
|
-
emit_empty_line_event(line, line_no, &block)
|
108
|
-
else
|
109
|
-
paragraph << line
|
110
|
-
emit_paragraph_event(paragraph, paragraph_start_line, line_no,
|
111
|
-
&block)
|
112
|
-
paragraph = String.new("")
|
113
|
-
end
|
114
|
-
else
|
115
|
-
paragraph_start_line = line_no if paragraph.empty?
|
116
|
-
paragraph << line
|
117
|
-
end
|
118
|
-
end
|
119
|
-
|
120
|
-
unless paragraph.empty?
|
121
|
-
emit_paragraph_event(paragraph, paragraph_start_line, line_no, &block)
|
122
|
-
end
|
123
|
-
end
|
124
|
-
|
125
|
-
def emit_markup_event(line, line_no)
|
126
|
-
part = {
|
127
|
-
:type => :markup,
|
128
|
-
:line => line,
|
129
|
-
:line_no => line_no
|
130
|
-
}
|
131
|
-
yield(part)
|
132
|
-
end
|
133
|
-
|
134
|
-
def emit_attribute_event(match_data, line_no)
|
135
|
-
part = {
|
136
|
-
:type => :attribute,
|
137
|
-
:prefix => match_data[1],
|
138
|
-
:name => match_data[2],
|
139
|
-
:infix => match_data[3],
|
140
|
-
:value => match_data[4],
|
141
|
-
:suffix => match_data[5],
|
142
|
-
:line_no => line_no
|
143
|
-
}
|
144
|
-
yield(part)
|
145
|
-
end
|
146
|
-
|
147
|
-
def emit_empty_line_event(line, line_no)
|
148
|
-
part = {
|
149
|
-
:type => :empty_line,
|
150
|
-
:line => line,
|
151
|
-
:line_no => line_no
|
152
|
-
}
|
153
|
-
yield(part)
|
154
|
-
end
|
155
|
-
|
156
|
-
def emit_paragraph_event(paragraph, paragraph_start_line, line_no, &block)
|
157
|
-
paragraph_part = {
|
158
|
-
:type => :paragraph,
|
159
|
-
:line_no => paragraph_start_line
|
160
|
-
}
|
161
|
-
match_data = /(\s*)\z/.match(paragraph)
|
162
|
-
if match_data
|
163
|
-
paragraph_part[:paragraph] = match_data.pre_match
|
164
|
-
yield(paragraph_part)
|
165
|
-
emit_empty_line_event(match_data[1], line_no, &block)
|
166
|
-
else
|
167
|
-
paragraph_part[:paragraph] = paragraph
|
168
|
-
yield(paragraph_part)
|
169
|
-
end
|
170
|
-
end
|
171
|
-
end
|
172
|
-
end
|
173
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
module YARD
|
3
|
+
module I18n
|
4
|
+
# Provides some convenient features for translating a text.
|
5
|
+
class Text
|
6
|
+
# Creates a text object that has translation related features for
|
7
|
+
# the input text.
|
8
|
+
#
|
9
|
+
# @param [#each_line] input a text to be translated.
|
10
|
+
# @option options [Boolean] :have_header (false) whether the
|
11
|
+
# input text has header or not.
|
12
|
+
def initialize(input, options = {})
|
13
|
+
@input = input
|
14
|
+
@options = options
|
15
|
+
end
|
16
|
+
|
17
|
+
# Extracts translation target messages from +@input+.
|
18
|
+
#
|
19
|
+
# @yield [:attribute, name, value, line_no] the block that
|
20
|
+
# receives extracted an attribute in header. It may called many
|
21
|
+
# times.
|
22
|
+
# @yieldparam [String] name the name of extracted attribute.
|
23
|
+
# @yieldparam [String] value the value of extracted attribute.
|
24
|
+
# @yieldparam [Integer] line_no the defined line number of extracted
|
25
|
+
# attribute.
|
26
|
+
# @yield [:paragraph, text, start_line_no] the block that
|
27
|
+
# receives extracted a paragraph in body. Paragraph is a text
|
28
|
+
# block separated by one or more empty lines. Empty line is a
|
29
|
+
# line that contains only zero or more whitespaces. It may
|
30
|
+
# called many times.
|
31
|
+
# @yieldparam [String] text the text of extracted paragraph.
|
32
|
+
# @yieldparam [Integer] start_line_no the start line number of
|
33
|
+
# extracted paragraph.
|
34
|
+
# @return [void]
|
35
|
+
def extract_messages
|
36
|
+
parse do |part|
|
37
|
+
case part[:type]
|
38
|
+
when :markup, :empty_line
|
39
|
+
# ignore
|
40
|
+
when :attribute
|
41
|
+
yield(:attribute, part[:name], part[:value], part[:line_no])
|
42
|
+
when :paragraph
|
43
|
+
yield(:paragraph, part[:paragraph], part[:line_no])
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
# Translates into +locale+.
|
49
|
+
#
|
50
|
+
# @param [Locale] locale the translation target locale.
|
51
|
+
# @return [String] translated text.
|
52
|
+
def translate(locale)
|
53
|
+
translated_text = String.new("")
|
54
|
+
parse do |part|
|
55
|
+
case part[:type]
|
56
|
+
when :markup
|
57
|
+
translated_text << part[:line]
|
58
|
+
when :attribute
|
59
|
+
prefix = "#{part[:prefix]}#{part[:name]}#{part[:infix]}"
|
60
|
+
value = locale.translate(part[:value])
|
61
|
+
suffix = part[:suffix]
|
62
|
+
translated_text << "#{prefix}#{value}#{suffix}"
|
63
|
+
when :paragraph
|
64
|
+
translated_text << locale.translate(part[:paragraph])
|
65
|
+
when :empty_line
|
66
|
+
translated_text << part[:line]
|
67
|
+
else
|
68
|
+
raise "should not reach here: unexpected type: #{type}"
|
69
|
+
end
|
70
|
+
end
|
71
|
+
translated_text
|
72
|
+
end
|
73
|
+
|
74
|
+
private
|
75
|
+
|
76
|
+
def parse(&block)
|
77
|
+
paragraph = String.new("")
|
78
|
+
paragraph_start_line = 0
|
79
|
+
line_no = 0
|
80
|
+
in_header = @options[:have_header]
|
81
|
+
|
82
|
+
@input.each_line do |line|
|
83
|
+
line_no += 1
|
84
|
+
if in_header
|
85
|
+
case line
|
86
|
+
when /^#!\S+\s*$/
|
87
|
+
if line_no == 1
|
88
|
+
emit_markup_event(line, line_no, &block)
|
89
|
+
else
|
90
|
+
in_header = false
|
91
|
+
end
|
92
|
+
when /^(\s*#\s*@)(\S+)(\s*)(.+?)(\s*)$/
|
93
|
+
emit_attribute_event(Regexp.last_match, line_no, &block)
|
94
|
+
else
|
95
|
+
in_header = false
|
96
|
+
if line.strip.empty?
|
97
|
+
emit_empty_line_event(line, line_no, &block)
|
98
|
+
next
|
99
|
+
end
|
100
|
+
end
|
101
|
+
next if in_header
|
102
|
+
end
|
103
|
+
|
104
|
+
case line
|
105
|
+
when /^\s*$/
|
106
|
+
if paragraph.empty?
|
107
|
+
emit_empty_line_event(line, line_no, &block)
|
108
|
+
else
|
109
|
+
paragraph << line
|
110
|
+
emit_paragraph_event(paragraph, paragraph_start_line, line_no,
|
111
|
+
&block)
|
112
|
+
paragraph = String.new("")
|
113
|
+
end
|
114
|
+
else
|
115
|
+
paragraph_start_line = line_no if paragraph.empty?
|
116
|
+
paragraph << line
|
117
|
+
end
|
118
|
+
end
|
119
|
+
|
120
|
+
unless paragraph.empty?
|
121
|
+
emit_paragraph_event(paragraph, paragraph_start_line, line_no, &block)
|
122
|
+
end
|
123
|
+
end
|
124
|
+
|
125
|
+
def emit_markup_event(line, line_no)
|
126
|
+
part = {
|
127
|
+
:type => :markup,
|
128
|
+
:line => line,
|
129
|
+
:line_no => line_no
|
130
|
+
}
|
131
|
+
yield(part)
|
132
|
+
end
|
133
|
+
|
134
|
+
def emit_attribute_event(match_data, line_no)
|
135
|
+
part = {
|
136
|
+
:type => :attribute,
|
137
|
+
:prefix => match_data[1],
|
138
|
+
:name => match_data[2],
|
139
|
+
:infix => match_data[3],
|
140
|
+
:value => match_data[4],
|
141
|
+
:suffix => match_data[5],
|
142
|
+
:line_no => line_no
|
143
|
+
}
|
144
|
+
yield(part)
|
145
|
+
end
|
146
|
+
|
147
|
+
def emit_empty_line_event(line, line_no)
|
148
|
+
part = {
|
149
|
+
:type => :empty_line,
|
150
|
+
:line => line,
|
151
|
+
:line_no => line_no
|
152
|
+
}
|
153
|
+
yield(part)
|
154
|
+
end
|
155
|
+
|
156
|
+
def emit_paragraph_event(paragraph, paragraph_start_line, line_no, &block)
|
157
|
+
paragraph_part = {
|
158
|
+
:type => :paragraph,
|
159
|
+
:line_no => paragraph_start_line
|
160
|
+
}
|
161
|
+
match_data = /(\s*)\z/.match(paragraph)
|
162
|
+
if match_data
|
163
|
+
paragraph_part[:paragraph] = match_data.pre_match
|
164
|
+
yield(paragraph_part)
|
165
|
+
emit_empty_line_event(match_data[1], line_no, &block)
|
166
|
+
else
|
167
|
+
paragraph_part[:paragraph] = paragraph
|
168
|
+
yield(paragraph_part)
|
169
|
+
end
|
170
|
+
end
|
171
|
+
end
|
172
|
+
end
|
173
|
+
end
|
data/lib/yard/logging.rb
CHANGED
@@ -1,205 +1,205 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
# frozen_string_literal: true
|
3
|
-
require 'logger'
|
4
|
-
require 'thread'
|
5
|
-
|
6
|
-
module YARD
|
7
|
-
# Handles console logging for info, warnings and errors.
|
8
|
-
# Uses the stdlib Logger class in Ruby for all the backend logic.
|
9
|
-
class Logger < ::Logger
|
10
|
-
# The list of characters displayed beside the progress bar to indicate
|
11
|
-
# "movement".
|
12
|
-
# @since 0.8.2
|
13
|
-
PROGRESS_INDICATORS = %w(⣷ ⣯ ⣟ ⡿ ⢿ ⣻ ⣽ ⣾)
|
14
|
-
|
15
|
-
# @return [IO] the IO object being logged to
|
16
|
-
# @since 0.8.2
|
17
|
-
def io; @logdev end
|
18
|
-
def io=(pipe) @logdev = pipe end
|
19
|
-
|
20
|
-
# @return [Boolean] whether backtraces should be shown (by default
|
21
|
-
# this is on).
|
22
|
-
def show_backtraces; @show_backtraces || level == DEBUG end
|
23
|
-
attr_writer :show_backtraces
|
24
|
-
|
25
|
-
# @return [Boolean] whether progress indicators should be shown when
|
26
|
-
# logging CLIs (by default this is off).
|
27
|
-
def show_progress
|
28
|
-
return false if YARD.ruby18? # threading is too ineffective for progress support
|
29
|
-
return false if YARD.windows? # windows has poor ANSI support
|
30
|
-
return false unless io.tty? # no TTY support on IO
|
31
|
-
return false unless level > INFO # no progress in verbose/debug modes
|
32
|
-
@show_progress
|
33
|
-
end
|
34
|
-
attr_writer :show_progress
|
35
|
-
|
36
|
-
# The logger instance
|
37
|
-
# @return [Logger] the logger instance
|
38
|
-
def self.instance(pipe = STDOUT)
|
39
|
-
@logger ||= new(pipe)
|
40
|
-
end
|
41
|
-
|
42
|
-
# Creates a new logger
|
43
|
-
def initialize(pipe, *args)
|
44
|
-
super(pipe, *args)
|
45
|
-
self.io = pipe
|
46
|
-
self.show_backtraces = true
|
47
|
-
self.show_progress = false
|
48
|
-
self.level = WARN
|
49
|
-
self.formatter = method(:format_log)
|
50
|
-
self.warned = false
|
51
|
-
@progress_indicator = 0
|
52
|
-
@mutex = Mutex.new
|
53
|
-
@progress_msg = nil
|
54
|
-
@progress_last_update = Time.now
|
55
|
-
end
|
56
|
-
|
57
|
-
# Changes the debug level to DEBUG if $DEBUG is set
|
58
|
-
# and writes a debugging message.
|
59
|
-
def debug(*args)
|
60
|
-
self.level = DEBUG if $DEBUG
|
61
|
-
super
|
62
|
-
end
|
63
|
-
|
64
|
-
# Remembers when a warning occurs and writes a warning message.
|
65
|
-
def warn(*args)
|
66
|
-
self.warned = true
|
67
|
-
super
|
68
|
-
end
|
69
|
-
attr_accessor :warned
|
70
|
-
|
71
|
-
# Captures the duration of a block of code for benchmark analysis. Also
|
72
|
-
# calls {#progress} on the message to display it to the user.
|
73
|
-
#
|
74
|
-
# @todo Implement capture storage for reporting of benchmarks
|
75
|
-
# @param [String] msg the message to display
|
76
|
-
# @param [Symbol, nil] nontty_log the level to log as if the output
|
77
|
-
# stream is not a TTY. Use +nil+ for no alternate logging.
|
78
|
-
# @yield a block of arbitrary code to benchmark
|
79
|
-
# @return [void]
|
80
|
-
def capture(msg, nontty_log = :debug)
|
81
|
-
progress(msg, nontty_log)
|
82
|
-
yield
|
83
|
-
ensure
|
84
|
-
clear_progress
|
85
|
-
end
|
86
|
-
|
87
|
-
# Displays a progress indicator for a given message. This progress report
|
88
|
-
# is only displayed on TTY displays, otherwise the message is passed to
|
89
|
-
# the +nontty_log+ level.
|
90
|
-
#
|
91
|
-
# @param [String] msg the message to log
|
92
|
-
# @param [Symbol, nil] nontty_log the level to log as if the output
|
93
|
-
# stream is not a TTY. Use +nil+ for no alternate logging.
|
94
|
-
# @return [void]
|
95
|
-
# @since 0.8.2
|
96
|
-
def progress(msg, nontty_log = :debug)
|
97
|
-
send(nontty_log, msg) if nontty_log
|
98
|
-
return unless show_progress
|
99
|
-
icon = ""
|
100
|
-
if defined?(::Encoding)
|
101
|
-
icon = PROGRESS_INDICATORS[@progress_indicator] + " "
|
102
|
-
end
|
103
|
-
@mutex.synchronize do
|
104
|
-
print("\e[2K\e[?25l\e[1m#{icon}#{msg}\e[0m\r")
|
105
|
-
@progress_msg = msg
|
106
|
-
if Time.now - @progress_last_update > 0.2
|
107
|
-
@progress_indicator += 1
|
108
|
-
@progress_indicator %= PROGRESS_INDICATORS.size
|
109
|
-
@progress_last_update = Time.now
|
110
|
-
end
|
111
|
-
end
|
112
|
-
Thread.new do
|
113
|
-
sleep(0.05)
|
114
|
-
progress(msg + ".", nil) if @progress_msg == msg
|
115
|
-
end
|
116
|
-
end
|
117
|
-
|
118
|
-
# Clears the progress indicator in the TTY display.
|
119
|
-
# @return [void]
|
120
|
-
# @since 0.8.2
|
121
|
-
def clear_progress
|
122
|
-
return unless show_progress
|
123
|
-
print_no_newline("\e[?25h\e[2K")
|
124
|
-
@progress_msg = nil
|
125
|
-
end
|
126
|
-
|
127
|
-
# Displays an unformatted line to the logger output stream, adding
|
128
|
-
# a newline.
|
129
|
-
# @param [String] msg the message to display
|
130
|
-
# @return [void]
|
131
|
-
# @since 0.8.2
|
132
|
-
def puts(msg = '')
|
133
|
-
print("#{msg}\n")
|
134
|
-
end
|
135
|
-
|
136
|
-
alias print_no_newline <<
|
137
|
-
private :print_no_newline
|
138
|
-
|
139
|
-
# Displays an unformatted line to the logger output stream.
|
140
|
-
# @param [String] msg the message to display
|
141
|
-
# @return [void]
|
142
|
-
# @since 0.8.2
|
143
|
-
def print(msg = '')
|
144
|
-
clear_line
|
145
|
-
print_no_newline(msg)
|
146
|
-
end
|
147
|
-
alias << print
|
148
|
-
|
149
|
-
# Prints the backtrace +exc+ to the logger as error data.
|
150
|
-
#
|
151
|
-
# @param [Array<String>] exc the backtrace list
|
152
|
-
# @param [Symbol] level_meth the level to log backtrace at
|
153
|
-
# @return [void]
|
154
|
-
def backtrace(exc, level_meth = :error)
|
155
|
-
return unless show_backtraces
|
156
|
-
send(level_meth, "#{exc.class.class_name}: #{exc.message}")
|
157
|
-
send(level_meth, "Stack trace:" +
|
158
|
-
exc.backtrace[0..5].map {|x| "\n\t#{x}" }.join + "\n")
|
159
|
-
end
|
160
|
-
|
161
|
-
# Warns that the Ruby environment does not support continuations. Applies
|
162
|
-
# to JRuby, Rubinius and MacRuby. This warning will only display once
|
163
|
-
# per Ruby process.
|
164
|
-
#
|
165
|
-
# @deprecated Continuations are no longer needed by YARD 0.8.0+.
|
166
|
-
# @return [void]
|
167
|
-
def warn_no_continuations
|
168
|
-
end
|
169
|
-
|
170
|
-
# Sets the logger level for the duration of the block
|
171
|
-
#
|
172
|
-
# @example
|
173
|
-
# log.enter_level(Logger::ERROR) do
|
174
|
-
# YARD.parse_string "def x; end"
|
175
|
-
# end
|
176
|
-
# @param [Fixnum] new_level the logger level for the duration of the block.
|
177
|
-
# values can be found in Ruby's Logger class.
|
178
|
-
# @yield the block with the logger temporarily set to +new_level+
|
179
|
-
def enter_level(new_level = level)
|
180
|
-
old_level = level
|
181
|
-
self.level = new_level
|
182
|
-
yield
|
183
|
-
ensure
|
184
|
-
self.level = old_level
|
185
|
-
end
|
186
|
-
|
187
|
-
private
|
188
|
-
|
189
|
-
# Override this internal Logger method to clear line
|
190
|
-
def add(*args)
|
191
|
-
clear_line
|
192
|
-
super(*args)
|
193
|
-
end
|
194
|
-
|
195
|
-
def clear_line
|
196
|
-
return unless @progress_msg
|
197
|
-
print_no_newline("\e[2K\r")
|
198
|
-
end
|
199
|
-
|
200
|
-
# Log format (from Logger implementation). Used by Logger internally
|
201
|
-
def format_log(sev, _time, _prog, msg)
|
202
|
-
"[#{sev.downcase}]: #{msg}\n"
|
203
|
-
end
|
204
|
-
end
|
205
|
-
end
|
1
|
+
# encoding: utf-8
|
2
|
+
# frozen_string_literal: true
|
3
|
+
require 'logger'
|
4
|
+
require 'thread'
|
5
|
+
|
6
|
+
module YARD
|
7
|
+
# Handles console logging for info, warnings and errors.
|
8
|
+
# Uses the stdlib Logger class in Ruby for all the backend logic.
|
9
|
+
class Logger < ::Logger
|
10
|
+
# The list of characters displayed beside the progress bar to indicate
|
11
|
+
# "movement".
|
12
|
+
# @since 0.8.2
|
13
|
+
PROGRESS_INDICATORS = %w(⣷ ⣯ ⣟ ⡿ ⢿ ⣻ ⣽ ⣾)
|
14
|
+
|
15
|
+
# @return [IO] the IO object being logged to
|
16
|
+
# @since 0.8.2
|
17
|
+
def io; @logdev end
|
18
|
+
def io=(pipe) @logdev = pipe end
|
19
|
+
|
20
|
+
# @return [Boolean] whether backtraces should be shown (by default
|
21
|
+
# this is on).
|
22
|
+
def show_backtraces; @show_backtraces || level == DEBUG end
|
23
|
+
attr_writer :show_backtraces
|
24
|
+
|
25
|
+
# @return [Boolean] whether progress indicators should be shown when
|
26
|
+
# logging CLIs (by default this is off).
|
27
|
+
def show_progress
|
28
|
+
return false if YARD.ruby18? # threading is too ineffective for progress support
|
29
|
+
return false if YARD.windows? # windows has poor ANSI support
|
30
|
+
return false unless io.tty? # no TTY support on IO
|
31
|
+
return false unless level > INFO # no progress in verbose/debug modes
|
32
|
+
@show_progress
|
33
|
+
end
|
34
|
+
attr_writer :show_progress
|
35
|
+
|
36
|
+
# The logger instance
|
37
|
+
# @return [Logger] the logger instance
|
38
|
+
def self.instance(pipe = STDOUT)
|
39
|
+
@logger ||= new(pipe)
|
40
|
+
end
|
41
|
+
|
42
|
+
# Creates a new logger
|
43
|
+
def initialize(pipe, *args)
|
44
|
+
super(pipe, *args)
|
45
|
+
self.io = pipe
|
46
|
+
self.show_backtraces = true
|
47
|
+
self.show_progress = false
|
48
|
+
self.level = WARN
|
49
|
+
self.formatter = method(:format_log)
|
50
|
+
self.warned = false
|
51
|
+
@progress_indicator = 0
|
52
|
+
@mutex = Mutex.new
|
53
|
+
@progress_msg = nil
|
54
|
+
@progress_last_update = Time.now
|
55
|
+
end
|
56
|
+
|
57
|
+
# Changes the debug level to DEBUG if $DEBUG is set
|
58
|
+
# and writes a debugging message.
|
59
|
+
def debug(*args)
|
60
|
+
self.level = DEBUG if $DEBUG
|
61
|
+
super
|
62
|
+
end
|
63
|
+
|
64
|
+
# Remembers when a warning occurs and writes a warning message.
|
65
|
+
def warn(*args)
|
66
|
+
self.warned = true
|
67
|
+
super
|
68
|
+
end
|
69
|
+
attr_accessor :warned
|
70
|
+
|
71
|
+
# Captures the duration of a block of code for benchmark analysis. Also
|
72
|
+
# calls {#progress} on the message to display it to the user.
|
73
|
+
#
|
74
|
+
# @todo Implement capture storage for reporting of benchmarks
|
75
|
+
# @param [String] msg the message to display
|
76
|
+
# @param [Symbol, nil] nontty_log the level to log as if the output
|
77
|
+
# stream is not a TTY. Use +nil+ for no alternate logging.
|
78
|
+
# @yield a block of arbitrary code to benchmark
|
79
|
+
# @return [void]
|
80
|
+
def capture(msg, nontty_log = :debug)
|
81
|
+
progress(msg, nontty_log)
|
82
|
+
yield
|
83
|
+
ensure
|
84
|
+
clear_progress
|
85
|
+
end
|
86
|
+
|
87
|
+
# Displays a progress indicator for a given message. This progress report
|
88
|
+
# is only displayed on TTY displays, otherwise the message is passed to
|
89
|
+
# the +nontty_log+ level.
|
90
|
+
#
|
91
|
+
# @param [String] msg the message to log
|
92
|
+
# @param [Symbol, nil] nontty_log the level to log as if the output
|
93
|
+
# stream is not a TTY. Use +nil+ for no alternate logging.
|
94
|
+
# @return [void]
|
95
|
+
# @since 0.8.2
|
96
|
+
def progress(msg, nontty_log = :debug)
|
97
|
+
send(nontty_log, msg) if nontty_log
|
98
|
+
return unless show_progress
|
99
|
+
icon = ""
|
100
|
+
if defined?(::Encoding)
|
101
|
+
icon = PROGRESS_INDICATORS[@progress_indicator] + " "
|
102
|
+
end
|
103
|
+
@mutex.synchronize do
|
104
|
+
print("\e[2K\e[?25l\e[1m#{icon}#{msg}\e[0m\r")
|
105
|
+
@progress_msg = msg
|
106
|
+
if Time.now - @progress_last_update > 0.2
|
107
|
+
@progress_indicator += 1
|
108
|
+
@progress_indicator %= PROGRESS_INDICATORS.size
|
109
|
+
@progress_last_update = Time.now
|
110
|
+
end
|
111
|
+
end
|
112
|
+
Thread.new do
|
113
|
+
sleep(0.05)
|
114
|
+
progress(msg + ".", nil) if @progress_msg == msg
|
115
|
+
end
|
116
|
+
end
|
117
|
+
|
118
|
+
# Clears the progress indicator in the TTY display.
|
119
|
+
# @return [void]
|
120
|
+
# @since 0.8.2
|
121
|
+
def clear_progress
|
122
|
+
return unless show_progress
|
123
|
+
print_no_newline("\e[?25h\e[2K")
|
124
|
+
@progress_msg = nil
|
125
|
+
end
|
126
|
+
|
127
|
+
# Displays an unformatted line to the logger output stream, adding
|
128
|
+
# a newline.
|
129
|
+
# @param [String] msg the message to display
|
130
|
+
# @return [void]
|
131
|
+
# @since 0.8.2
|
132
|
+
def puts(msg = '')
|
133
|
+
print("#{msg}\n")
|
134
|
+
end
|
135
|
+
|
136
|
+
alias print_no_newline <<
|
137
|
+
private :print_no_newline
|
138
|
+
|
139
|
+
# Displays an unformatted line to the logger output stream.
|
140
|
+
# @param [String] msg the message to display
|
141
|
+
# @return [void]
|
142
|
+
# @since 0.8.2
|
143
|
+
def print(msg = '')
|
144
|
+
clear_line
|
145
|
+
print_no_newline(msg)
|
146
|
+
end
|
147
|
+
alias << print
|
148
|
+
|
149
|
+
# Prints the backtrace +exc+ to the logger as error data.
|
150
|
+
#
|
151
|
+
# @param [Array<String>] exc the backtrace list
|
152
|
+
# @param [Symbol] level_meth the level to log backtrace at
|
153
|
+
# @return [void]
|
154
|
+
def backtrace(exc, level_meth = :error)
|
155
|
+
return unless show_backtraces
|
156
|
+
send(level_meth, "#{exc.class.class_name}: #{exc.message}")
|
157
|
+
send(level_meth, "Stack trace:" +
|
158
|
+
exc.backtrace[0..5].map {|x| "\n\t#{x}" }.join + "\n")
|
159
|
+
end
|
160
|
+
|
161
|
+
# Warns that the Ruby environment does not support continuations. Applies
|
162
|
+
# to JRuby, Rubinius and MacRuby. This warning will only display once
|
163
|
+
# per Ruby process.
|
164
|
+
#
|
165
|
+
# @deprecated Continuations are no longer needed by YARD 0.8.0+.
|
166
|
+
# @return [void]
|
167
|
+
def warn_no_continuations
|
168
|
+
end
|
169
|
+
|
170
|
+
# Sets the logger level for the duration of the block
|
171
|
+
#
|
172
|
+
# @example
|
173
|
+
# log.enter_level(Logger::ERROR) do
|
174
|
+
# YARD.parse_string "def x; end"
|
175
|
+
# end
|
176
|
+
# @param [Fixnum] new_level the logger level for the duration of the block.
|
177
|
+
# values can be found in Ruby's Logger class.
|
178
|
+
# @yield the block with the logger temporarily set to +new_level+
|
179
|
+
def enter_level(new_level = level)
|
180
|
+
old_level = level
|
181
|
+
self.level = new_level
|
182
|
+
yield
|
183
|
+
ensure
|
184
|
+
self.level = old_level
|
185
|
+
end
|
186
|
+
|
187
|
+
private
|
188
|
+
|
189
|
+
# Override this internal Logger method to clear line
|
190
|
+
def add(*args)
|
191
|
+
clear_line
|
192
|
+
super(*args)
|
193
|
+
end
|
194
|
+
|
195
|
+
def clear_line
|
196
|
+
return unless @progress_msg
|
197
|
+
print_no_newline("\e[2K\r")
|
198
|
+
end
|
199
|
+
|
200
|
+
# Log format (from Logger implementation). Used by Logger internally
|
201
|
+
def format_log(sev, _time, _prog, msg)
|
202
|
+
"[#{sev.downcase}]: #{msg}\n"
|
203
|
+
end
|
204
|
+
end
|
205
|
+
end
|