yard 0.9.16 → 0.9.17
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of yard might be problematic. Click here for more details.
- checksums.yaml +5 -5
- data/.yardopts +26 -26
- data/CHANGELOG.md +728 -728
- data/LEGAL +66 -66
- data/LICENSE +22 -22
- data/README.md +328 -328
- data/Rakefile +53 -47
- data/benchmarks/builtins_vs_eval.rb +24 -24
- data/benchmarks/concat_vs_join.rb +13 -13
- data/benchmarks/erb_vs_erubis.rb +54 -54
- data/benchmarks/format_args.rb +47 -47
- data/benchmarks/generation.rb +38 -38
- data/benchmarks/marshal_vs_dbm.rb +64 -64
- data/benchmarks/parsing.rb +46 -46
- data/benchmarks/pathname_vs_string.rb +50 -50
- data/benchmarks/rdoc_vs_yardoc.rb +11 -11
- data/benchmarks/registry_store_types.rb +49 -49
- data/benchmarks/ri_vs_yri.rb +19 -19
- data/benchmarks/ripper_parser.rb +13 -13
- data/benchmarks/splat_vs_flatten.rb +13 -13
- data/benchmarks/template_erb.rb +23 -23
- data/benchmarks/template_format.rb +7 -7
- data/benchmarks/template_profile.rb +18 -18
- data/benchmarks/yri_cache.rb +20 -20
- data/bin/yard +13 -13
- data/bin/yardoc +13 -13
- data/bin/yri +13 -13
- data/docs/CodeObjects.md +115 -115
- data/docs/GettingStarted.md +679 -679
- data/docs/Handlers.md +152 -152
- data/docs/Overview.md +61 -61
- data/docs/Parser.md +191 -191
- data/docs/Tags.md +283 -283
- data/docs/TagsArch.md +123 -123
- data/docs/Templates.md +496 -496
- data/docs/WhatsNew.md +1245 -1245
- data/docs/templates/default/fulldoc/html/full_list_tag.erb +8 -8
- data/docs/templates/default/fulldoc/html/setup.rb +6 -6
- data/docs/templates/default/layout/html/setup.rb +9 -9
- data/docs/templates/default/layout/html/tag_list.erb +11 -11
- data/docs/templates/default/yard_tags/html/list.erb +18 -18
- data/docs/templates/default/yard_tags/html/setup.rb +26 -26
- data/docs/templates/plugin.rb +70 -70
- data/lib/rubygems_plugin.rb +9 -9
- data/lib/yard.rb +69 -69
- data/lib/yard/autoload.rb +303 -303
- data/lib/yard/cli/command.rb +85 -85
- data/lib/yard/cli/command_parser.rb +93 -93
- data/lib/yard/cli/config.rb +198 -198
- data/lib/yard/cli/diff.rb +270 -270
- data/lib/yard/cli/display.rb +69 -69
- data/lib/yard/cli/gems.rb +84 -84
- data/lib/yard/cli/graph.rb +125 -125
- data/lib/yard/cli/help.rb +20 -20
- data/lib/yard/cli/i18n.rb +70 -70
- data/lib/yard/cli/list.rb +23 -23
- data/lib/yard/cli/markup_types.rb +32 -32
- data/lib/yard/cli/server.rb +257 -257
- data/lib/yard/cli/stats.rb +231 -231
- data/lib/yard/cli/yardoc.rb +788 -788
- data/lib/yard/cli/yardopts_command.rb +110 -110
- data/lib/yard/cli/yri.rb +215 -215
- data/lib/yard/code_objects/base.rb +615 -610
- data/lib/yard/code_objects/class_object.rb +146 -146
- data/lib/yard/code_objects/class_variable_object.rb +11 -11
- data/lib/yard/code_objects/constant_object.rb +16 -16
- data/lib/yard/code_objects/extended_method_object.rb +24 -24
- data/lib/yard/code_objects/extra_file_object.rb +131 -131
- data/lib/yard/code_objects/macro_object.rb +172 -172
- data/lib/yard/code_objects/method_object.rb +196 -196
- data/lib/yard/code_objects/module_object.rb +21 -21
- data/lib/yard/code_objects/namespace_mapper.rb +114 -114
- data/lib/yard/code_objects/namespace_object.rb +200 -200
- data/lib/yard/code_objects/proxy.rb +240 -240
- data/lib/yard/code_objects/root_object.rb +19 -19
- data/lib/yard/config.rb +270 -270
- data/lib/yard/core_ext/array.rb +16 -16
- data/lib/yard/core_ext/file.rb +69 -69
- data/lib/yard/core_ext/hash.rb +16 -16
- data/lib/yard/core_ext/insertion.rb +63 -63
- data/lib/yard/core_ext/module.rb +20 -20
- data/lib/yard/core_ext/string.rb +68 -68
- data/lib/yard/core_ext/symbol_hash.rb +75 -75
- data/lib/yard/docstring.rb +386 -378
- data/lib/yard/docstring_parser.rb +345 -345
- data/lib/yard/gem_index.rb +29 -29
- data/lib/yard/globals.rb +22 -22
- data/lib/yard/handlers/base.rb +595 -595
- data/lib/yard/handlers/c/alias_handler.rb +16 -16
- data/lib/yard/handlers/c/attribute_handler.rb +13 -13
- data/lib/yard/handlers/c/base.rb +129 -129
- data/lib/yard/handlers/c/class_handler.rb +27 -27
- data/lib/yard/handlers/c/constant_handler.rb +13 -13
- data/lib/yard/handlers/c/handler_methods.rb +211 -211
- data/lib/yard/handlers/c/init_handler.rb +20 -20
- data/lib/yard/handlers/c/method_handler.rb +45 -36
- data/lib/yard/handlers/c/mixin_handler.rb +21 -21
- data/lib/yard/handlers/c/module_handler.rb +17 -17
- data/lib/yard/handlers/c/override_comment_handler.rb +31 -31
- data/lib/yard/handlers/c/path_handler.rb +11 -11
- data/lib/yard/handlers/c/struct_handler.rb +13 -13
- data/lib/yard/handlers/c/symbol_handler.rb +8 -8
- data/lib/yard/handlers/processor.rb +200 -200
- data/lib/yard/handlers/ruby/alias_handler.rb +44 -44
- data/lib/yard/handlers/ruby/attribute_handler.rb +87 -87
- data/lib/yard/handlers/ruby/base.rb +165 -165
- data/lib/yard/handlers/ruby/class_condition_handler.rb +92 -92
- data/lib/yard/handlers/ruby/class_handler.rb +119 -119
- data/lib/yard/handlers/ruby/class_variable_handler.rb +17 -17
- data/lib/yard/handlers/ruby/comment_handler.rb +10 -10
- data/lib/yard/handlers/ruby/constant_handler.rb +59 -59
- data/lib/yard/handlers/ruby/decorator_handler_methods.rb +123 -123
- data/lib/yard/handlers/ruby/dsl_handler.rb +15 -15
- data/lib/yard/handlers/ruby/dsl_handler_methods.rb +96 -95
- data/lib/yard/handlers/ruby/exception_handler.rb +27 -27
- data/lib/yard/handlers/ruby/extend_handler.rb +22 -22
- data/lib/yard/handlers/ruby/legacy/alias_handler.rb +37 -37
- data/lib/yard/handlers/ruby/legacy/attribute_handler.rb +65 -65
- data/lib/yard/handlers/ruby/legacy/base.rb +245 -245
- data/lib/yard/handlers/ruby/legacy/class_condition_handler.rb +83 -83
- data/lib/yard/handlers/ruby/legacy/class_handler.rb +113 -113
- data/lib/yard/handlers/ruby/legacy/class_variable_handler.rb +15 -15
- data/lib/yard/handlers/ruby/legacy/comment_handler.rb +10 -10
- data/lib/yard/handlers/ruby/legacy/constant_handler.rb +29 -29
- data/lib/yard/handlers/ruby/legacy/dsl_handler.rb +17 -17
- data/lib/yard/handlers/ruby/legacy/exception_handler.rb +13 -13
- data/lib/yard/handlers/ruby/legacy/extend_handler.rb +21 -21
- data/lib/yard/handlers/ruby/legacy/method_handler.rb +90 -90
- data/lib/yard/handlers/ruby/legacy/mixin_handler.rb +39 -39
- data/lib/yard/handlers/ruby/legacy/module_function_handler.rb +19 -19
- data/lib/yard/handlers/ruby/legacy/module_handler.rb +12 -12
- data/lib/yard/handlers/ruby/legacy/private_class_method_handler.rb +22 -22
- data/lib/yard/handlers/ruby/legacy/private_constant_handler.rb +22 -22
- data/lib/yard/handlers/ruby/legacy/visibility_handler.rb +17 -17
- data/lib/yard/handlers/ruby/legacy/yield_handler.rb +29 -29
- data/lib/yard/handlers/ruby/method_condition_handler.rb +9 -9
- data/lib/yard/handlers/ruby/method_handler.rb +118 -118
- data/lib/yard/handlers/ruby/mixin_handler.rb +37 -37
- data/lib/yard/handlers/ruby/module_function_handler.rb +27 -27
- data/lib/yard/handlers/ruby/module_handler.rb +12 -12
- data/lib/yard/handlers/ruby/private_class_method_handler.rb +14 -14
- data/lib/yard/handlers/ruby/private_constant_handler.rb +43 -43
- data/lib/yard/handlers/ruby/public_class_method_handler.rb +14 -14
- data/lib/yard/handlers/ruby/struct_handler_methods.rb +143 -143
- data/lib/yard/handlers/ruby/visibility_handler.rb +22 -22
- data/lib/yard/handlers/ruby/yield_handler.rb +31 -31
- data/lib/yard/i18n/locale.rb +67 -67
- data/lib/yard/i18n/message.rb +57 -57
- data/lib/yard/i18n/messages.rb +56 -56
- data/lib/yard/i18n/po_parser.rb +61 -61
- data/lib/yard/i18n/pot_generator.rb +290 -290
- data/lib/yard/i18n/text.rb +173 -173
- data/lib/yard/logging.rb +205 -205
- data/lib/yard/options.rb +217 -217
- data/lib/yard/parser/base.rb +57 -57
- data/lib/yard/parser/c/c_parser.rb +235 -235
- data/lib/yard/parser/c/comment_parser.rb +134 -134
- data/lib/yard/parser/c/statement.rb +64 -64
- data/lib/yard/parser/ruby/ast_node.rb +540 -540
- data/lib/yard/parser/ruby/legacy/ruby_lex.rb +1354 -1354
- data/lib/yard/parser/ruby/legacy/ruby_parser.rb +32 -32
- data/lib/yard/parser/ruby/legacy/statement.rb +66 -66
- data/lib/yard/parser/ruby/legacy/statement_list.rb +394 -394
- data/lib/yard/parser/ruby/legacy/token_list.rb +74 -74
- data/lib/yard/parser/ruby/ruby_parser.rb +687 -687
- data/lib/yard/parser/ruby/token_resolver.rb +156 -156
- data/lib/yard/parser/source_parser.rb +526 -526
- data/lib/yard/rake/yardoc_task.rb +81 -81
- data/lib/yard/registry.rb +439 -439
- data/lib/yard/registry_resolver.rb +189 -189
- data/lib/yard/registry_store.rb +337 -337
- data/lib/yard/rubygems/backports.rb +10 -10
- data/lib/yard/rubygems/backports/LICENSE.txt +57 -57
- data/lib/yard/rubygems/backports/MIT.txt +20 -20
- data/lib/yard/rubygems/backports/gem.rb +10 -10
- data/lib/yard/rubygems/backports/source_index.rb +365 -365
- data/lib/yard/rubygems/doc_manager.rb +90 -90
- data/lib/yard/rubygems/hook.rb +197 -197
- data/lib/yard/rubygems/specification.rb +50 -50
- data/lib/yard/serializers/base.rb +83 -83
- data/lib/yard/serializers/file_system_serializer.rb +123 -123
- data/lib/yard/serializers/process_serializer.rb +24 -24
- data/lib/yard/serializers/stdout_serializer.rb +34 -34
- data/lib/yard/serializers/yardoc_serializer.rb +152 -152
- data/lib/yard/server.rb +13 -13
- data/lib/yard/server/adapter.rb +100 -100
- data/lib/yard/server/commands/base.rb +209 -209
- data/lib/yard/server/commands/display_file_command.rb +29 -29
- data/lib/yard/server/commands/display_object_command.rb +65 -65
- data/lib/yard/server/commands/frames_command.rb +16 -16
- data/lib/yard/server/commands/library_command.rb +187 -187
- data/lib/yard/server/commands/library_index_command.rb +28 -28
- data/lib/yard/server/commands/list_command.rb +25 -25
- data/lib/yard/server/commands/root_request_command.rb +15 -15
- data/lib/yard/server/commands/search_command.rb +79 -79
- data/lib/yard/server/commands/static_file_command.rb +23 -23
- data/lib/yard/server/commands/static_file_helpers.rb +62 -62
- data/lib/yard/server/doc_server_helper.rb +91 -91
- data/lib/yard/server/doc_server_serializer.rb +39 -39
- data/lib/yard/server/library_version.rb +277 -277
- data/lib/yard/server/rack_adapter.rb +89 -89
- data/lib/yard/server/router.rb +187 -187
- data/lib/yard/server/static_caching.rb +46 -46
- data/lib/yard/server/templates/default/fulldoc/html/css/custom.css +127 -127
- data/lib/yard/server/templates/default/fulldoc/html/js/autocomplete.js +11 -11
- data/lib/yard/server/templates/default/layout/html/breadcrumb.erb +37 -37
- data/lib/yard/server/templates/default/layout/html/script_setup.erb +7 -7
- data/lib/yard/server/templates/default/layout/html/setup.rb +8 -8
- data/lib/yard/server/templates/default/method_details/html/permalink.erb +4 -4
- data/lib/yard/server/templates/default/method_details/html/setup.rb +5 -5
- data/lib/yard/server/templates/doc_server/library_list/html/headers.erb +8 -8
- data/lib/yard/server/templates/doc_server/library_list/html/library_list.erb +14 -14
- data/lib/yard/server/templates/doc_server/library_list/html/listing.erb +13 -13
- data/lib/yard/server/templates/doc_server/library_list/html/setup.rb +6 -6
- data/lib/yard/server/templates/doc_server/library_list/html/title.erb +2 -2
- data/lib/yard/server/templates/doc_server/processing/html/processing.erb +52 -52
- data/lib/yard/server/templates/doc_server/processing/html/setup.rb +4 -4
- data/lib/yard/server/templates/doc_server/search/html/search.erb +18 -18
- data/lib/yard/server/templates/doc_server/search/html/setup.rb +9 -9
- data/lib/yard/server/webrick_adapter.rb +45 -45
- data/lib/yard/tags/default_factory.rb +191 -191
- data/lib/yard/tags/default_tag.rb +13 -13
- data/lib/yard/tags/directives.rb +616 -616
- data/lib/yard/tags/library.rb +633 -633
- data/lib/yard/tags/option_tag.rb +13 -13
- data/lib/yard/tags/overload_tag.rb +71 -71
- data/lib/yard/tags/ref_tag.rb +8 -8
- data/lib/yard/tags/ref_tag_list.rb +28 -28
- data/lib/yard/tags/tag.rb +71 -71
- data/lib/yard/tags/tag_format_error.rb +7 -7
- data/lib/yard/tags/types_explainer.rb +162 -162
- data/lib/yard/templates/engine.rb +186 -186
- data/lib/yard/templates/erb_cache.rb +23 -23
- data/lib/yard/templates/helpers/base_helper.rb +215 -215
- data/lib/yard/templates/helpers/filter_helper.rb +27 -27
- data/lib/yard/templates/helpers/html_helper.rb +646 -642
- data/lib/yard/templates/helpers/html_syntax_highlight_helper.rb +78 -78
- data/lib/yard/templates/helpers/markup/rdoc_markdown.rb +23 -23
- data/lib/yard/templates/helpers/markup/rdoc_markup.rb +109 -109
- data/lib/yard/templates/helpers/markup_helper.rb +172 -172
- data/lib/yard/templates/helpers/method_helper.rb +75 -75
- data/lib/yard/templates/helpers/module_helper.rb +21 -21
- data/lib/yard/templates/helpers/text_helper.rb +112 -112
- data/lib/yard/templates/helpers/uml_helper.rb +47 -47
- data/lib/yard/templates/section.rb +105 -105
- data/lib/yard/templates/template.rb +418 -418
- data/lib/yard/templates/template_options.rb +92 -92
- data/lib/yard/verifier.rb +151 -151
- data/lib/yard/version.rb +3 -1
- data/spec/cli/command_parser_spec.rb +43 -43
- data/spec/cli/command_spec.rb +36 -36
- data/spec/cli/config_spec.rb +148 -148
- data/spec/cli/diff_spec.rb +254 -254
- data/spec/cli/display_spec.rb +30 -30
- data/spec/cli/gems_spec.rb +81 -81
- data/spec/cli/graph_spec.rb +18 -18
- data/spec/cli/help_spec.rb +22 -22
- data/spec/cli/i18n_spec.rb +107 -107
- data/spec/cli/list_spec.rb +8 -8
- data/spec/cli/markup_types_spec.rb +22 -22
- data/spec/cli/server_spec.rb +324 -324
- data/spec/cli/stats_spec.rb +96 -96
- data/spec/cli/yard_on_yard_spec.rb +38 -38
- data/spec/cli/yardoc_spec.rb +862 -849
- data/spec/cli/yri_spec.rb +101 -101
- data/spec/code_objects/base_spec.rb +470 -460
- data/spec/code_objects/class_object_spec.rb +226 -226
- data/spec/code_objects/code_object_list_spec.rb +36 -36
- data/spec/code_objects/constants_spec.rb +116 -116
- data/spec/code_objects/extra_file_object_spec.rb +160 -160
- data/spec/code_objects/macro_object_spec.rb +150 -150
- data/spec/code_objects/method_object_spec.rb +184 -184
- data/spec/code_objects/module_object_spec.rb +142 -142
- data/spec/code_objects/namespace_object_spec.rb +171 -171
- data/spec/code_objects/proxy_spec.rb +141 -141
- data/spec/code_objects/spec_helper.rb +3 -3
- data/spec/config_spec.rb +171 -171
- data/spec/core_ext/array_spec.rb +13 -13
- data/spec/core_ext/file_spec.rb +72 -72
- data/spec/core_ext/hash_spec.rb +14 -14
- data/spec/core_ext/insertion_spec.rb +37 -37
- data/spec/core_ext/module_spec.rb +15 -15
- data/spec/core_ext/string_spec.rb +42 -42
- data/spec/core_ext/symbol_hash_spec.rb +89 -89
- data/spec/docstring_parser_spec.rb +280 -262
- data/spec/docstring_spec.rb +373 -364
- data/spec/examples.txt +1875 -1871
- data/spec/handlers/alias_handler_spec.rb +82 -82
- data/spec/handlers/attribute_handler_spec.rb +96 -96
- data/spec/handlers/base_spec.rb +216 -216
- data/spec/handlers/c/alias_handler_spec.rb +34 -34
- data/spec/handlers/c/attribute_handler_spec.rb +41 -41
- data/spec/handlers/c/class_handler_spec.rb +78 -78
- data/spec/handlers/c/constant_handler_spec.rb +71 -71
- data/spec/handlers/c/init_handler_spec.rb +48 -48
- data/spec/handlers/c/method_handler_spec.rb +325 -325
- data/spec/handlers/c/mixin_handler_spec.rb +44 -44
- data/spec/handlers/c/module_handler_spec.rb +71 -71
- data/spec/handlers/c/override_comment_handler_spec.rb +47 -47
- data/spec/handlers/c/path_handler_spec.rb +36 -36
- data/spec/handlers/c/spec_helper.rb +23 -23
- data/spec/handlers/c/struct_handler_spec.rb +16 -16
- data/spec/handlers/class_condition_handler_spec.rb +87 -87
- data/spec/handlers/class_handler_spec.rb +247 -247
- data/spec/handlers/class_method_handler_shared_examples.rb +133 -133
- data/spec/handlers/class_variable_handler_spec.rb +12 -12
- data/spec/handlers/constant_handler_spec.rb +112 -112
- data/spec/handlers/decorator_handler_methods_spec.rb +393 -393
- data/spec/handlers/dsl_handler_spec.rb +219 -219
- data/spec/handlers/examples/alias_handler_001.rb.txt +45 -45
- data/spec/handlers/examples/attribute_handler_001.rb.txt +31 -31
- data/spec/handlers/examples/class_condition_handler_001.rb.txt +68 -68
- data/spec/handlers/examples/class_handler_001.rb.txt +120 -120
- data/spec/handlers/examples/class_variable_handler_001.rb.txt +9 -9
- data/spec/handlers/examples/constant_handler_001.rb.txt +35 -35
- data/spec/handlers/examples/dsl_handler_001.rb.txt +154 -154
- data/spec/handlers/examples/exception_handler_001.rb.txt +58 -58
- data/spec/handlers/examples/extend_handler_001.rb.txt +15 -15
- data/spec/handlers/examples/method_condition_handler_001.rb.txt +9 -9
- data/spec/handlers/examples/method_handler_001.rb.txt +128 -128
- data/spec/handlers/examples/mixin_handler_001.rb.txt +37 -37
- data/spec/handlers/examples/module_handler_001.rb.txt +29 -29
- data/spec/handlers/examples/private_constant_handler_001.rb.txt +8 -8
- data/spec/handlers/examples/process_handler_001.rb.txt +11 -11
- data/spec/handlers/examples/visibility_handler_001.rb.txt +35 -35
- data/spec/handlers/examples/yield_handler_001.rb.txt +54 -54
- data/spec/handlers/exception_handler_spec.rb +49 -49
- data/spec/handlers/extend_handler_spec.rb +24 -24
- data/spec/handlers/legacy_base_spec.rb +128 -128
- data/spec/handlers/method_condition_handler_spec.rb +15 -15
- data/spec/handlers/method_handler_spec.rb +190 -190
- data/spec/handlers/mixin_handler_spec.rb +56 -56
- data/spec/handlers/module_function_handler_spec.rb +106 -106
- data/spec/handlers/module_handler_spec.rb +35 -35
- data/spec/handlers/private_class_method_handler_spec.rb +11 -11
- data/spec/handlers/private_constant_handler_spec.rb +25 -25
- data/spec/handlers/processor_spec.rb +35 -35
- data/spec/handlers/public_class_method_handler_spec.rb +11 -11
- data/spec/handlers/ruby/base_spec.rb +95 -95
- data/spec/handlers/ruby/legacy/base_spec.rb +84 -84
- data/spec/handlers/spec_helper.rb +33 -33
- data/spec/handlers/visibility_handler_spec.rb +44 -44
- data/spec/handlers/yield_handler_spec.rb +52 -52
- data/spec/i18n/locale_spec.rb +81 -81
- data/spec/i18n/message_spec.rb +52 -52
- data/spec/i18n/messages_spec.rb +67 -67
- data/spec/i18n/pot_generator_spec.rb +295 -295
- data/spec/i18n/text_spec.rb +184 -184
- data/spec/logging_spec.rb +44 -44
- data/spec/options_spec.rb +171 -171
- data/spec/parser/base_spec.rb +24 -24
- data/spec/parser/c_parser_spec.rb +236 -223
- data/spec/parser/examples/array.c.txt +6267 -6267
- data/spec/parser/examples/example1.rb.txt +7 -7
- data/spec/parser/examples/extrafile.c.txt +8 -8
- data/spec/parser/examples/file.c.txt +28 -0
- data/spec/parser/examples/multifile.c.txt +22 -22
- data/spec/parser/examples/namespace.cpp.txt +68 -68
- data/spec/parser/examples/override.c.txt +424 -424
- data/spec/parser/examples/parse_in_order_001.rb.txt +2 -2
- data/spec/parser/examples/parse_in_order_002.rb.txt +1 -1
- data/spec/parser/examples/tag_handler_001.rb.txt +7 -7
- data/spec/parser/ruby/ast_node_spec.rb +33 -33
- data/spec/parser/ruby/legacy/statement_list_spec.rb +299 -299
- data/spec/parser/ruby/legacy/token_list_spec.rb +79 -79
- data/spec/parser/ruby/ruby_parser_spec.rb +508 -508
- data/spec/parser/ruby/token_resolver_spec.rb +165 -165
- data/spec/parser/source_parser_spec.rb +727 -727
- data/spec/parser/tag_parsing_spec.rb +17 -17
- data/spec/rake/yardoc_task_spec.rb +118 -118
- data/spec/registry_spec.rb +463 -463
- data/spec/registry_store_spec.rb +316 -316
- data/spec/rubygems/doc_manager_spec.rb +112 -112
- data/spec/serializers/data/serialized_yardoc/checksums +1 -1
- data/spec/serializers/file_system_serializer_spec.rb +145 -145
- data/spec/serializers/spec_helper.rb +2 -2
- data/spec/serializers/yardoc_serializer_spec.rb +78 -78
- data/spec/server/adapter_spec.rb +39 -39
- data/spec/server/commands/base_spec.rb +91 -91
- data/spec/server/commands/library_command_spec.rb +39 -39
- data/spec/server/doc_server_helper_spec.rb +72 -72
- data/spec/server/doc_server_serializer_spec.rb +60 -60
- data/spec/server/rack_adapter_spec.rb +21 -21
- data/spec/server/router_spec.rb +123 -123
- data/spec/server/spec_helper.rb +22 -22
- data/spec/server/static_caching_spec.rb +47 -47
- data/spec/server/webrick_servlet_spec.rb +20 -20
- data/spec/server_spec.rb +19 -19
- data/spec/spec_helper.rb +212 -212
- data/spec/tags/default_factory_spec.rb +168 -168
- data/spec/tags/default_tag_spec.rb +11 -11
- data/spec/tags/directives_spec.rb +463 -463
- data/spec/tags/library_spec.rb +48 -48
- data/spec/tags/overload_tag_spec.rb +53 -53
- data/spec/tags/ref_tag_list_spec.rb +53 -53
- data/spec/tags/types_explainer_spec.rb +203 -203
- data/spec/templates/class_spec.rb +45 -45
- data/spec/templates/constant_spec.rb +41 -41
- data/spec/templates/engine_spec.rb +131 -131
- data/spec/templates/examples/class001.html +308 -308
- data/spec/templates/examples/class001.txt +36 -36
- data/spec/templates/examples/class002.html +39 -39
- data/spec/templates/examples/constant001.txt +24 -24
- data/spec/templates/examples/constant002.txt +6 -6
- data/spec/templates/examples/constant003.txt +10 -10
- data/spec/templates/examples/method001.html +137 -137
- data/spec/templates/examples/method001.txt +35 -35
- data/spec/templates/examples/method002.html +91 -91
- data/spec/templates/examples/method002.txt +20 -20
- data/spec/templates/examples/method003.html +165 -165
- data/spec/templates/examples/method003.txt +45 -45
- data/spec/templates/examples/method004.html +48 -48
- data/spec/templates/examples/method004.txt +10 -10
- data/spec/templates/examples/method005.html +105 -105
- data/spec/templates/examples/method005.txt +33 -33
- data/spec/templates/examples/method006.html +107 -107
- data/spec/templates/examples/method006.txt +20 -20
- data/spec/templates/examples/module001.dot +33 -33
- data/spec/templates/examples/module001.html +833 -833
- data/spec/templates/examples/module001.txt +33 -33
- data/spec/templates/examples/module002.html +341 -341
- data/spec/templates/examples/module003.html +202 -202
- data/spec/templates/examples/module004.html +394 -394
- data/spec/templates/examples/module005.html +81 -81
- data/spec/templates/examples/tag001.txt +82 -82
- data/spec/templates/helpers/base_helper_spec.rb +171 -171
- data/spec/templates/helpers/html_helper_spec.rb +668 -653
- data/spec/templates/helpers/html_syntax_highlight_helper_spec.rb +65 -65
- data/spec/templates/helpers/markup/rdoc_markup_spec.rb +84 -84
- data/spec/templates/helpers/markup_helper_spec.rb +136 -136
- data/spec/templates/helpers/method_helper_spec.rb +107 -107
- data/spec/templates/helpers/module_helper_spec.rb +35 -35
- data/spec/templates/helpers/shared_signature_examples.rb +126 -126
- data/spec/templates/helpers/text_helper_spec.rb +65 -65
- data/spec/templates/method_spec.rb +118 -118
- data/spec/templates/module_spec.rb +203 -203
- data/spec/templates/onefile_spec.rb +66 -66
- data/spec/templates/section_spec.rb +144 -144
- data/spec/templates/spec_helper.rb +76 -76
- data/spec/templates/tag_spec.rb +52 -52
- data/spec/templates/template_spec.rb +410 -410
- data/spec/verifier_spec.rb +106 -106
- data/templates/default/class/dot/setup.rb +7 -7
- data/templates/default/class/dot/superklass.erb +2 -2
- data/templates/default/class/html/constructor_details.erb +8 -8
- data/templates/default/class/html/setup.rb +2 -2
- data/templates/default/class/html/subclasses.erb +4 -4
- data/templates/default/class/setup.rb +36 -36
- data/templates/default/class/text/setup.rb +12 -12
- data/templates/default/class/text/subclasses.erb +5 -5
- data/templates/default/constant/text/header.erb +11 -11
- data/templates/default/constant/text/setup.rb +4 -4
- data/templates/default/docstring/html/abstract.erb +4 -4
- data/templates/default/docstring/html/deprecated.erb +1 -1
- data/templates/default/docstring/html/index.erb +5 -5
- data/templates/default/docstring/html/note.erb +6 -6
- data/templates/default/docstring/html/private.erb +4 -4
- data/templates/default/docstring/html/text.erb +1 -1
- data/templates/default/docstring/html/todo.erb +6 -6
- data/templates/default/docstring/setup.rb +52 -52
- data/templates/default/docstring/text/abstract.erb +2 -2
- data/templates/default/docstring/text/deprecated.erb +2 -2
- data/templates/default/docstring/text/index.erb +2 -2
- data/templates/default/docstring/text/note.erb +3 -3
- data/templates/default/docstring/text/private.erb +2 -2
- data/templates/default/docstring/text/text.erb +1 -1
- data/templates/default/docstring/text/todo.erb +3 -3
- data/templates/default/fulldoc/html/css/full_list.css +58 -58
- data/templates/default/fulldoc/html/css/style.css +496 -496
- data/templates/default/fulldoc/html/frames.erb +17 -17
- data/templates/default/fulldoc/html/full_list.erb +37 -37
- data/templates/default/fulldoc/html/full_list_class.erb +2 -2
- data/templates/default/fulldoc/html/full_list_file.erb +7 -7
- data/templates/default/fulldoc/html/full_list_method.erb +10 -10
- data/templates/default/fulldoc/html/js/app.js +292 -292
- data/templates/default/fulldoc/html/js/full_list.js +216 -216
- data/templates/default/fulldoc/html/js/jquery.js +3 -3
- data/templates/default/fulldoc/html/setup.rb +241 -241
- data/templates/default/layout/dot/header.erb +5 -5
- data/templates/default/layout/dot/setup.rb +15 -15
- data/templates/default/layout/html/breadcrumb.erb +11 -11
- data/templates/default/layout/html/files.erb +11 -11
- data/templates/default/layout/html/footer.erb +5 -5
- data/templates/default/layout/html/headers.erb +15 -15
- data/templates/default/layout/html/index.erb +2 -2
- data/templates/default/layout/html/layout.erb +23 -23
- data/templates/default/layout/html/listing.erb +4 -4
- data/templates/default/layout/html/objects.erb +32 -32
- data/templates/default/layout/html/script_setup.erb +4 -4
- data/templates/default/layout/html/search.erb +12 -12
- data/templates/default/layout/html/setup.rb +89 -89
- data/templates/default/method/html/header.erb +16 -16
- data/templates/default/method/setup.rb +4 -4
- data/templates/default/method_details/html/header.erb +2 -2
- data/templates/default/method_details/html/method_signature.erb +24 -24
- data/templates/default/method_details/html/source.erb +9 -9
- data/templates/default/method_details/setup.rb +11 -11
- data/templates/default/method_details/text/header.erb +10 -10
- data/templates/default/method_details/text/method_signature.erb +12 -12
- data/templates/default/method_details/text/setup.rb +11 -11
- data/templates/default/module/dot/child.erb +1 -1
- data/templates/default/module/dot/dependencies.erb +2 -2
- data/templates/default/module/dot/header.erb +6 -6
- data/templates/default/module/dot/info.erb +13 -13
- data/templates/default/module/dot/setup.rb +15 -15
- data/templates/default/module/html/attribute_details.erb +10 -10
- data/templates/default/module/html/attribute_summary.erb +8 -8
- data/templates/default/module/html/box_info.erb +43 -43
- data/templates/default/module/html/children.erb +8 -8
- data/templates/default/module/html/constant_summary.erb +17 -17
- data/templates/default/module/html/defines.erb +2 -2
- data/templates/default/module/html/header.erb +5 -5
- data/templates/default/module/html/inherited_attributes.erb +14 -14
- data/templates/default/module/html/inherited_constants.erb +8 -8
- data/templates/default/module/html/inherited_methods.erb +18 -18
- data/templates/default/module/html/item_summary.erb +40 -40
- data/templates/default/module/html/method_details_list.erb +9 -9
- data/templates/default/module/html/method_summary.erb +13 -13
- data/templates/default/module/html/methodmissing.erb +12 -12
- data/templates/default/module/setup.rb +167 -167
- data/templates/default/module/text/children.erb +9 -9
- data/templates/default/module/text/class_meths_list.erb +7 -7
- data/templates/default/module/text/extends.erb +7 -7
- data/templates/default/module/text/header.erb +7 -7
- data/templates/default/module/text/includes.erb +7 -7
- data/templates/default/module/text/instance_meths_list.erb +7 -7
- data/templates/default/module/text/setup.rb +13 -13
- data/templates/default/onefile/html/files.erb +4 -4
- data/templates/default/onefile/html/headers.erb +6 -6
- data/templates/default/onefile/html/layout.erb +17 -17
- data/templates/default/onefile/html/readme.erb +2 -2
- data/templates/default/onefile/html/setup.rb +62 -62
- data/templates/default/root/dot/child.erb +2 -2
- data/templates/default/root/dot/setup.rb +6 -6
- data/templates/default/root/html/setup.rb +2 -2
- data/templates/default/tags/html/example.erb +10 -10
- data/templates/default/tags/html/index.erb +2 -2
- data/templates/default/tags/html/option.erb +24 -24
- data/templates/default/tags/html/overload.erb +13 -13
- data/templates/default/tags/html/see.erb +7 -7
- data/templates/default/tags/html/tag.erb +20 -20
- data/templates/default/tags/setup.rb +57 -57
- data/templates/default/tags/text/example.erb +12 -12
- data/templates/default/tags/text/index.erb +1 -1
- data/templates/default/tags/text/option.erb +20 -20
- data/templates/default/tags/text/overload.erb +19 -19
- data/templates/default/tags/text/see.erb +11 -11
- data/templates/default/tags/text/tag.erb +13 -13
- data/templates/guide/class/html/setup.rb +2 -2
- data/templates/guide/docstring/html/setup.rb +2 -2
- data/templates/guide/fulldoc/html/css/style.css +108 -108
- data/templates/guide/fulldoc/html/js/app.js +33 -33
- data/templates/guide/fulldoc/html/setup.rb +74 -74
- data/templates/guide/layout/html/layout.erb +81 -81
- data/templates/guide/layout/html/setup.rb +25 -25
- data/templates/guide/method/html/header.erb +17 -17
- data/templates/guide/method/html/setup.rb +22 -22
- data/templates/guide/module/html/header.erb +6 -6
- data/templates/guide/module/html/method_list.erb +4 -4
- data/templates/guide/module/html/setup.rb +27 -27
- data/templates/guide/onefile/html/files.erb +4 -4
- data/templates/guide/onefile/html/setup.rb +6 -6
- data/templates/guide/onefile/html/toc.erb +3 -3
- data/templates/guide/tags/html/setup.rb +9 -9
- data/yard.gemspec +43 -43
- metadata +4 -4
@@ -1,78 +1,78 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
module YARD
|
3
|
-
module Templates
|
4
|
-
module Helpers
|
5
|
-
# Helper methods for syntax highlighting.
|
6
|
-
module HtmlSyntaxHighlightHelper
|
7
|
-
include ModuleHelper
|
8
|
-
|
9
|
-
# Highlights Ruby source
|
10
|
-
# @param [String] source the Ruby source code
|
11
|
-
# @return [String] the highlighted Ruby source
|
12
|
-
def html_syntax_highlight_ruby(source)
|
13
|
-
if Parser::SourceParser.parser_type == :ruby
|
14
|
-
html_syntax_highlight_ruby_ripper(source)
|
15
|
-
else
|
16
|
-
html_syntax_highlight_ruby_legacy(source)
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
private
|
21
|
-
|
22
|
-
def html_syntax_highlight_ruby_ripper(source)
|
23
|
-
resolver = Parser::Ruby::TokenResolver.new(source, object)
|
24
|
-
output = String.new("")
|
25
|
-
resolver.each do |s, token_obj|
|
26
|
-
token_obj = clean_token_object(token_obj)
|
27
|
-
output << "<span class='tstring'>" if [:tstring_beg, :regexp_beg].include?(s[0])
|
28
|
-
case s.first
|
29
|
-
when :nl, :ignored_nl, :sp
|
30
|
-
output << h(s[1])
|
31
|
-
when :ident, :const
|
32
|
-
klass = s.first == :ident ? "id identifier rubyid_#{h(s[1])}" : s.first
|
33
|
-
val = token_obj ? link_object(token_obj, s[1]) : h(s[1])
|
34
|
-
output << "<span class='#{klass}'>#{val}</span>"
|
35
|
-
else
|
36
|
-
output << "<span class='#{s.first}'>#{h(s[1])}</span>"
|
37
|
-
end
|
38
|
-
output << "</span>" if [:tstring_end, :regexp_end].include?(s[0])
|
39
|
-
end
|
40
|
-
output
|
41
|
-
rescue Parser::ParserSyntaxError
|
42
|
-
h(source)
|
43
|
-
end
|
44
|
-
|
45
|
-
def html_syntax_highlight_ruby_legacy(source)
|
46
|
-
tokenlist = Parser::Ruby::Legacy::TokenList.new(source)
|
47
|
-
tokenlist.map do |s|
|
48
|
-
prettyclass = s.class.class_name.sub(/^Tk/, '').downcase
|
49
|
-
prettysuper = s.class.superclass.class_name.sub(/^Tk/, '').downcase
|
50
|
-
|
51
|
-
case s
|
52
|
-
when Parser::Ruby::Legacy::RubyToken::TkWhitespace, Parser::Ruby::Legacy::RubyToken::TkUnknownChar
|
53
|
-
h s.text
|
54
|
-
when Parser::Ruby::Legacy::RubyToken::TkId
|
55
|
-
prettyval = h(s.text)
|
56
|
-
"<span class='rubyid_#{prettyval} #{prettyclass} #{prettysuper}'>#{prettyval}</span>"
|
57
|
-
else
|
58
|
-
"<span class='#{prettyclass} #{prettysuper}'>#{h s.text}</span>"
|
59
|
-
end
|
60
|
-
end.join
|
61
|
-
end
|
62
|
-
|
63
|
-
def clean_token_object(token_obj)
|
64
|
-
return unless token_obj
|
65
|
-
if token_obj == object
|
66
|
-
token_obj = nil
|
67
|
-
elsif token_obj.is_a?(CodeObjects::MethodObject)
|
68
|
-
token_obj = prune_method_listing([token_obj], false).first
|
69
|
-
else
|
70
|
-
token_obj = run_verifier([token_obj]).first
|
71
|
-
end
|
72
|
-
|
73
|
-
token_obj
|
74
|
-
end
|
75
|
-
end
|
76
|
-
end
|
77
|
-
end
|
78
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
module YARD
|
3
|
+
module Templates
|
4
|
+
module Helpers
|
5
|
+
# Helper methods for syntax highlighting.
|
6
|
+
module HtmlSyntaxHighlightHelper
|
7
|
+
include ModuleHelper
|
8
|
+
|
9
|
+
# Highlights Ruby source
|
10
|
+
# @param [String] source the Ruby source code
|
11
|
+
# @return [String] the highlighted Ruby source
|
12
|
+
def html_syntax_highlight_ruby(source)
|
13
|
+
if Parser::SourceParser.parser_type == :ruby
|
14
|
+
html_syntax_highlight_ruby_ripper(source)
|
15
|
+
else
|
16
|
+
html_syntax_highlight_ruby_legacy(source)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
private
|
21
|
+
|
22
|
+
def html_syntax_highlight_ruby_ripper(source)
|
23
|
+
resolver = Parser::Ruby::TokenResolver.new(source, object)
|
24
|
+
output = String.new("")
|
25
|
+
resolver.each do |s, token_obj|
|
26
|
+
token_obj = clean_token_object(token_obj)
|
27
|
+
output << "<span class='tstring'>" if [:tstring_beg, :regexp_beg].include?(s[0])
|
28
|
+
case s.first
|
29
|
+
when :nl, :ignored_nl, :sp
|
30
|
+
output << h(s[1])
|
31
|
+
when :ident, :const
|
32
|
+
klass = s.first == :ident ? "id identifier rubyid_#{h(s[1])}" : s.first
|
33
|
+
val = token_obj ? link_object(token_obj, s[1]) : h(s[1])
|
34
|
+
output << "<span class='#{klass}'>#{val}</span>"
|
35
|
+
else
|
36
|
+
output << "<span class='#{s.first}'>#{h(s[1])}</span>"
|
37
|
+
end
|
38
|
+
output << "</span>" if [:tstring_end, :regexp_end].include?(s[0])
|
39
|
+
end
|
40
|
+
output
|
41
|
+
rescue Parser::ParserSyntaxError
|
42
|
+
h(source)
|
43
|
+
end
|
44
|
+
|
45
|
+
def html_syntax_highlight_ruby_legacy(source)
|
46
|
+
tokenlist = Parser::Ruby::Legacy::TokenList.new(source)
|
47
|
+
tokenlist.map do |s|
|
48
|
+
prettyclass = s.class.class_name.sub(/^Tk/, '').downcase
|
49
|
+
prettysuper = s.class.superclass.class_name.sub(/^Tk/, '').downcase
|
50
|
+
|
51
|
+
case s
|
52
|
+
when Parser::Ruby::Legacy::RubyToken::TkWhitespace, Parser::Ruby::Legacy::RubyToken::TkUnknownChar
|
53
|
+
h s.text
|
54
|
+
when Parser::Ruby::Legacy::RubyToken::TkId
|
55
|
+
prettyval = h(s.text)
|
56
|
+
"<span class='rubyid_#{prettyval} #{prettyclass} #{prettysuper}'>#{prettyval}</span>"
|
57
|
+
else
|
58
|
+
"<span class='#{prettyclass} #{prettysuper}'>#{h s.text}</span>"
|
59
|
+
end
|
60
|
+
end.join
|
61
|
+
end
|
62
|
+
|
63
|
+
def clean_token_object(token_obj)
|
64
|
+
return unless token_obj
|
65
|
+
if token_obj == object
|
66
|
+
token_obj = nil
|
67
|
+
elsif token_obj.is_a?(CodeObjects::MethodObject)
|
68
|
+
token_obj = prune_method_listing([token_obj], false).first
|
69
|
+
else
|
70
|
+
token_obj = run_verifier([token_obj]).first
|
71
|
+
end
|
72
|
+
|
73
|
+
token_obj
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
@@ -1,23 +1,23 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
module YARD
|
3
|
-
module Templates
|
4
|
-
module Helpers
|
5
|
-
module Markup
|
6
|
-
begin require 'rdoc'; rescue LoadError; nil end
|
7
|
-
begin
|
8
|
-
require 'rdoc/markdown'
|
9
|
-
rescue LoadError
|
10
|
-
raise NameError, "could not load RDoc Markdown support (rdoc is too old)"
|
11
|
-
end
|
12
|
-
|
13
|
-
class RDocMarkdown < RDocMarkup
|
14
|
-
def initialize(text)
|
15
|
-
super RDoc::Markdown.new.parse(text)
|
16
|
-
end
|
17
|
-
|
18
|
-
def fix_typewriter(html) html end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
module YARD
|
3
|
+
module Templates
|
4
|
+
module Helpers
|
5
|
+
module Markup
|
6
|
+
begin require 'rdoc'; rescue LoadError; nil end
|
7
|
+
begin
|
8
|
+
require 'rdoc/markdown'
|
9
|
+
rescue LoadError
|
10
|
+
raise NameError, "could not load RDoc Markdown support (rdoc is too old)"
|
11
|
+
end
|
12
|
+
|
13
|
+
class RDocMarkdown < RDocMarkup
|
14
|
+
def initialize(text)
|
15
|
+
super RDoc::Markdown.new.parse(text)
|
16
|
+
end
|
17
|
+
|
18
|
+
def fix_typewriter(html) html end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -1,109 +1,109 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
require 'thread'
|
3
|
-
|
4
|
-
module YARD
|
5
|
-
module Templates
|
6
|
-
module Helpers
|
7
|
-
module Markup
|
8
|
-
begin require 'rdoc'; rescue LoadError; nil end
|
9
|
-
begin
|
10
|
-
require 'rdoc/markup'
|
11
|
-
require 'rdoc/markup/to_html'
|
12
|
-
class RDocMarkup; MARKUP = RDoc::Markup end
|
13
|
-
class RDocMarkupToHtml < RDoc::Markup::ToHtml
|
14
|
-
if defined?(RDoc::VERSION) && RDoc::VERSION >= '4.0.0' &&
|
15
|
-
defined?(RDoc::Options)
|
16
|
-
def initialize
|
17
|
-
options = RDoc::Options.new
|
18
|
-
options.pipe = true
|
19
|
-
super(options)
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
23
|
-
rescue LoadError
|
24
|
-
begin
|
25
|
-
require 'rdoc/markup/simple_markup'
|
26
|
-
require 'rdoc/markup/simple_markup/to_html'
|
27
|
-
class RDocMarkup; MARKUP = SM::SimpleMarkup end
|
28
|
-
class RDocMarkupToHtml < SM::ToHtml; end
|
29
|
-
rescue LoadError
|
30
|
-
raise NameError, "could not load RDocMarkup (rdoc is not installed)"
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
class RDocMarkup
|
35
|
-
attr_accessor :from_path
|
36
|
-
|
37
|
-
@@formatter = nil
|
38
|
-
@@markup = nil
|
39
|
-
@@mutex = nil
|
40
|
-
|
41
|
-
def initialize(text)
|
42
|
-
@text = text
|
43
|
-
|
44
|
-
@@formatter ||= RDocMarkupToHtml.new
|
45
|
-
@@markup ||= MARKUP.new
|
46
|
-
@@mutex ||= Mutex.new
|
47
|
-
end
|
48
|
-
|
49
|
-
def to_html
|
50
|
-
html = nil
|
51
|
-
@@mutex.synchronize do
|
52
|
-
@@formatter.from_path = from_path
|
53
|
-
html = @@markup.convert(@text, @@formatter)
|
54
|
-
end
|
55
|
-
html = fix_dash_dash(html)
|
56
|
-
html = fix_typewriter(html)
|
57
|
-
html
|
58
|
-
end
|
59
|
-
|
60
|
-
private
|
61
|
-
|
62
|
-
# Fixes RDoc behaviour with ++ only supporting alphanumeric text.
|
63
|
-
#
|
64
|
-
# @todo Refactor into own SimpleMarkup subclass
|
65
|
-
def fix_typewriter(text)
|
66
|
-
code_tags = 0
|
67
|
-
text.gsub(%r{<(/)?(pre|code|tt)|(\s|^|>)\+(?! )([^\n\+]{1,900})(?! )\+}) do |str|
|
68
|
-
closed = $1
|
69
|
-
tag = $2
|
70
|
-
first_text = $3
|
71
|
-
type_text = $4
|
72
|
-
|
73
|
-
if tag
|
74
|
-
code_tags += (closed ? -1 : 1)
|
75
|
-
next str
|
76
|
-
end
|
77
|
-
next str unless code_tags == 0
|
78
|
-
first_text + '<tt>' + type_text + '</tt>'
|
79
|
-
end
|
80
|
-
end
|
81
|
-
|
82
|
-
# Don't allow -- to turn into — element. The chances of this being
|
83
|
-
# some --option is far more likely than the typographical meaning.
|
84
|
-
#
|
85
|
-
# @todo Refactor into own SimpleMarkup subclass
|
86
|
-
def fix_dash_dash(text)
|
87
|
-
text.gsub(/—(?=\S)/, '--')
|
88
|
-
end
|
89
|
-
end
|
90
|
-
|
91
|
-
class RDocMarkupToHtml
|
92
|
-
attr_accessor :from_path
|
93
|
-
|
94
|
-
# Disable auto-link of URLs
|
95
|
-
def handle_special_HYPERLINK(special) # rubocop:disable Style/MethodName
|
96
|
-
@hyperlink ? special.text : super
|
97
|
-
end
|
98
|
-
|
99
|
-
def accept_paragraph(*args)
|
100
|
-
par = args.last
|
101
|
-
text = par.respond_to?(:txt) ? par.txt : par.text
|
102
|
-
@hyperlink = text =~ /\{(https?:|mailto:|link:|www\.)/ ? true : false
|
103
|
-
super
|
104
|
-
end
|
105
|
-
end
|
106
|
-
end
|
107
|
-
end
|
108
|
-
end
|
109
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
require 'thread'
|
3
|
+
|
4
|
+
module YARD
|
5
|
+
module Templates
|
6
|
+
module Helpers
|
7
|
+
module Markup
|
8
|
+
begin require 'rdoc'; rescue LoadError; nil end
|
9
|
+
begin
|
10
|
+
require 'rdoc/markup'
|
11
|
+
require 'rdoc/markup/to_html'
|
12
|
+
class RDocMarkup; MARKUP = RDoc::Markup end
|
13
|
+
class RDocMarkupToHtml < RDoc::Markup::ToHtml
|
14
|
+
if defined?(RDoc::VERSION) && RDoc::VERSION >= '4.0.0' &&
|
15
|
+
defined?(RDoc::Options)
|
16
|
+
def initialize
|
17
|
+
options = RDoc::Options.new
|
18
|
+
options.pipe = true
|
19
|
+
super(options)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
rescue LoadError
|
24
|
+
begin
|
25
|
+
require 'rdoc/markup/simple_markup'
|
26
|
+
require 'rdoc/markup/simple_markup/to_html'
|
27
|
+
class RDocMarkup; MARKUP = SM::SimpleMarkup end
|
28
|
+
class RDocMarkupToHtml < SM::ToHtml; end
|
29
|
+
rescue LoadError
|
30
|
+
raise NameError, "could not load RDocMarkup (rdoc is not installed)"
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
class RDocMarkup
|
35
|
+
attr_accessor :from_path
|
36
|
+
|
37
|
+
@@formatter = nil
|
38
|
+
@@markup = nil
|
39
|
+
@@mutex = nil
|
40
|
+
|
41
|
+
def initialize(text)
|
42
|
+
@text = text
|
43
|
+
|
44
|
+
@@formatter ||= RDocMarkupToHtml.new
|
45
|
+
@@markup ||= MARKUP.new
|
46
|
+
@@mutex ||= Mutex.new
|
47
|
+
end
|
48
|
+
|
49
|
+
def to_html
|
50
|
+
html = nil
|
51
|
+
@@mutex.synchronize do
|
52
|
+
@@formatter.from_path = from_path
|
53
|
+
html = @@markup.convert(@text, @@formatter)
|
54
|
+
end
|
55
|
+
html = fix_dash_dash(html)
|
56
|
+
html = fix_typewriter(html)
|
57
|
+
html
|
58
|
+
end
|
59
|
+
|
60
|
+
private
|
61
|
+
|
62
|
+
# Fixes RDoc behaviour with ++ only supporting alphanumeric text.
|
63
|
+
#
|
64
|
+
# @todo Refactor into own SimpleMarkup subclass
|
65
|
+
def fix_typewriter(text)
|
66
|
+
code_tags = 0
|
67
|
+
text.gsub(%r{<(/)?(pre|code|tt)|(\s|^|>)\+(?! )([^\n\+]{1,900})(?! )\+}) do |str|
|
68
|
+
closed = $1
|
69
|
+
tag = $2
|
70
|
+
first_text = $3
|
71
|
+
type_text = $4
|
72
|
+
|
73
|
+
if tag
|
74
|
+
code_tags += (closed ? -1 : 1)
|
75
|
+
next str
|
76
|
+
end
|
77
|
+
next str unless code_tags == 0
|
78
|
+
first_text + '<tt>' + type_text + '</tt>'
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
# Don't allow -- to turn into — element. The chances of this being
|
83
|
+
# some --option is far more likely than the typographical meaning.
|
84
|
+
#
|
85
|
+
# @todo Refactor into own SimpleMarkup subclass
|
86
|
+
def fix_dash_dash(text)
|
87
|
+
text.gsub(/—(?=\S)/, '--')
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
91
|
+
class RDocMarkupToHtml
|
92
|
+
attr_accessor :from_path
|
93
|
+
|
94
|
+
# Disable auto-link of URLs
|
95
|
+
def handle_special_HYPERLINK(special) # rubocop:disable Style/MethodName
|
96
|
+
@hyperlink ? special.text : super
|
97
|
+
end
|
98
|
+
|
99
|
+
def accept_paragraph(*args)
|
100
|
+
par = args.last
|
101
|
+
text = par.respond_to?(:txt) ? par.txt : par.text
|
102
|
+
@hyperlink = text =~ /\{(https?:|mailto:|link:|www\.)/ ? true : false
|
103
|
+
super
|
104
|
+
end
|
105
|
+
end
|
106
|
+
end
|
107
|
+
end
|
108
|
+
end
|
109
|
+
end
|
@@ -1,172 +1,172 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
require 'rubygems'
|
3
|
-
|
4
|
-
module YARD
|
5
|
-
module Templates::Helpers
|
6
|
-
# Helper methods for loading and managing markup types.
|
7
|
-
module MarkupHelper
|
8
|
-
class << self
|
9
|
-
# Clears the markup provider cache information. Mainly used for testing.
|
10
|
-
# @return [void]
|
11
|
-
def clear_markup_cache
|
12
|
-
self.markup_cache = {}
|
13
|
-
end
|
14
|
-
|
15
|
-
# @return [Hash{Symbol=>{(:provider,:class)=>Object}}] the cached markup providers
|
16
|
-
# @private
|
17
|
-
# @since 0.6.4
|
18
|
-
attr_accessor :markup_cache
|
19
|
-
end
|
20
|
-
|
21
|
-
MarkupHelper.clear_markup_cache
|
22
|
-
|
23
|
-
# The default list of markup providers for each markup type
|
24
|
-
MARKUP_PROVIDERS = {
|
25
|
-
:markdown => [
|
26
|
-
{:lib => :redcarpet, :const => 'RedcarpetCompat'},
|
27
|
-
{:lib => :rdiscount, :const => 'RDiscount'},
|
28
|
-
{:lib => :kramdown, :const => 'Kramdown::Document'},
|
29
|
-
{:lib => :bluecloth, :const => 'BlueCloth'},
|
30
|
-
{:lib => :maruku, :const => 'Maruku'},
|
31
|
-
{:lib => :'rpeg-markdown', :const => 'PEGMarkdown'},
|
32
|
-
{:lib => :rdoc, :const => 'YARD::Templates::Helpers::Markup::RDocMarkdown'}
|
33
|
-
],
|
34
|
-
:textile => [
|
35
|
-
{:lib => :redcloth, :const => 'RedCloth'}
|
36
|
-
],
|
37
|
-
:textile_strict => [
|
38
|
-
{:lib => :redcloth, :const => 'RedCloth'}
|
39
|
-
],
|
40
|
-
:rdoc => [
|
41
|
-
{:lib => nil, :const => 'YARD::Templates::Helpers::Markup::RDocMarkup'}
|
42
|
-
],
|
43
|
-
:org => [
|
44
|
-
{:lib => :'org-ruby', :const => 'Orgmode::Parser'}
|
45
|
-
],
|
46
|
-
:asciidoc => [
|
47
|
-
{:lib => :asciidoctor, :const => 'Asciidoctor'}
|
48
|
-
],
|
49
|
-
:ruby => [],
|
50
|
-
:text => [],
|
51
|
-
:pre => [],
|
52
|
-
:html => [],
|
53
|
-
:none => []
|
54
|
-
}
|
55
|
-
|
56
|
-
# Returns a list of extensions for various markup types. To register
|
57
|
-
# extensions for a type, add them to the array of extensions for the
|
58
|
-
# type.
|
59
|
-
# @since 0.6.0
|
60
|
-
MARKUP_EXTENSIONS = {
|
61
|
-
:html => ['htm', 'html', 'shtml'],
|
62
|
-
:text => ['txt'],
|
63
|
-
:textile => ['textile', 'txtile'],
|
64
|
-
:asciidoc => ['asciidoc', 'ad', 'adoc', 'asc'],
|
65
|
-
:markdown => ['markdown', 'md', 'mdown', 'mkd'],
|
66
|
-
:rdoc => ['rdoc'],
|
67
|
-
:org => ['org'],
|
68
|
-
:ruby => ['rb', 'ru']
|
69
|
-
}
|
70
|
-
|
71
|
-
# Contains the Regexp object that matches the shebang line of extra
|
72
|
-
# files to detect the markup type.
|
73
|
-
MARKUP_FILE_SHEBANG = /\A#!(\S+)\s*$/
|
74
|
-
|
75
|
-
# Attempts to load the first valid markup provider in {MARKUP_PROVIDERS}.
|
76
|
-
# If a provider is specified, immediately try to load it.
|
77
|
-
#
|
78
|
-
# On success this sets `@markup_provider` and `@markup_class` to
|
79
|
-
# the provider name and library constant class/module respectively for
|
80
|
-
# the loaded provider.
|
81
|
-
#
|
82
|
-
# On failure this method will inform the user that no provider could be
|
83
|
-
# found and exit the program.
|
84
|
-
#
|
85
|
-
# @return [Boolean] whether the markup provider was successfully loaded.
|
86
|
-
def load_markup_provider(type = options.markup)
|
87
|
-
return true if MarkupHelper.markup_cache[type]
|
88
|
-
MarkupHelper.markup_cache[type] ||= {}
|
89
|
-
|
90
|
-
providers = MARKUP_PROVIDERS[type.to_sym]
|
91
|
-
return true if providers && providers.empty?
|
92
|
-
if providers && options.markup_provider
|
93
|
-
providers = providers.select {|p| p[:lib] == options.markup_provider }
|
94
|
-
end
|
95
|
-
|
96
|
-
if providers.nil? || providers.empty?
|
97
|
-
log.error "Invalid markup type '#{type}' or markup provider " \
|
98
|
-
"(#{options.markup_provider}) is not registered."
|
99
|
-
return false
|
100
|
-
end
|
101
|
-
|
102
|
-
# Search for provider, return the library class name as const if found
|
103
|
-
providers.each do |provider|
|
104
|
-
begin require provider[:lib].to_s; rescue LoadError; next end if provider[:lib]
|
105
|
-
begin klass = eval("::" + provider[:const]); rescue NameError; next end # rubocop:disable Lint/Eval
|
106
|
-
MarkupHelper.markup_cache[type][:provider] = provider[:lib] # Cache the provider
|
107
|
-
MarkupHelper.markup_cache[type][:class] = klass
|
108
|
-
return true
|
109
|
-
end
|
110
|
-
|
111
|
-
# Show error message telling user to install first potential provider
|
112
|
-
lib = providers.first[:lib] || type
|
113
|
-
log.error "Missing '#{lib}' gem for #{type.to_s.capitalize} formatting. Install it with `gem install #{lib}`"
|
114
|
-
false
|
115
|
-
end
|
116
|
-
|
117
|
-
# Checks for a shebang or looks at the file extension to determine
|
118
|
-
# the markup type for the file contents. File extensions are registered
|
119
|
-
# for a markup type in {MARKUP_EXTENSIONS}.
|
120
|
-
#
|
121
|
-
# A shebang should be on the first line of a file and be in the form:
|
122
|
-
#
|
123
|
-
# #!markup_type
|
124
|
-
#
|
125
|
-
# Standard markup types are text, html, rdoc, markdown, textile
|
126
|
-
#
|
127
|
-
# @param [String] contents Unused. Was necessary prior to 0.7.0.
|
128
|
-
# Newer versions of YARD use {CodeObjects::ExtraFileObject#contents}
|
129
|
-
# @return [Symbol] the markup type recognized for the file
|
130
|
-
# @see MARKUP_EXTENSIONS
|
131
|
-
# @since 0.6.0
|
132
|
-
def markup_for_file(contents, filename)
|
133
|
-
return $1.to_sym if contents && contents =~ MARKUP_FILE_SHEBANG # Shebang support
|
134
|
-
|
135
|
-
ext = (File.extname(filename)[1..-1] || '').downcase
|
136
|
-
MARKUP_EXTENSIONS.each do |type, exts|
|
137
|
-
return type if exts.include?(ext)
|
138
|
-
end
|
139
|
-
options.markup
|
140
|
-
end
|
141
|
-
|
142
|
-
# Strips any shebang lines on the file contents that pertain to
|
143
|
-
# markup or preprocessing data.
|
144
|
-
#
|
145
|
-
# @deprecated Use {CodeObjects::ExtraFileObject#contents} instead
|
146
|
-
# @return [String] the file contents minus any preprocessing tags
|
147
|
-
# @since 0.6.0
|
148
|
-
def markup_file_contents(contents)
|
149
|
-
contents =~ MARKUP_FILE_SHEBANG ? $' : contents
|
150
|
-
end
|
151
|
-
|
152
|
-
# Gets the markup provider class/module constant for a markup type
|
153
|
-
# Call {#load_markup_provider} before using this method.
|
154
|
-
#
|
155
|
-
# @param [Symbol] type the markup type (:rdoc, :markdown, etc.)
|
156
|
-
# @return [Class] the markup class
|
157
|
-
def markup_class(type = options.markup)
|
158
|
-
load_markup_provider(type)
|
159
|
-
MarkupHelper.markup_cache[type][:class]
|
160
|
-
end
|
161
|
-
|
162
|
-
# Gets the markup provider name for a markup type
|
163
|
-
# Call {#load_markup_provider} before using this method.
|
164
|
-
#
|
165
|
-
# @param [Symbol] type the markup type (:rdoc, :markdown, etc.)
|
166
|
-
# @return [Symbol] the markup provider name (usually the gem name of the library)
|
167
|
-
def markup_provider(type = options.markup)
|
168
|
-
MarkupHelper.markup_cache[type][:provider]
|
169
|
-
end
|
170
|
-
end
|
171
|
-
end
|
172
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
require 'rubygems'
|
3
|
+
|
4
|
+
module YARD
|
5
|
+
module Templates::Helpers
|
6
|
+
# Helper methods for loading and managing markup types.
|
7
|
+
module MarkupHelper
|
8
|
+
class << self
|
9
|
+
# Clears the markup provider cache information. Mainly used for testing.
|
10
|
+
# @return [void]
|
11
|
+
def clear_markup_cache
|
12
|
+
self.markup_cache = {}
|
13
|
+
end
|
14
|
+
|
15
|
+
# @return [Hash{Symbol=>{(:provider,:class)=>Object}}] the cached markup providers
|
16
|
+
# @private
|
17
|
+
# @since 0.6.4
|
18
|
+
attr_accessor :markup_cache
|
19
|
+
end
|
20
|
+
|
21
|
+
MarkupHelper.clear_markup_cache
|
22
|
+
|
23
|
+
# The default list of markup providers for each markup type
|
24
|
+
MARKUP_PROVIDERS = {
|
25
|
+
:markdown => [
|
26
|
+
{:lib => :redcarpet, :const => 'RedcarpetCompat'},
|
27
|
+
{:lib => :rdiscount, :const => 'RDiscount'},
|
28
|
+
{:lib => :kramdown, :const => 'Kramdown::Document'},
|
29
|
+
{:lib => :bluecloth, :const => 'BlueCloth'},
|
30
|
+
{:lib => :maruku, :const => 'Maruku'},
|
31
|
+
{:lib => :'rpeg-markdown', :const => 'PEGMarkdown'},
|
32
|
+
{:lib => :rdoc, :const => 'YARD::Templates::Helpers::Markup::RDocMarkdown'}
|
33
|
+
],
|
34
|
+
:textile => [
|
35
|
+
{:lib => :redcloth, :const => 'RedCloth'}
|
36
|
+
],
|
37
|
+
:textile_strict => [
|
38
|
+
{:lib => :redcloth, :const => 'RedCloth'}
|
39
|
+
],
|
40
|
+
:rdoc => [
|
41
|
+
{:lib => nil, :const => 'YARD::Templates::Helpers::Markup::RDocMarkup'}
|
42
|
+
],
|
43
|
+
:org => [
|
44
|
+
{:lib => :'org-ruby', :const => 'Orgmode::Parser'}
|
45
|
+
],
|
46
|
+
:asciidoc => [
|
47
|
+
{:lib => :asciidoctor, :const => 'Asciidoctor'}
|
48
|
+
],
|
49
|
+
:ruby => [],
|
50
|
+
:text => [],
|
51
|
+
:pre => [],
|
52
|
+
:html => [],
|
53
|
+
:none => []
|
54
|
+
}
|
55
|
+
|
56
|
+
# Returns a list of extensions for various markup types. To register
|
57
|
+
# extensions for a type, add them to the array of extensions for the
|
58
|
+
# type.
|
59
|
+
# @since 0.6.0
|
60
|
+
MARKUP_EXTENSIONS = {
|
61
|
+
:html => ['htm', 'html', 'shtml'],
|
62
|
+
:text => ['txt'],
|
63
|
+
:textile => ['textile', 'txtile'],
|
64
|
+
:asciidoc => ['asciidoc', 'ad', 'adoc', 'asc'],
|
65
|
+
:markdown => ['markdown', 'md', 'mdown', 'mkd'],
|
66
|
+
:rdoc => ['rdoc'],
|
67
|
+
:org => ['org'],
|
68
|
+
:ruby => ['rb', 'ru']
|
69
|
+
}
|
70
|
+
|
71
|
+
# Contains the Regexp object that matches the shebang line of extra
|
72
|
+
# files to detect the markup type.
|
73
|
+
MARKUP_FILE_SHEBANG = /\A#!(\S+)\s*$/
|
74
|
+
|
75
|
+
# Attempts to load the first valid markup provider in {MARKUP_PROVIDERS}.
|
76
|
+
# If a provider is specified, immediately try to load it.
|
77
|
+
#
|
78
|
+
# On success this sets `@markup_provider` and `@markup_class` to
|
79
|
+
# the provider name and library constant class/module respectively for
|
80
|
+
# the loaded provider.
|
81
|
+
#
|
82
|
+
# On failure this method will inform the user that no provider could be
|
83
|
+
# found and exit the program.
|
84
|
+
#
|
85
|
+
# @return [Boolean] whether the markup provider was successfully loaded.
|
86
|
+
def load_markup_provider(type = options.markup)
|
87
|
+
return true if MarkupHelper.markup_cache[type]
|
88
|
+
MarkupHelper.markup_cache[type] ||= {}
|
89
|
+
|
90
|
+
providers = MARKUP_PROVIDERS[type.to_sym]
|
91
|
+
return true if providers && providers.empty?
|
92
|
+
if providers && options.markup_provider
|
93
|
+
providers = providers.select {|p| p[:lib] == options.markup_provider }
|
94
|
+
end
|
95
|
+
|
96
|
+
if providers.nil? || providers.empty?
|
97
|
+
log.error "Invalid markup type '#{type}' or markup provider " \
|
98
|
+
"(#{options.markup_provider}) is not registered."
|
99
|
+
return false
|
100
|
+
end
|
101
|
+
|
102
|
+
# Search for provider, return the library class name as const if found
|
103
|
+
providers.each do |provider|
|
104
|
+
begin require provider[:lib].to_s; rescue LoadError; next end if provider[:lib]
|
105
|
+
begin klass = eval("::" + provider[:const]); rescue NameError; next end # rubocop:disable Lint/Eval
|
106
|
+
MarkupHelper.markup_cache[type][:provider] = provider[:lib] # Cache the provider
|
107
|
+
MarkupHelper.markup_cache[type][:class] = klass
|
108
|
+
return true
|
109
|
+
end
|
110
|
+
|
111
|
+
# Show error message telling user to install first potential provider
|
112
|
+
lib = providers.first[:lib] || type
|
113
|
+
log.error "Missing '#{lib}' gem for #{type.to_s.capitalize} formatting. Install it with `gem install #{lib}`"
|
114
|
+
false
|
115
|
+
end
|
116
|
+
|
117
|
+
# Checks for a shebang or looks at the file extension to determine
|
118
|
+
# the markup type for the file contents. File extensions are registered
|
119
|
+
# for a markup type in {MARKUP_EXTENSIONS}.
|
120
|
+
#
|
121
|
+
# A shebang should be on the first line of a file and be in the form:
|
122
|
+
#
|
123
|
+
# #!markup_type
|
124
|
+
#
|
125
|
+
# Standard markup types are text, html, rdoc, markdown, textile
|
126
|
+
#
|
127
|
+
# @param [String] contents Unused. Was necessary prior to 0.7.0.
|
128
|
+
# Newer versions of YARD use {CodeObjects::ExtraFileObject#contents}
|
129
|
+
# @return [Symbol] the markup type recognized for the file
|
130
|
+
# @see MARKUP_EXTENSIONS
|
131
|
+
# @since 0.6.0
|
132
|
+
def markup_for_file(contents, filename)
|
133
|
+
return $1.to_sym if contents && contents =~ MARKUP_FILE_SHEBANG # Shebang support
|
134
|
+
|
135
|
+
ext = (File.extname(filename)[1..-1] || '').downcase
|
136
|
+
MARKUP_EXTENSIONS.each do |type, exts|
|
137
|
+
return type if exts.include?(ext)
|
138
|
+
end
|
139
|
+
options.markup
|
140
|
+
end
|
141
|
+
|
142
|
+
# Strips any shebang lines on the file contents that pertain to
|
143
|
+
# markup or preprocessing data.
|
144
|
+
#
|
145
|
+
# @deprecated Use {CodeObjects::ExtraFileObject#contents} instead
|
146
|
+
# @return [String] the file contents minus any preprocessing tags
|
147
|
+
# @since 0.6.0
|
148
|
+
def markup_file_contents(contents)
|
149
|
+
contents =~ MARKUP_FILE_SHEBANG ? $' : contents
|
150
|
+
end
|
151
|
+
|
152
|
+
# Gets the markup provider class/module constant for a markup type
|
153
|
+
# Call {#load_markup_provider} before using this method.
|
154
|
+
#
|
155
|
+
# @param [Symbol] type the markup type (:rdoc, :markdown, etc.)
|
156
|
+
# @return [Class] the markup class
|
157
|
+
def markup_class(type = options.markup)
|
158
|
+
load_markup_provider(type)
|
159
|
+
MarkupHelper.markup_cache[type][:class]
|
160
|
+
end
|
161
|
+
|
162
|
+
# Gets the markup provider name for a markup type
|
163
|
+
# Call {#load_markup_provider} before using this method.
|
164
|
+
#
|
165
|
+
# @param [Symbol] type the markup type (:rdoc, :markdown, etc.)
|
166
|
+
# @return [Symbol] the markup provider name (usually the gem name of the library)
|
167
|
+
def markup_provider(type = options.markup)
|
168
|
+
MarkupHelper.markup_cache[type][:provider]
|
169
|
+
end
|
170
|
+
end
|
171
|
+
end
|
172
|
+
end
|