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,24 +1,24 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
module YARD
|
3
|
-
module Serializers
|
4
|
-
# Serializes an object to a process (like less)
|
5
|
-
#
|
6
|
-
# @example Serializing to a pager (less)
|
7
|
-
# serializer = ProcessSerializer.new('less')
|
8
|
-
# serializer.serialize(object, "data!")
|
9
|
-
class ProcessSerializer < Base
|
10
|
-
# Creates a new ProcessSerializer for the shell command +cmd+
|
11
|
-
#
|
12
|
-
# @param [String] cmd the command that will accept data on stdin
|
13
|
-
def initialize(cmd)
|
14
|
-
@cmd = cmd
|
15
|
-
end
|
16
|
-
|
17
|
-
# Overrides serialize behaviour and writes data to standard input
|
18
|
-
# of the associated command
|
19
|
-
def serialize(_object, data)
|
20
|
-
IO.popen(@cmd, 'w') {|io| io.write(data) }
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
module YARD
|
3
|
+
module Serializers
|
4
|
+
# Serializes an object to a process (like less)
|
5
|
+
#
|
6
|
+
# @example Serializing to a pager (less)
|
7
|
+
# serializer = ProcessSerializer.new('less')
|
8
|
+
# serializer.serialize(object, "data!")
|
9
|
+
class ProcessSerializer < Base
|
10
|
+
# Creates a new ProcessSerializer for the shell command +cmd+
|
11
|
+
#
|
12
|
+
# @param [String] cmd the command that will accept data on stdin
|
13
|
+
def initialize(cmd)
|
14
|
+
@cmd = cmd
|
15
|
+
end
|
16
|
+
|
17
|
+
# Overrides serialize behaviour and writes data to standard input
|
18
|
+
# of the associated command
|
19
|
+
def serialize(_object, data)
|
20
|
+
IO.popen(@cmd, 'w') {|io| io.write(data) }
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -1,34 +1,34 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
module YARD
|
3
|
-
module Serializers
|
4
|
-
# A serializer that writes data to standard output.
|
5
|
-
class StdoutSerializer < Base
|
6
|
-
# Creates a serializer to print text to stdout
|
7
|
-
#
|
8
|
-
# @param [Fixnum, nil] wrap if wrap is a number, wraps text to +wrap+
|
9
|
-
# columns, otherwise no wrapping is done.
|
10
|
-
def initialize(wrap = nil)
|
11
|
-
@wrap = wrap
|
12
|
-
end
|
13
|
-
|
14
|
-
# Overrides serialize behaviour to write data to standard output
|
15
|
-
def serialize(_object, data)
|
16
|
-
print(@wrap ? word_wrap(data, @wrap) : data)
|
17
|
-
end
|
18
|
-
|
19
|
-
private
|
20
|
-
|
21
|
-
# Wraps text to a specific column length
|
22
|
-
#
|
23
|
-
# @param [String] text the text to wrap
|
24
|
-
# @param [Fixnum] _length the column length to wrap to
|
25
|
-
# @return [String] the wrapped text
|
26
|
-
def word_wrap(text, _length = 80)
|
27
|
-
# See ruby-talk/10655 / Ernest Ellingson
|
28
|
-
text.gsub(/\t/, " ").gsub(/.{1,50}(?:\s|\Z)/) do
|
29
|
-
($& + 5.chr).gsub(/\n\005/, "\n").gsub(/\005/, "\n")
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
module YARD
|
3
|
+
module Serializers
|
4
|
+
# A serializer that writes data to standard output.
|
5
|
+
class StdoutSerializer < Base
|
6
|
+
# Creates a serializer to print text to stdout
|
7
|
+
#
|
8
|
+
# @param [Fixnum, nil] wrap if wrap is a number, wraps text to +wrap+
|
9
|
+
# columns, otherwise no wrapping is done.
|
10
|
+
def initialize(wrap = nil)
|
11
|
+
@wrap = wrap
|
12
|
+
end
|
13
|
+
|
14
|
+
# Overrides serialize behaviour to write data to standard output
|
15
|
+
def serialize(_object, data)
|
16
|
+
print(@wrap ? word_wrap(data, @wrap) : data)
|
17
|
+
end
|
18
|
+
|
19
|
+
private
|
20
|
+
|
21
|
+
# Wraps text to a specific column length
|
22
|
+
#
|
23
|
+
# @param [String] text the text to wrap
|
24
|
+
# @param [Fixnum] _length the column length to wrap to
|
25
|
+
# @return [String] the wrapped text
|
26
|
+
def word_wrap(text, _length = 80)
|
27
|
+
# See ruby-talk/10655 / Ernest Ellingson
|
28
|
+
text.gsub(/\t/, " ").gsub(/.{1,50}(?:\s|\Z)/) do
|
29
|
+
($& + 5.chr).gsub(/\n\005/, "\n").gsub(/\005/, "\n")
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -1,152 +1,152 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
module YARD
|
3
|
-
# Stubs marshal dumps and acts a delegate class for an object by path
|
4
|
-
#
|
5
|
-
# @private
|
6
|
-
class StubProxy
|
7
|
-
instance_methods.each {|m| undef_method(m) unless m.to_s =~ /^__|^object_id$/ }
|
8
|
-
|
9
|
-
def _dump(_depth) @path end
|
10
|
-
def self._load(str) new(str) end
|
11
|
-
def hash; @path.hash end
|
12
|
-
|
13
|
-
def initialize(path, transient = false)
|
14
|
-
@path = path
|
15
|
-
@transient = transient
|
16
|
-
end
|
17
|
-
|
18
|
-
def method_missing(meth, *args, &block)
|
19
|
-
return true if meth == :respond_to? && args.first == :_dump
|
20
|
-
@object = nil if @transient
|
21
|
-
@object ||= Registry.at(@path)
|
22
|
-
@object.send(meth, *args, &block)
|
23
|
-
rescue NoMethodError => e
|
24
|
-
e.backtrace.delete_if {|l| l[0, FILELEN] == __FILE__ }
|
25
|
-
raise
|
26
|
-
end
|
27
|
-
|
28
|
-
FILELEN = __FILE__.size
|
29
|
-
end
|
30
|
-
|
31
|
-
module Serializers
|
32
|
-
class YardocSerializer < FileSystemSerializer
|
33
|
-
def initialize(yfile)
|
34
|
-
super(:basepath => yfile, :extension => 'dat')
|
35
|
-
end
|
36
|
-
|
37
|
-
def objects_path; File.join(basepath, 'objects') end
|
38
|
-
# @deprecated The registry no longer tracks proxy types
|
39
|
-
def proxy_types_path; File.join(basepath, 'proxy_types') end
|
40
|
-
def checksums_path; File.join(basepath, 'checksums') end
|
41
|
-
def object_types_path; File.join(basepath, 'object_types') end
|
42
|
-
def complete_lock_path; File.join(basepath, 'complete') end
|
43
|
-
def processing_path; File.join(basepath, 'processing') end
|
44
|
-
|
45
|
-
def complete?
|
46
|
-
File.exist?(complete_lock_path) && !locked_for_writing?
|
47
|
-
end
|
48
|
-
|
49
|
-
# Creates a pessmistic transactional lock on the database for writing.
|
50
|
-
# Use with {YARD.parse} to ensure the database is not written multiple
|
51
|
-
# times.
|
52
|
-
#
|
53
|
-
# @see #locked_for_writing?
|
54
|
-
def lock_for_writing
|
55
|
-
File.open!(processing_path, 'w') {}
|
56
|
-
yield
|
57
|
-
ensure
|
58
|
-
File.unlink(processing_path) if File.exist?(processing_path)
|
59
|
-
end
|
60
|
-
|
61
|
-
# @return [Boolean] whether the database is currently locked for writing
|
62
|
-
def locked_for_writing?
|
63
|
-
File.exist?(processing_path)
|
64
|
-
end
|
65
|
-
|
66
|
-
def serialized_path(object)
|
67
|
-
path =
|
68
|
-
case object
|
69
|
-
when String, Symbol
|
70
|
-
object = object.to_s
|
71
|
-
if object =~ /#/
|
72
|
-
object += '_i'
|
73
|
-
elsif object =~ /\./
|
74
|
-
object += '_c'
|
75
|
-
end
|
76
|
-
object.split(/::|\.|#/).map do |p|
|
77
|
-
p.gsub(/[^\w\.-]/) do |x|
|
78
|
-
encoded = '_'
|
79
|
-
|
80
|
-
x.each_byte {|b| encoded << ("%X" % b) }
|
81
|
-
encoded
|
82
|
-
end
|
83
|
-
end.join('/') + '.' + extension
|
84
|
-
when YARD::CodeObjects::RootObject
|
85
|
-
'root.dat'
|
86
|
-
else
|
87
|
-
super(object)
|
88
|
-
end
|
89
|
-
|
90
|
-
File.join('objects', path)
|
91
|
-
end
|
92
|
-
|
93
|
-
def serialize(object)
|
94
|
-
if Hash === object
|
95
|
-
super(object[:root], dump(object)) if object[:root]
|
96
|
-
else
|
97
|
-
super(object, dump(object))
|
98
|
-
end
|
99
|
-
end
|
100
|
-
|
101
|
-
def deserialize(path, is_path = false)
|
102
|
-
path = File.join(basepath, serialized_path(path)) unless is_path
|
103
|
-
if File.file?(path)
|
104
|
-
log.debug "Deserializing #{path}..."
|
105
|
-
Marshal.load(File.read_binary(path))
|
106
|
-
else
|
107
|
-
log.debug "Could not find #{path}"
|
108
|
-
nil
|
109
|
-
end
|
110
|
-
end
|
111
|
-
|
112
|
-
private
|
113
|
-
|
114
|
-
def dump(object)
|
115
|
-
object = internal_dump(object, true) unless object.is_a?(Hash)
|
116
|
-
Marshal.dump(object)
|
117
|
-
end
|
118
|
-
|
119
|
-
def internal_dump(object, first_object = false)
|
120
|
-
if !first_object && object.is_a?(CodeObjects::Base) &&
|
121
|
-
!(Tags::OverloadTag === object)
|
122
|
-
return StubProxy.new(object.path)
|
123
|
-
end
|
124
|
-
|
125
|
-
if object.is_a?(Hash) || object.is_a?(Array) ||
|
126
|
-
object.is_a?(CodeObjects::Base) ||
|
127
|
-
!object.instance_variables.empty?
|
128
|
-
object = object.dup
|
129
|
-
end
|
130
|
-
|
131
|
-
object.instance_variables.each do |ivar|
|
132
|
-
ivar_obj = object.instance_variable_get(ivar)
|
133
|
-
ivar_obj_dump = internal_dump(ivar_obj)
|
134
|
-
object.instance_variable_set(ivar, ivar_obj_dump)
|
135
|
-
end
|
136
|
-
|
137
|
-
case object
|
138
|
-
when Hash
|
139
|
-
list = object.map do |k, v|
|
140
|
-
[k, v].map {|item| internal_dump(item) }
|
141
|
-
end
|
142
|
-
object.replace(Hash[list])
|
143
|
-
when Array
|
144
|
-
list = object.map {|item| internal_dump(item) }
|
145
|
-
object.replace(list)
|
146
|
-
end
|
147
|
-
|
148
|
-
object
|
149
|
-
end
|
150
|
-
end
|
151
|
-
end
|
152
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
module YARD
|
3
|
+
# Stubs marshal dumps and acts a delegate class for an object by path
|
4
|
+
#
|
5
|
+
# @private
|
6
|
+
class StubProxy
|
7
|
+
instance_methods.each {|m| undef_method(m) unless m.to_s =~ /^__|^object_id$/ }
|
8
|
+
|
9
|
+
def _dump(_depth) @path end
|
10
|
+
def self._load(str) new(str) end
|
11
|
+
def hash; @path.hash end
|
12
|
+
|
13
|
+
def initialize(path, transient = false)
|
14
|
+
@path = path
|
15
|
+
@transient = transient
|
16
|
+
end
|
17
|
+
|
18
|
+
def method_missing(meth, *args, &block)
|
19
|
+
return true if meth == :respond_to? && args.first == :_dump
|
20
|
+
@object = nil if @transient
|
21
|
+
@object ||= Registry.at(@path)
|
22
|
+
@object.send(meth, *args, &block)
|
23
|
+
rescue NoMethodError => e
|
24
|
+
e.backtrace.delete_if {|l| l[0, FILELEN] == __FILE__ }
|
25
|
+
raise
|
26
|
+
end
|
27
|
+
|
28
|
+
FILELEN = __FILE__.size
|
29
|
+
end
|
30
|
+
|
31
|
+
module Serializers
|
32
|
+
class YardocSerializer < FileSystemSerializer
|
33
|
+
def initialize(yfile)
|
34
|
+
super(:basepath => yfile, :extension => 'dat')
|
35
|
+
end
|
36
|
+
|
37
|
+
def objects_path; File.join(basepath, 'objects') end
|
38
|
+
# @deprecated The registry no longer tracks proxy types
|
39
|
+
def proxy_types_path; File.join(basepath, 'proxy_types') end
|
40
|
+
def checksums_path; File.join(basepath, 'checksums') end
|
41
|
+
def object_types_path; File.join(basepath, 'object_types') end
|
42
|
+
def complete_lock_path; File.join(basepath, 'complete') end
|
43
|
+
def processing_path; File.join(basepath, 'processing') end
|
44
|
+
|
45
|
+
def complete?
|
46
|
+
File.exist?(complete_lock_path) && !locked_for_writing?
|
47
|
+
end
|
48
|
+
|
49
|
+
# Creates a pessmistic transactional lock on the database for writing.
|
50
|
+
# Use with {YARD.parse} to ensure the database is not written multiple
|
51
|
+
# times.
|
52
|
+
#
|
53
|
+
# @see #locked_for_writing?
|
54
|
+
def lock_for_writing
|
55
|
+
File.open!(processing_path, 'w') {}
|
56
|
+
yield
|
57
|
+
ensure
|
58
|
+
File.unlink(processing_path) if File.exist?(processing_path)
|
59
|
+
end
|
60
|
+
|
61
|
+
# @return [Boolean] whether the database is currently locked for writing
|
62
|
+
def locked_for_writing?
|
63
|
+
File.exist?(processing_path)
|
64
|
+
end
|
65
|
+
|
66
|
+
def serialized_path(object)
|
67
|
+
path =
|
68
|
+
case object
|
69
|
+
when String, Symbol
|
70
|
+
object = object.to_s
|
71
|
+
if object =~ /#/
|
72
|
+
object += '_i'
|
73
|
+
elsif object =~ /\./
|
74
|
+
object += '_c'
|
75
|
+
end
|
76
|
+
object.split(/::|\.|#/).map do |p|
|
77
|
+
p.gsub(/[^\w\.-]/) do |x|
|
78
|
+
encoded = '_'
|
79
|
+
|
80
|
+
x.each_byte {|b| encoded << ("%X" % b) }
|
81
|
+
encoded
|
82
|
+
end
|
83
|
+
end.join('/') + '.' + extension
|
84
|
+
when YARD::CodeObjects::RootObject
|
85
|
+
'root.dat'
|
86
|
+
else
|
87
|
+
super(object)
|
88
|
+
end
|
89
|
+
|
90
|
+
File.join('objects', path)
|
91
|
+
end
|
92
|
+
|
93
|
+
def serialize(object)
|
94
|
+
if Hash === object
|
95
|
+
super(object[:root], dump(object)) if object[:root]
|
96
|
+
else
|
97
|
+
super(object, dump(object))
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
101
|
+
def deserialize(path, is_path = false)
|
102
|
+
path = File.join(basepath, serialized_path(path)) unless is_path
|
103
|
+
if File.file?(path)
|
104
|
+
log.debug "Deserializing #{path}..."
|
105
|
+
Marshal.load(File.read_binary(path))
|
106
|
+
else
|
107
|
+
log.debug "Could not find #{path}"
|
108
|
+
nil
|
109
|
+
end
|
110
|
+
end
|
111
|
+
|
112
|
+
private
|
113
|
+
|
114
|
+
def dump(object)
|
115
|
+
object = internal_dump(object, true) unless object.is_a?(Hash)
|
116
|
+
Marshal.dump(object)
|
117
|
+
end
|
118
|
+
|
119
|
+
def internal_dump(object, first_object = false)
|
120
|
+
if !first_object && object.is_a?(CodeObjects::Base) &&
|
121
|
+
!(Tags::OverloadTag === object)
|
122
|
+
return StubProxy.new(object.path)
|
123
|
+
end
|
124
|
+
|
125
|
+
if object.is_a?(Hash) || object.is_a?(Array) ||
|
126
|
+
object.is_a?(CodeObjects::Base) ||
|
127
|
+
!object.instance_variables.empty?
|
128
|
+
object = object.dup
|
129
|
+
end
|
130
|
+
|
131
|
+
object.instance_variables.each do |ivar|
|
132
|
+
ivar_obj = object.instance_variable_get(ivar)
|
133
|
+
ivar_obj_dump = internal_dump(ivar_obj)
|
134
|
+
object.instance_variable_set(ivar, ivar_obj_dump)
|
135
|
+
end
|
136
|
+
|
137
|
+
case object
|
138
|
+
when Hash
|
139
|
+
list = object.map do |k, v|
|
140
|
+
[k, v].map {|item| internal_dump(item) }
|
141
|
+
end
|
142
|
+
object.replace(Hash[list])
|
143
|
+
when Array
|
144
|
+
list = object.map {|item| internal_dump(item) }
|
145
|
+
object.replace(list)
|
146
|
+
end
|
147
|
+
|
148
|
+
object
|
149
|
+
end
|
150
|
+
end
|
151
|
+
end
|
152
|
+
end
|
data/lib/yard/server.rb
CHANGED
@@ -1,13 +1,13 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
module YARD
|
3
|
-
module Server
|
4
|
-
# Registers a static path to be used in static asset lookup.
|
5
|
-
# @param [String] path the pathname to register
|
6
|
-
# @return [void]
|
7
|
-
# @since 0.6.2
|
8
|
-
def self.register_static_path(path)
|
9
|
-
static_paths = Commands::StaticFileCommand::STATIC_PATHS
|
10
|
-
static_paths.push(path) unless static_paths.include?(path)
|
11
|
-
end
|
12
|
-
end
|
13
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
module YARD
|
3
|
+
module Server
|
4
|
+
# Registers a static path to be used in static asset lookup.
|
5
|
+
# @param [String] path the pathname to register
|
6
|
+
# @return [void]
|
7
|
+
# @since 0.6.2
|
8
|
+
def self.register_static_path(path)
|
9
|
+
static_paths = Commands::StaticFileCommand::STATIC_PATHS
|
10
|
+
static_paths.push(path) unless static_paths.include?(path)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
data/lib/yard/server/adapter.rb
CHANGED
@@ -1,100 +1,100 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
module YARD
|
3
|
-
module Server
|
4
|
-
# Short circuits a request by raising an error. This exception is caught
|
5
|
-
# by {Commands::Base#call} to immediately end a request and return a response.
|
6
|
-
class FinishRequest < RuntimeError; end
|
7
|
-
|
8
|
-
# Raises an error if a resource is not found. This exception is caught by
|
9
|
-
# {Commands::Base#call} to immediately end a request and return a 404 response
|
10
|
-
# code. If a message is provided, the body is set to the exception message.
|
11
|
-
class NotFoundError < RuntimeError; end
|
12
|
-
|
13
|
-
# This class implements the bridge between the {Router} and the server
|
14
|
-
# backend for a specific server type. YARD implements concrete adapters
|
15
|
-
# for WEBrick and Rack respectively, though other adapters can be made
|
16
|
-
# for other server architectures.
|
17
|
-
#
|
18
|
-
# == Subclassing Notes
|
19
|
-
# To create a concrete adapter class, implement the {#start} method to
|
20
|
-
# initiate the server backend.
|
21
|
-
#
|
22
|
-
# @abstract
|
23
|
-
class Adapter
|
24
|
-
# @return [String] the location where static files are located, if any.
|
25
|
-
# To set this field on initialization, pass +:DocumentRoot+ to the
|
26
|
-
# +server_opts+ argument in {#initialize}
|
27
|
-
attr_accessor :document_root
|
28
|
-
|
29
|
-
# @return [Hash{String=>Array<LibraryVersion>}] a map of libraries.
|
30
|
-
# @see LibraryVersion LibraryVersion for information on building a list of libraries
|
31
|
-
# @see #add_library
|
32
|
-
attr_accessor :libraries
|
33
|
-
|
34
|
-
# @return [Hash] options passed and processed by adapters. The actual
|
35
|
-
# options mostly depend on the adapters themselves.
|
36
|
-
attr_accessor :options
|
37
|
-
|
38
|
-
# @return [Hash] a set of options to pass to the server backend. Note
|
39
|
-
# that +:DocumentRoot+ also sets the {#document_root}.
|
40
|
-
attr_accessor :server_options
|
41
|
-
|
42
|
-
# @return [Router] the router object used to route URLs to commands
|
43
|
-
attr_accessor :router
|
44
|
-
|
45
|
-
# Performs any global initialization for the adapter.
|
46
|
-
# @note If you subclass this method, make sure to call +super+.
|
47
|
-
# @return [void]
|
48
|
-
def self.setup
|
49
|
-
Templates::Template.extra_includes |= [YARD::Server::DocServerHelper]
|
50
|
-
Templates::Engine.template_paths |= [File.dirname(__FILE__) + '/templates']
|
51
|
-
end
|
52
|
-
|
53
|
-
# Performs any global shutdown procedures for the adapter.
|
54
|
-
# @note If you subclass this method, make sure to call +super+.
|
55
|
-
# @return [void]
|
56
|
-
def self.shutdown
|
57
|
-
Templates::Template.extra_includes -= [YARD::Server::DocServerHelper]
|
58
|
-
Templates::Engine.template_paths -= [File.dirname(__FILE__) + '/templates']
|
59
|
-
end
|
60
|
-
|
61
|
-
# Creates a new adapter object
|
62
|
-
#
|
63
|
-
# @param [Hash{String=>Array<LibraryVersion>}] libs a list of libraries,
|
64
|
-
# see {#libraries} for formulating this list.
|
65
|
-
# @param [Hash] opts extra options to pass to the adapter
|
66
|
-
# @option opts [Class] :router (Router) the router class to initialize as the
|
67
|
-
# adapter's router.
|
68
|
-
# @option opts [Boolean] :caching (false) whether or not caching is enabled
|
69
|
-
# @option opts [Boolean] :single_library (false) whether to server documentation
|
70
|
-
# for a single or multiple libraries (changes URL structure)
|
71
|
-
def initialize(libs, opts = {}, server_opts = {})
|
72
|
-
self.class.setup
|
73
|
-
self.libraries = libs
|
74
|
-
self.options = opts
|
75
|
-
self.server_options = server_opts
|
76
|
-
self.document_root = server_options[:DocumentRoot]
|
77
|
-
self.router = (options[:router] || Router).new(self)
|
78
|
-
options[:adapter] = self
|
79
|
-
log.debug "Serving libraries using #{self.class}: #{libraries.keys.join(', ')}"
|
80
|
-
log.debug "Caching on" if options[:caching]
|
81
|
-
log.debug "Document root: #{document_root}" if document_root
|
82
|
-
end
|
83
|
-
|
84
|
-
# Adds a library to the {#libraries} mapping for a given library object.
|
85
|
-
# @example Adding a new library to an adapter
|
86
|
-
# adapter.add_library LibraryVersion.new('mylib', '1.0', '/path/to/.yardoc')
|
87
|
-
# @param [LibraryVersion] library a library to add
|
88
|
-
def add_library(library)
|
89
|
-
libraries[library.name] ||= []
|
90
|
-
libraries[library.name] |= [library]
|
91
|
-
end
|
92
|
-
|
93
|
-
# Implement this method to connect your adapter to your server.
|
94
|
-
# @abstract
|
95
|
-
def start
|
96
|
-
raise NotImplementedError
|
97
|
-
end
|
98
|
-
end
|
99
|
-
end
|
100
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
module YARD
|
3
|
+
module Server
|
4
|
+
# Short circuits a request by raising an error. This exception is caught
|
5
|
+
# by {Commands::Base#call} to immediately end a request and return a response.
|
6
|
+
class FinishRequest < RuntimeError; end
|
7
|
+
|
8
|
+
# Raises an error if a resource is not found. This exception is caught by
|
9
|
+
# {Commands::Base#call} to immediately end a request and return a 404 response
|
10
|
+
# code. If a message is provided, the body is set to the exception message.
|
11
|
+
class NotFoundError < RuntimeError; end
|
12
|
+
|
13
|
+
# This class implements the bridge between the {Router} and the server
|
14
|
+
# backend for a specific server type. YARD implements concrete adapters
|
15
|
+
# for WEBrick and Rack respectively, though other adapters can be made
|
16
|
+
# for other server architectures.
|
17
|
+
#
|
18
|
+
# == Subclassing Notes
|
19
|
+
# To create a concrete adapter class, implement the {#start} method to
|
20
|
+
# initiate the server backend.
|
21
|
+
#
|
22
|
+
# @abstract
|
23
|
+
class Adapter
|
24
|
+
# @return [String] the location where static files are located, if any.
|
25
|
+
# To set this field on initialization, pass +:DocumentRoot+ to the
|
26
|
+
# +server_opts+ argument in {#initialize}
|
27
|
+
attr_accessor :document_root
|
28
|
+
|
29
|
+
# @return [Hash{String=>Array<LibraryVersion>}] a map of libraries.
|
30
|
+
# @see LibraryVersion LibraryVersion for information on building a list of libraries
|
31
|
+
# @see #add_library
|
32
|
+
attr_accessor :libraries
|
33
|
+
|
34
|
+
# @return [Hash] options passed and processed by adapters. The actual
|
35
|
+
# options mostly depend on the adapters themselves.
|
36
|
+
attr_accessor :options
|
37
|
+
|
38
|
+
# @return [Hash] a set of options to pass to the server backend. Note
|
39
|
+
# that +:DocumentRoot+ also sets the {#document_root}.
|
40
|
+
attr_accessor :server_options
|
41
|
+
|
42
|
+
# @return [Router] the router object used to route URLs to commands
|
43
|
+
attr_accessor :router
|
44
|
+
|
45
|
+
# Performs any global initialization for the adapter.
|
46
|
+
# @note If you subclass this method, make sure to call +super+.
|
47
|
+
# @return [void]
|
48
|
+
def self.setup
|
49
|
+
Templates::Template.extra_includes |= [YARD::Server::DocServerHelper]
|
50
|
+
Templates::Engine.template_paths |= [File.dirname(__FILE__) + '/templates']
|
51
|
+
end
|
52
|
+
|
53
|
+
# Performs any global shutdown procedures for the adapter.
|
54
|
+
# @note If you subclass this method, make sure to call +super+.
|
55
|
+
# @return [void]
|
56
|
+
def self.shutdown
|
57
|
+
Templates::Template.extra_includes -= [YARD::Server::DocServerHelper]
|
58
|
+
Templates::Engine.template_paths -= [File.dirname(__FILE__) + '/templates']
|
59
|
+
end
|
60
|
+
|
61
|
+
# Creates a new adapter object
|
62
|
+
#
|
63
|
+
# @param [Hash{String=>Array<LibraryVersion>}] libs a list of libraries,
|
64
|
+
# see {#libraries} for formulating this list.
|
65
|
+
# @param [Hash] opts extra options to pass to the adapter
|
66
|
+
# @option opts [Class] :router (Router) the router class to initialize as the
|
67
|
+
# adapter's router.
|
68
|
+
# @option opts [Boolean] :caching (false) whether or not caching is enabled
|
69
|
+
# @option opts [Boolean] :single_library (false) whether to server documentation
|
70
|
+
# for a single or multiple libraries (changes URL structure)
|
71
|
+
def initialize(libs, opts = {}, server_opts = {})
|
72
|
+
self.class.setup
|
73
|
+
self.libraries = libs
|
74
|
+
self.options = opts
|
75
|
+
self.server_options = server_opts
|
76
|
+
self.document_root = server_options[:DocumentRoot]
|
77
|
+
self.router = (options[:router] || Router).new(self)
|
78
|
+
options[:adapter] = self
|
79
|
+
log.debug "Serving libraries using #{self.class}: #{libraries.keys.join(', ')}"
|
80
|
+
log.debug "Caching on" if options[:caching]
|
81
|
+
log.debug "Document root: #{document_root}" if document_root
|
82
|
+
end
|
83
|
+
|
84
|
+
# Adds a library to the {#libraries} mapping for a given library object.
|
85
|
+
# @example Adding a new library to an adapter
|
86
|
+
# adapter.add_library LibraryVersion.new('mylib', '1.0', '/path/to/.yardoc')
|
87
|
+
# @param [LibraryVersion] library a library to add
|
88
|
+
def add_library(library)
|
89
|
+
libraries[library.name] ||= []
|
90
|
+
libraries[library.name] |= [library]
|
91
|
+
end
|
92
|
+
|
93
|
+
# Implement this method to connect your adapter to your server.
|
94
|
+
# @abstract
|
95
|
+
def start
|
96
|
+
raise NotImplementedError
|
97
|
+
end
|
98
|
+
end
|
99
|
+
end
|
100
|
+
end
|