deg-yard 0.8.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.travis.yml +39 -0
- data/.yardopts +25 -0
- data/.yardopts_guide +19 -0
- data/.yardopts_i18n +22 -0
- data/Gemfile +35 -0
- data/LEGAL +66 -0
- data/LICENSE +22 -0
- data/README.md +609 -0
- data/Rakefile +66 -0
- data/benchmarks/builtins_vs_eval.rb +23 -0
- data/benchmarks/concat_vs_join.rb +12 -0
- data/benchmarks/erb_vs_erubis.rb +53 -0
- data/benchmarks/format_args.rb +46 -0
- data/benchmarks/generation.rb +37 -0
- data/benchmarks/marshal_vs_dbm.rb +63 -0
- data/benchmarks/parsing.rb +46 -0
- data/benchmarks/pathname_vs_string.rb +50 -0
- data/benchmarks/rdoc_vs_yardoc.rb +10 -0
- data/benchmarks/registry_store_types.rb +48 -0
- data/benchmarks/ri_vs_yri.rb +18 -0
- data/benchmarks/ripper_parser.rb +12 -0
- data/benchmarks/splat_vs_flatten.rb +12 -0
- data/benchmarks/template_erb.rb +22 -0
- data/benchmarks/template_format.rb +6 -0
- data/benchmarks/template_profile.rb +17 -0
- data/benchmarks/yri_cache.rb +19 -0
- data/bin/yard +12 -0
- data/bin/yardoc +12 -0
- data/bin/yri +12 -0
- data/docs/CodeObjects.md +115 -0
- data/docs/GettingStarted.md +592 -0
- data/docs/Handlers.md +152 -0
- data/docs/Overview.md +61 -0
- data/docs/Parser.md +191 -0
- data/docs/Tags.md +282 -0
- data/docs/TagsArch.md +123 -0
- data/docs/Templates.md +496 -0
- data/docs/WhatsNew.md +1244 -0
- data/docs/images/code-objects-class-diagram.png +0 -0
- data/docs/images/handlers-class-diagram.png +0 -0
- data/docs/images/overview-class-diagram.png +0 -0
- data/docs/images/parser-class-diagram.png +0 -0
- data/docs/images/tags-class-diagram.png +0 -0
- data/docs/templates/default/fulldoc/html/full_list_tag.erb +7 -0
- data/docs/templates/default/fulldoc/html/setup.rb +6 -0
- data/docs/templates/default/layout/html/setup.rb +8 -0
- data/docs/templates/default/layout/html/tag_list.erb +11 -0
- data/docs/templates/default/yard_tags/html/list.erb +18 -0
- data/docs/templates/default/yard_tags/html/setup.rb +27 -0
- data/docs/templates/plugin.rb +65 -0
- data/lib/rubygems_plugin.rb +4 -0
- data/lib/yard/autoload.rb +290 -0
- data/lib/yard/cli/command.rb +84 -0
- data/lib/yard/cli/command_parser.rb +92 -0
- data/lib/yard/cli/config.rb +136 -0
- data/lib/yard/cli/diff.rb +270 -0
- data/lib/yard/cli/display.rb +68 -0
- data/lib/yard/cli/gems.rb +83 -0
- data/lib/yard/cli/graph.rb +126 -0
- data/lib/yard/cli/help.rb +18 -0
- data/lib/yard/cli/i18n.rb +69 -0
- data/lib/yard/cli/list.rb +22 -0
- data/lib/yard/cli/markup_types.rb +33 -0
- data/lib/yard/cli/server.rb +253 -0
- data/lib/yard/cli/stats.rb +213 -0
- data/lib/yard/cli/yardoc.rb +752 -0
- data/lib/yard/cli/yardopts_command.rb +109 -0
- data/lib/yard/cli/yri.rb +214 -0
- data/lib/yard/code_objects/base.rb +585 -0
- data/lib/yard/code_objects/class_object.rb +143 -0
- data/lib/yard/code_objects/class_variable_object.rb +8 -0
- data/lib/yard/code_objects/constant_object.rb +13 -0
- data/lib/yard/code_objects/extended_method_object.rb +23 -0
- data/lib/yard/code_objects/extra_file_object.rb +128 -0
- data/lib/yard/code_objects/macro_object.rb +172 -0
- data/lib/yard/code_objects/method_object.rb +191 -0
- data/lib/yard/code_objects/module_object.rb +18 -0
- data/lib/yard/code_objects/namespace_object.rb +200 -0
- data/lib/yard/code_objects/proxy.rb +258 -0
- data/lib/yard/code_objects/root_object.rb +17 -0
- data/lib/yard/config.rb +269 -0
- data/lib/yard/core_ext/array.rb +15 -0
- data/lib/yard/core_ext/file.rb +65 -0
- data/lib/yard/core_ext/hash.rb +15 -0
- data/lib/yard/core_ext/insertion.rb +60 -0
- data/lib/yard/core_ext/module.rb +19 -0
- data/lib/yard/core_ext/string.rb +67 -0
- data/lib/yard/core_ext/symbol_hash.rb +73 -0
- data/lib/yard/docstring.rb +362 -0
- data/lib/yard/docstring_parser.rb +321 -0
- data/lib/yard/globals.rb +18 -0
- data/lib/yard/handlers/base.rb +597 -0
- data/lib/yard/handlers/c/alias_handler.rb +15 -0
- data/lib/yard/handlers/c/attribute_handler.rb +13 -0
- data/lib/yard/handlers/c/base.rb +110 -0
- data/lib/yard/handlers/c/class_handler.rb +26 -0
- data/lib/yard/handlers/c/constant_handler.rb +12 -0
- data/lib/yard/handlers/c/handler_methods.rb +166 -0
- data/lib/yard/handlers/c/init_handler.rb +18 -0
- data/lib/yard/handlers/c/method_handler.rb +35 -0
- data/lib/yard/handlers/c/mixin_handler.rb +13 -0
- data/lib/yard/handlers/c/module_handler.rb +16 -0
- data/lib/yard/handlers/c/override_comment_handler.rb +30 -0
- data/lib/yard/handlers/c/path_handler.rb +10 -0
- data/lib/yard/handlers/c/struct_handler.rb +12 -0
- data/lib/yard/handlers/c/symbol_handler.rb +7 -0
- data/lib/yard/handlers/processor.rb +201 -0
- data/lib/yard/handlers/ruby/alias_handler.rb +41 -0
- data/lib/yard/handlers/ruby/attribute_handler.rb +82 -0
- data/lib/yard/handlers/ruby/base.rb +164 -0
- data/lib/yard/handlers/ruby/class_condition_handler.rb +86 -0
- data/lib/yard/handlers/ruby/class_handler.rb +121 -0
- data/lib/yard/handlers/ruby/class_variable_handler.rb +16 -0
- data/lib/yard/handlers/ruby/comment_handler.rb +9 -0
- data/lib/yard/handlers/ruby/constant_handler.rb +45 -0
- data/lib/yard/handlers/ruby/dsl_handler.rb +14 -0
- data/lib/yard/handlers/ruby/dsl_handler_methods.rb +77 -0
- data/lib/yard/handlers/ruby/exception_handler.rb +26 -0
- data/lib/yard/handlers/ruby/extend_handler.rb +21 -0
- data/lib/yard/handlers/ruby/legacy/alias_handler.rb +34 -0
- data/lib/yard/handlers/ruby/legacy/attribute_handler.rb +60 -0
- data/lib/yard/handlers/ruby/legacy/base.rb +250 -0
- data/lib/yard/handlers/ruby/legacy/class_condition_handler.rb +83 -0
- data/lib/yard/handlers/ruby/legacy/class_handler.rb +111 -0
- data/lib/yard/handlers/ruby/legacy/class_variable_handler.rb +14 -0
- data/lib/yard/handlers/ruby/legacy/comment_handler.rb +9 -0
- data/lib/yard/handlers/ruby/legacy/constant_handler.rb +28 -0
- data/lib/yard/handlers/ruby/legacy/dsl_handler.rb +16 -0
- data/lib/yard/handlers/ruby/legacy/exception_handler.rb +12 -0
- data/lib/yard/handlers/ruby/legacy/extend_handler.rb +20 -0
- data/lib/yard/handlers/ruby/legacy/method_handler.rb +85 -0
- data/lib/yard/handlers/ruby/legacy/mixin_handler.rb +39 -0
- data/lib/yard/handlers/ruby/legacy/module_function_handler.rb +18 -0
- data/lib/yard/handlers/ruby/legacy/module_handler.rb +11 -0
- data/lib/yard/handlers/ruby/legacy/private_constant_handler.rb +21 -0
- data/lib/yard/handlers/ruby/legacy/visibility_handler.rb +16 -0
- data/lib/yard/handlers/ruby/legacy/yield_handler.rb +28 -0
- data/lib/yard/handlers/ruby/method_condition_handler.rb +8 -0
- data/lib/yard/handlers/ruby/method_handler.rb +92 -0
- data/lib/yard/handlers/ruby/mixin_handler.rb +36 -0
- data/lib/yard/handlers/ruby/module_function_handler.rb +26 -0
- data/lib/yard/handlers/ruby/module_handler.rb +11 -0
- data/lib/yard/handlers/ruby/private_constant_handler.rb +36 -0
- data/lib/yard/handlers/ruby/struct_handler_methods.rb +141 -0
- data/lib/yard/handlers/ruby/visibility_handler.rb +24 -0
- data/lib/yard/handlers/ruby/yield_handler.rb +30 -0
- data/lib/yard/i18n/locale.rb +74 -0
- data/lib/yard/i18n/message.rb +56 -0
- data/lib/yard/i18n/messages.rb +55 -0
- data/lib/yard/i18n/pot_generator.rb +280 -0
- data/lib/yard/i18n/text.rb +173 -0
- data/lib/yard/logging.rb +190 -0
- data/lib/yard/options.rb +216 -0
- data/lib/yard/parser/base.rb +56 -0
- data/lib/yard/parser/c/c_parser.rb +231 -0
- data/lib/yard/parser/c/comment_parser.rb +131 -0
- data/lib/yard/parser/c/statement.rb +63 -0
- data/lib/yard/parser/ruby/ast_node.rb +496 -0
- data/lib/yard/parser/ruby/legacy/ruby_lex.rb +1378 -0
- data/lib/yard/parser/ruby/legacy/ruby_parser.rb +31 -0
- data/lib/yard/parser/ruby/legacy/statement.rb +65 -0
- data/lib/yard/parser/ruby/legacy/statement_list.rb +384 -0
- data/lib/yard/parser/ruby/legacy/token_list.rb +71 -0
- data/lib/yard/parser/ruby/ruby_parser.rb +625 -0
- data/lib/yard/parser/source_parser.rb +517 -0
- data/lib/yard/rake/yardoc_task.rb +74 -0
- data/lib/yard/registry.rb +438 -0
- data/lib/yard/registry_store.rb +319 -0
- data/lib/yard/rubygems/backports/LICENSE.txt +57 -0
- data/lib/yard/rubygems/backports/MIT.txt +20 -0
- data/lib/yard/rubygems/backports/gem.rb +9 -0
- data/lib/yard/rubygems/backports/source_index.rb +370 -0
- data/lib/yard/rubygems/backports.rb +8 -0
- data/lib/yard/rubygems/doc_manager.rb +88 -0
- data/lib/yard/rubygems/specification.rb +41 -0
- data/lib/yard/serializers/base.rb +80 -0
- data/lib/yard/serializers/file_system_serializer.rb +90 -0
- data/lib/yard/serializers/process_serializer.rb +24 -0
- data/lib/yard/serializers/stdout_serializer.rb +32 -0
- data/lib/yard/serializers/yardoc_serializer.rb +124 -0
- data/lib/yard/server/adapter.rb +100 -0
- data/lib/yard/server/commands/base.rb +192 -0
- data/lib/yard/server/commands/display_file_command.rb +24 -0
- data/lib/yard/server/commands/display_object_command.rb +58 -0
- data/lib/yard/server/commands/frames_command.rb +15 -0
- data/lib/yard/server/commands/library_command.rb +148 -0
- data/lib/yard/server/commands/library_index_command.rb +24 -0
- data/lib/yard/server/commands/list_command.rb +24 -0
- data/lib/yard/server/commands/search_command.rb +78 -0
- data/lib/yard/server/commands/static_file_command.rb +57 -0
- data/lib/yard/server/doc_server_helper.rb +76 -0
- data/lib/yard/server/doc_server_serializer.rb +33 -0
- data/lib/yard/server/library_version.rb +227 -0
- data/lib/yard/server/rack_adapter.rb +88 -0
- data/lib/yard/server/router.rb +176 -0
- data/lib/yard/server/static_caching.rb +45 -0
- data/lib/yard/server/templates/default/fulldoc/html/css/custom.css +78 -0
- data/lib/yard/server/templates/default/fulldoc/html/images/processing.gif +0 -0
- data/lib/yard/server/templates/default/fulldoc/html/js/autocomplete.js +12 -0
- data/lib/yard/server/templates/default/layout/html/breadcrumb.erb +46 -0
- data/lib/yard/server/templates/default/layout/html/script_setup.erb +8 -0
- data/lib/yard/server/templates/default/layout/html/setup.rb +7 -0
- data/lib/yard/server/templates/default/method_details/html/permalink.erb +4 -0
- data/lib/yard/server/templates/default/method_details/html/setup.rb +4 -0
- data/lib/yard/server/templates/doc_server/library_list/html/contents.erb +13 -0
- data/lib/yard/server/templates/doc_server/library_list/html/headers.erb +26 -0
- data/lib/yard/server/templates/doc_server/library_list/html/library_list.erb +12 -0
- data/lib/yard/server/templates/doc_server/library_list/html/setup.rb +3 -0
- data/lib/yard/server/templates/doc_server/library_list/html/title.erb +2 -0
- data/lib/yard/server/templates/doc_server/processing/html/processing.erb +51 -0
- data/lib/yard/server/templates/doc_server/processing/html/setup.rb +3 -0
- data/lib/yard/server/templates/doc_server/search/html/search.erb +18 -0
- data/lib/yard/server/templates/doc_server/search/html/setup.rb +8 -0
- data/lib/yard/server/webrick_adapter.rb +43 -0
- data/lib/yard/server.rb +11 -0
- data/lib/yard/tags/default_factory.rb +176 -0
- data/lib/yard/tags/default_tag.rb +12 -0
- data/lib/yard/tags/directives.rb +599 -0
- data/lib/yard/tags/library.rb +630 -0
- data/lib/yard/tags/option_tag.rb +12 -0
- data/lib/yard/tags/overload_tag.rb +66 -0
- data/lib/yard/tags/ref_tag.rb +7 -0
- data/lib/yard/tags/ref_tag_list.rb +27 -0
- data/lib/yard/tags/tag.rb +57 -0
- data/lib/yard/tags/tag_format_error.rb +6 -0
- data/lib/yard/templates/engine.rb +185 -0
- data/lib/yard/templates/erb_cache.rb +22 -0
- data/lib/yard/templates/helpers/base_helper.rb +212 -0
- data/lib/yard/templates/helpers/filter_helper.rb +26 -0
- data/lib/yard/templates/helpers/html_helper.rb +599 -0
- data/lib/yard/templates/helpers/html_syntax_highlight_helper.rb +59 -0
- data/lib/yard/templates/helpers/markup/rdoc_markdown.rb +22 -0
- data/lib/yard/templates/helpers/markup/rdoc_markup.rb +106 -0
- data/lib/yard/templates/helpers/markup_helper.rb +169 -0
- data/lib/yard/templates/helpers/method_helper.rb +74 -0
- data/lib/yard/templates/helpers/module_helper.rb +19 -0
- data/lib/yard/templates/helpers/text_helper.rb +95 -0
- data/lib/yard/templates/helpers/uml_helper.rb +46 -0
- data/lib/yard/templates/section.rb +106 -0
- data/lib/yard/templates/template.rb +407 -0
- data/lib/yard/templates/template_options.rb +88 -0
- data/lib/yard/verifier.rb +148 -0
- data/lib/yard/version.rb +3 -0
- data/lib/yard.rb +71 -0
- data/po/ja.po +31118 -0
- data/spec/cli/command_parser_spec.rb +43 -0
- data/spec/cli/command_spec.rb +36 -0
- data/spec/cli/config_spec.rb +92 -0
- data/spec/cli/diff_spec.rb +260 -0
- data/spec/cli/display_spec.rb +30 -0
- data/spec/cli/gems_spec.rb +81 -0
- data/spec/cli/graph_spec.rb +17 -0
- data/spec/cli/help_spec.rb +22 -0
- data/spec/cli/i18n_spec.rb +111 -0
- data/spec/cli/list_spec.rb +8 -0
- data/spec/cli/markup_types_spec.rb +22 -0
- data/spec/cli/server_spec.rb +327 -0
- data/spec/cli/stats_spec.rb +90 -0
- data/spec/cli/yardoc_spec.rb +804 -0
- data/spec/cli/yri_spec.rb +99 -0
- data/spec/code_objects/base_spec.rb +438 -0
- data/spec/code_objects/class_object_spec.rb +225 -0
- data/spec/code_objects/code_object_list_spec.rb +33 -0
- data/spec/code_objects/constants_spec.rb +82 -0
- data/spec/code_objects/extra_file_object_spec.rb +147 -0
- data/spec/code_objects/macro_object_spec.rb +148 -0
- data/spec/code_objects/method_object_spec.rb +175 -0
- data/spec/code_objects/module_object_spec.rb +141 -0
- data/spec/code_objects/namespace_object_spec.rb +170 -0
- data/spec/code_objects/proxy_spec.rb +140 -0
- data/spec/code_objects/spec_helper.rb +3 -0
- data/spec/config_spec.rb +176 -0
- data/spec/core_ext/array_spec.rb +14 -0
- data/spec/core_ext/file_spec.rb +68 -0
- data/spec/core_ext/hash_spec.rb +14 -0
- data/spec/core_ext/insertion_spec.rb +37 -0
- data/spec/core_ext/module_spec.rb +15 -0
- data/spec/core_ext/string_spec.rb +42 -0
- data/spec/core_ext/symbol_hash_spec.rb +86 -0
- data/spec/docstring_parser_spec.rb +228 -0
- data/spec/docstring_spec.rb +335 -0
- data/spec/handlers/alias_handler_spec.rb +80 -0
- data/spec/handlers/attribute_handler_spec.rb +94 -0
- data/spec/handlers/base_spec.rb +206 -0
- data/spec/handlers/c/alias_handler_spec.rb +33 -0
- data/spec/handlers/c/attribute_handler_spec.rb +40 -0
- data/spec/handlers/c/class_handler_spec.rb +63 -0
- data/spec/handlers/c/constant_handler_spec.rb +68 -0
- data/spec/handlers/c/init_handler_spec.rb +47 -0
- data/spec/handlers/c/method_handler_spec.rb +229 -0
- data/spec/handlers/c/mixin_handler_spec.rb +27 -0
- data/spec/handlers/c/module_handler_spec.rb +38 -0
- data/spec/handlers/c/override_comment_handler_spec.rb +46 -0
- data/spec/handlers/c/path_handler_spec.rb +35 -0
- data/spec/handlers/c/spec_helper.rb +13 -0
- data/spec/handlers/c/struct_handler_spec.rb +15 -0
- data/spec/handlers/class_condition_handler_spec.rb +67 -0
- data/spec/handlers/class_handler_spec.rb +246 -0
- data/spec/handlers/class_variable_handler_spec.rb +11 -0
- data/spec/handlers/constant_handler_spec.rb +64 -0
- data/spec/handlers/dsl_handler_spec.rb +197 -0
- data/spec/handlers/examples/alias_handler_001.rb.txt +44 -0
- data/spec/handlers/examples/attribute_handler_001.rb.txt +32 -0
- data/spec/handlers/examples/class_condition_handler_001.rb.txt +69 -0
- data/spec/handlers/examples/class_handler_001.rb.txt +120 -0
- data/spec/handlers/examples/class_variable_handler_001.rb.txt +10 -0
- data/spec/handlers/examples/constant_handler_001.rb.txt +25 -0
- data/spec/handlers/examples/dsl_handler_001.rb.txt +125 -0
- data/spec/handlers/examples/exception_handler_001.rb.txt +59 -0
- data/spec/handlers/examples/extend_handler_001.rb.txt +16 -0
- data/spec/handlers/examples/method_condition_handler_001.rb.txt +10 -0
- data/spec/handlers/examples/method_handler_001.rb.txt +126 -0
- data/spec/handlers/examples/mixin_handler_001.rb.txt +37 -0
- data/spec/handlers/examples/module_handler_001.rb.txt +29 -0
- data/spec/handlers/examples/private_constant_handler_001.rb.txt +8 -0
- data/spec/handlers/examples/process_handler_001.rb.txt +11 -0
- data/spec/handlers/examples/visibility_handler_001.rb.txt +32 -0
- data/spec/handlers/examples/yield_handler_001.rb.txt +54 -0
- data/spec/handlers/exception_handler_spec.rb +48 -0
- data/spec/handlers/extend_handler_spec.rb +23 -0
- data/spec/handlers/legacy_base_spec.rb +128 -0
- data/spec/handlers/method_condition_handler_spec.rb +14 -0
- data/spec/handlers/method_handler_spec.rb +184 -0
- data/spec/handlers/mixin_handler_spec.rb +55 -0
- data/spec/handlers/module_function_handler_spec.rb +105 -0
- data/spec/handlers/module_handler_spec.rb +34 -0
- data/spec/handlers/private_constant_handler_spec.rb +24 -0
- data/spec/handlers/processor_spec.rb +34 -0
- data/spec/handlers/ruby/base_spec.rb +94 -0
- data/spec/handlers/ruby/legacy/base_spec.rb +82 -0
- data/spec/handlers/spec_helper.rb +33 -0
- data/spec/handlers/visibility_handler_spec.rb +39 -0
- data/spec/handlers/yield_handler_spec.rb +51 -0
- data/spec/i18n/locale_spec.rb +68 -0
- data/spec/i18n/message_spec.rb +52 -0
- data/spec/i18n/messages_spec.rb +67 -0
- data/spec/i18n/pot_generator_spec.rb +262 -0
- data/spec/i18n/text_spec.rb +180 -0
- data/spec/logging_spec.rb +35 -0
- data/spec/options_spec.rb +171 -0
- data/spec/parser/base_spec.rb +24 -0
- data/spec/parser/c_parser_spec.rb +171 -0
- data/spec/parser/examples/array.c.txt +3887 -0
- data/spec/parser/examples/example1.rb.txt +8 -0
- data/spec/parser/examples/extrafile.c.txt +8 -0
- data/spec/parser/examples/multifile.c.txt +22 -0
- data/spec/parser/examples/override.c.txt +424 -0
- data/spec/parser/examples/parse_in_order_001.rb.txt +2 -0
- data/spec/parser/examples/parse_in_order_002.rb.txt +2 -0
- data/spec/parser/examples/tag_handler_001.rb.txt +8 -0
- data/spec/parser/ruby/ast_node_spec.rb +33 -0
- data/spec/parser/ruby/legacy/statement_list_spec.rb +299 -0
- data/spec/parser/ruby/legacy/token_list_spec.rb +77 -0
- data/spec/parser/ruby/ruby_parser_spec.rb +334 -0
- data/spec/parser/source_parser_spec.rb +717 -0
- data/spec/parser/tag_parsing_spec.rb +18 -0
- data/spec/rake/yardoc_task_spec.rb +101 -0
- data/spec/registry_spec.rb +393 -0
- data/spec/registry_store_spec.rb +315 -0
- data/spec/rubygems/doc_manager_spec.rb +112 -0
- data/spec/serializers/data/serialized_yardoc/checksums +1 -0
- data/spec/serializers/data/serialized_yardoc/objects/Foo/bar_i.dat +0 -0
- data/spec/serializers/data/serialized_yardoc/objects/Foo/baz_i.dat +0 -0
- data/spec/serializers/data/serialized_yardoc/objects/Foo.dat +0 -0
- data/spec/serializers/data/serialized_yardoc/objects/root.dat +0 -0
- data/spec/serializers/data/serialized_yardoc/proxy_types +2 -0
- data/spec/serializers/file_system_serializer_spec.rb +124 -0
- data/spec/serializers/spec_helper.rb +2 -0
- data/spec/serializers/yardoc_serializer_spec.rb +46 -0
- data/spec/server/adapter_spec.rb +38 -0
- data/spec/server/commands/base_spec.rb +87 -0
- data/spec/server/commands/library_command_spec.rb +39 -0
- data/spec/server/commands/static_file_command_spec.rb +84 -0
- data/spec/server/doc_server_helper_spec.rb +53 -0
- data/spec/server/doc_server_serializer_spec.rb +45 -0
- data/spec/server/rack_adapter_spec.rb +20 -0
- data/spec/server/router_spec.rb +122 -0
- data/spec/server/spec_helper.rb +17 -0
- data/spec/server/static_caching_spec.rb +39 -0
- data/spec/server/webrick_servlet_spec.rb +20 -0
- data/spec/server_spec.rb +10 -0
- data/spec/spec_helper.rb +128 -0
- data/spec/tags/default_factory_spec.rb +152 -0
- data/spec/tags/default_tag_spec.rb +11 -0
- data/spec/tags/directives_spec.rb +453 -0
- data/spec/tags/library_spec.rb +34 -0
- data/spec/tags/overload_tag_spec.rb +53 -0
- data/spec/tags/ref_tag_list_spec.rb +53 -0
- data/spec/templates/class_spec.rb +44 -0
- data/spec/templates/constant_spec.rb +40 -0
- data/spec/templates/engine_spec.rb +121 -0
- data/spec/templates/examples/class001.html +280 -0
- data/spec/templates/examples/class001.txt +36 -0
- data/spec/templates/examples/class002.html +35 -0
- data/spec/templates/examples/constant001.txt +25 -0
- data/spec/templates/examples/constant002.txt +7 -0
- data/spec/templates/examples/constant003.txt +11 -0
- data/spec/templates/examples/method001.html +130 -0
- data/spec/templates/examples/method001.txt +35 -0
- data/spec/templates/examples/method002.html +86 -0
- data/spec/templates/examples/method002.txt +20 -0
- data/spec/templates/examples/method003.html +159 -0
- data/spec/templates/examples/method003.txt +45 -0
- data/spec/templates/examples/method004.html +44 -0
- data/spec/templates/examples/method004.txt +10 -0
- data/spec/templates/examples/method005.html +99 -0
- data/spec/templates/examples/method005.txt +33 -0
- data/spec/templates/examples/module001.dot +33 -0
- data/spec/templates/examples/module001.html +825 -0
- data/spec/templates/examples/module001.txt +33 -0
- data/spec/templates/examples/module002.html +318 -0
- data/spec/templates/examples/module003.html +185 -0
- data/spec/templates/examples/module004.html +387 -0
- data/spec/templates/examples/tag001.txt +82 -0
- data/spec/templates/helpers/base_helper_spec.rb +175 -0
- data/spec/templates/helpers/html_helper_spec.rb +612 -0
- data/spec/templates/helpers/html_syntax_highlight_helper_spec.rb +48 -0
- data/spec/templates/helpers/markup/rdoc_markup_spec.rb +93 -0
- data/spec/templates/helpers/markup_helper_spec.rb +135 -0
- data/spec/templates/helpers/method_helper_spec.rb +82 -0
- data/spec/templates/helpers/shared_signature_examples.rb +123 -0
- data/spec/templates/helpers/text_helper_spec.rb +44 -0
- data/spec/templates/method_spec.rb +102 -0
- data/spec/templates/module_spec.rb +181 -0
- data/spec/templates/onefile_spec.rb +64 -0
- data/spec/templates/section_spec.rb +146 -0
- data/spec/templates/spec_helper.rb +73 -0
- data/spec/templates/tag_spec.rb +51 -0
- data/spec/templates/template_spec.rb +409 -0
- data/spec/verifier_spec.rb +106 -0
- data/templates/default/class/dot/setup.rb +6 -0
- data/templates/default/class/dot/superklass.erb +3 -0
- data/templates/default/class/html/constructor_details.erb +8 -0
- data/templates/default/class/html/setup.rb +1 -0
- data/templates/default/class/html/subclasses.erb +4 -0
- data/templates/default/class/setup.rb +36 -0
- data/templates/default/class/text/setup.rb +11 -0
- data/templates/default/class/text/subclasses.erb +5 -0
- data/templates/default/constant/text/header.erb +11 -0
- data/templates/default/constant/text/setup.rb +3 -0
- data/templates/default/docstring/html/abstract.erb +4 -0
- data/templates/default/docstring/html/deprecated.erb +1 -0
- data/templates/default/docstring/html/index.erb +5 -0
- data/templates/default/docstring/html/note.erb +6 -0
- data/templates/default/docstring/html/private.erb +4 -0
- data/templates/default/docstring/html/returns_void.erb +1 -0
- data/templates/default/docstring/html/text.erb +1 -0
- data/templates/default/docstring/html/todo.erb +6 -0
- data/templates/default/docstring/setup.rb +51 -0
- data/templates/default/docstring/text/abstract.erb +2 -0
- data/templates/default/docstring/text/deprecated.erb +2 -0
- data/templates/default/docstring/text/index.erb +2 -0
- data/templates/default/docstring/text/note.erb +4 -0
- data/templates/default/docstring/text/private.erb +2 -0
- data/templates/default/docstring/text/returns_void.erb +1 -0
- data/templates/default/docstring/text/text.erb +1 -0
- data/templates/default/docstring/text/todo.erb +4 -0
- data/templates/default/fulldoc/html/css/common.css +1 -0
- data/templates/default/fulldoc/html/css/full_list.css +57 -0
- data/templates/default/fulldoc/html/css/style.css +338 -0
- data/templates/default/fulldoc/html/frames.erb +28 -0
- data/templates/default/fulldoc/html/full_list.erb +40 -0
- data/templates/default/fulldoc/html/full_list_class.erb +2 -0
- data/templates/default/fulldoc/html/full_list_file.erb +5 -0
- data/templates/default/fulldoc/html/full_list_method.erb +8 -0
- data/templates/default/fulldoc/html/js/app.js +214 -0
- data/templates/default/fulldoc/html/js/full_list.js +178 -0
- data/templates/default/fulldoc/html/js/jquery.js +4 -0
- data/templates/default/fulldoc/html/setup.rb +199 -0
- data/templates/default/layout/dot/header.erb +6 -0
- data/templates/default/layout/dot/setup.rb +14 -0
- data/templates/default/layout/html/breadcrumb.erb +13 -0
- data/templates/default/layout/html/files.erb +11 -0
- data/templates/default/layout/html/footer.erb +5 -0
- data/templates/default/layout/html/headers.erb +14 -0
- data/templates/default/layout/html/index.erb +2 -0
- data/templates/default/layout/html/layout.erb +20 -0
- data/templates/default/layout/html/listing.erb +4 -0
- data/templates/default/layout/html/objects.erb +32 -0
- data/templates/default/layout/html/script_setup.erb +5 -0
- data/templates/default/layout/html/search.erb +8 -0
- data/templates/default/layout/html/setup.rb +71 -0
- data/templates/default/method/html/header.erb +16 -0
- data/templates/default/method/setup.rb +3 -0
- data/templates/default/method/text/header.erb +1 -0
- data/templates/default/method_details/html/header.erb +3 -0
- data/templates/default/method_details/html/method_signature.erb +25 -0
- data/templates/default/method_details/html/source.erb +10 -0
- data/templates/default/method_details/setup.rb +10 -0
- data/templates/default/method_details/text/header.erb +10 -0
- data/templates/default/method_details/text/method_signature.erb +12 -0
- data/templates/default/method_details/text/setup.rb +10 -0
- data/templates/default/module/dot/child.erb +1 -0
- data/templates/default/module/dot/dependencies.erb +3 -0
- data/templates/default/module/dot/header.erb +6 -0
- data/templates/default/module/dot/info.erb +14 -0
- data/templates/default/module/dot/setup.rb +14 -0
- data/templates/default/module/html/attribute_details.erb +10 -0
- data/templates/default/module/html/attribute_summary.erb +8 -0
- data/templates/default/module/html/box_info.erb +37 -0
- data/templates/default/module/html/children.erb +8 -0
- data/templates/default/module/html/constant_summary.erb +13 -0
- data/templates/default/module/html/defines.erb +3 -0
- data/templates/default/module/html/header.erb +5 -0
- data/templates/default/module/html/inherited_attributes.erb +14 -0
- data/templates/default/module/html/inherited_constants.erb +8 -0
- data/templates/default/module/html/inherited_methods.erb +19 -0
- data/templates/default/module/html/item_summary.erb +40 -0
- data/templates/default/module/html/method_details_list.erb +9 -0
- data/templates/default/module/html/method_summary.erb +14 -0
- data/templates/default/module/html/methodmissing.erb +12 -0
- data/templates/default/module/html/pre_docstring.erb +1 -0
- data/templates/default/module/setup.rb +164 -0
- data/templates/default/module/text/children.erb +10 -0
- data/templates/default/module/text/class_meths_list.erb +8 -0
- data/templates/default/module/text/extends.erb +8 -0
- data/templates/default/module/text/header.erb +7 -0
- data/templates/default/module/text/includes.erb +8 -0
- data/templates/default/module/text/instance_meths_list.erb +8 -0
- data/templates/default/module/text/setup.rb +12 -0
- data/templates/default/onefile/html/files.erb +5 -0
- data/templates/default/onefile/html/headers.erb +6 -0
- data/templates/default/onefile/html/layout.erb +17 -0
- data/templates/default/onefile/html/readme.erb +3 -0
- data/templates/default/onefile/html/setup.rb +61 -0
- data/templates/default/root/dot/child.erb +3 -0
- data/templates/default/root/dot/setup.rb +5 -0
- data/templates/default/root/html/setup.rb +1 -0
- data/templates/default/tags/html/example.erb +11 -0
- data/templates/default/tags/html/index.erb +3 -0
- data/templates/default/tags/html/option.erb +24 -0
- data/templates/default/tags/html/overload.erb +14 -0
- data/templates/default/tags/html/see.erb +8 -0
- data/templates/default/tags/html/tag.erb +20 -0
- data/templates/default/tags/setup.rb +55 -0
- data/templates/default/tags/text/example.erb +12 -0
- data/templates/default/tags/text/index.erb +1 -0
- data/templates/default/tags/text/option.erb +20 -0
- data/templates/default/tags/text/overload.erb +19 -0
- data/templates/default/tags/text/see.erb +11 -0
- data/templates/default/tags/text/tag.erb +13 -0
- data/templates/guide/class/html/setup.rb +1 -0
- data/templates/guide/docstring/html/setup.rb +1 -0
- data/templates/guide/fulldoc/html/css/style.css +108 -0
- data/templates/guide/fulldoc/html/js/app.js +33 -0
- data/templates/guide/fulldoc/html/setup.rb +73 -0
- data/templates/guide/layout/html/layout.erb +81 -0
- data/templates/guide/layout/html/setup.rb +28 -0
- data/templates/guide/method/html/header.erb +18 -0
- data/templates/guide/method/html/setup.rb +21 -0
- data/templates/guide/module/html/header.erb +7 -0
- data/templates/guide/module/html/method_list.erb +5 -0
- data/templates/guide/module/html/setup.rb +26 -0
- data/templates/guide/onefile/html/files.erb +4 -0
- data/templates/guide/onefile/html/setup.rb +5 -0
- data/templates/guide/onefile/html/toc.erb +3 -0
- data/templates/guide/tags/html/setup.rb +8 -0
- metadata +689 -0
|
@@ -0,0 +1,370 @@
|
|
|
1
|
+
#--
|
|
2
|
+
# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
|
|
3
|
+
# All rights reserved.
|
|
4
|
+
# See LICENSE.txt for permissions.
|
|
5
|
+
#++
|
|
6
|
+
|
|
7
|
+
require 'rubygems/specification'
|
|
8
|
+
|
|
9
|
+
##
|
|
10
|
+
# The SourceIndex object indexes all the gems available from a
|
|
11
|
+
# particular source (e.g. a list of gem directories, or a remote
|
|
12
|
+
# source). A SourceIndex maps a gem full name to a gem
|
|
13
|
+
# specification.
|
|
14
|
+
#
|
|
15
|
+
# NOTE:: The class used to be named Cache, but that became
|
|
16
|
+
# confusing when cached source fetchers where introduced. The
|
|
17
|
+
# constant Gem::Cache is an alias for this class to allow old
|
|
18
|
+
# YAMLized source index objects to load properly.
|
|
19
|
+
|
|
20
|
+
class Gem::SourceIndex
|
|
21
|
+
# Undef old methods
|
|
22
|
+
alias old_initialize initialize
|
|
23
|
+
undef old_initialize
|
|
24
|
+
%w(all_gems prerelease_gems load_gems_in latest_specs prerelease_specs
|
|
25
|
+
released_specs add_spec add_specs remove_spec each specification
|
|
26
|
+
index_signature gem_signature size length find_name search released_gems
|
|
27
|
+
refresh! outdated == dump gems spec_dirs spec_dirs=).each do |meth|
|
|
28
|
+
undef_method(meth) if method_defined?(meth)
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
include Enumerable
|
|
32
|
+
|
|
33
|
+
attr_reader :gems # :nodoc:
|
|
34
|
+
|
|
35
|
+
##
|
|
36
|
+
# Directories to use to refresh this SourceIndex when calling refresh!
|
|
37
|
+
|
|
38
|
+
attr_accessor :spec_dirs
|
|
39
|
+
|
|
40
|
+
class << self
|
|
41
|
+
# Undef old methods
|
|
42
|
+
%w(from_installed_gems installed_spec_directories
|
|
43
|
+
from_gems_in load_specification).each do |meth|
|
|
44
|
+
if instance_methods(true).find {|m| m.to_s == meth }
|
|
45
|
+
undef_method(meth)
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
##
|
|
50
|
+
# Factory method to construct a source index instance for a given
|
|
51
|
+
# path.
|
|
52
|
+
#
|
|
53
|
+
# deprecated::
|
|
54
|
+
# If supplied, from_installed_gems will act just like
|
|
55
|
+
# +from_gems_in+. This argument is deprecated and is provided
|
|
56
|
+
# just for backwards compatibility, and should not generally
|
|
57
|
+
# be used.
|
|
58
|
+
#
|
|
59
|
+
# return::
|
|
60
|
+
# SourceIndex instance
|
|
61
|
+
|
|
62
|
+
def from_installed_gems(*deprecated)
|
|
63
|
+
if deprecated.empty?
|
|
64
|
+
from_gems_in(*installed_spec_directories)
|
|
65
|
+
else
|
|
66
|
+
from_gems_in(*deprecated) # HACK warn
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
##
|
|
71
|
+
# Returns a list of directories from Gem.path that contain specifications.
|
|
72
|
+
|
|
73
|
+
def installed_spec_directories
|
|
74
|
+
Gem.path.collect { |dir| File.join(dir, "specifications") }
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
##
|
|
78
|
+
# Creates a new SourceIndex from the ruby format gem specifications in
|
|
79
|
+
# +spec_dirs+.
|
|
80
|
+
|
|
81
|
+
def from_gems_in(*spec_dirs)
|
|
82
|
+
source_index = new
|
|
83
|
+
source_index.spec_dirs = spec_dirs
|
|
84
|
+
source_index.refresh!
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
##
|
|
88
|
+
# Loads a ruby-format specification from +file_name+ and returns the
|
|
89
|
+
# loaded spec.
|
|
90
|
+
|
|
91
|
+
def load_specification(file_name)
|
|
92
|
+
Gem::Specification.load file_name
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
##
|
|
98
|
+
# Constructs a source index instance from the provided specifications, which
|
|
99
|
+
# is a Hash of gem full names and Gem::Specifications.
|
|
100
|
+
#--
|
|
101
|
+
# TODO merge @gems and @prerelease_gems and provide a separate method
|
|
102
|
+
# #prerelease_gems
|
|
103
|
+
|
|
104
|
+
def initialize(specifications={})
|
|
105
|
+
@gems = {}
|
|
106
|
+
specifications.each{ |full_name, spec| add_spec spec }
|
|
107
|
+
@spec_dirs = nil
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
# TODO: remove method
|
|
111
|
+
def all_gems
|
|
112
|
+
@gems
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
def prerelease_gems
|
|
116
|
+
@gems.reject{ |name, gem| !gem.version.prerelease? }
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
def released_gems
|
|
120
|
+
@gems.reject{ |name, gem| gem.version.prerelease? }
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
##
|
|
124
|
+
# Reconstruct the source index from the specifications in +spec_dirs+.
|
|
125
|
+
|
|
126
|
+
def load_gems_in(*spec_dirs)
|
|
127
|
+
@gems.clear
|
|
128
|
+
|
|
129
|
+
spec_dirs.reverse_each do |spec_dir|
|
|
130
|
+
spec_files = Dir.glob File.join(spec_dir, '*.gemspec')
|
|
131
|
+
|
|
132
|
+
spec_files.each do |spec_file|
|
|
133
|
+
gemspec = Gem::Specification.load spec_file
|
|
134
|
+
add_spec gemspec if gemspec
|
|
135
|
+
end
|
|
136
|
+
end
|
|
137
|
+
|
|
138
|
+
self
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
##
|
|
142
|
+
# Returns an Array specifications for the latest released versions
|
|
143
|
+
# of each gem in this index.
|
|
144
|
+
|
|
145
|
+
def latest_specs(include_prerelease=false)
|
|
146
|
+
result = Hash.new { |h,k| h[k] = [] }
|
|
147
|
+
latest = {}
|
|
148
|
+
|
|
149
|
+
sort.each do |_, spec|
|
|
150
|
+
name = spec.name
|
|
151
|
+
curr_ver = spec.version
|
|
152
|
+
prev_ver = latest.key?(name) ? latest[name].version : nil
|
|
153
|
+
|
|
154
|
+
next if !include_prerelease && curr_ver.prerelease?
|
|
155
|
+
next unless prev_ver.nil? or curr_ver >= prev_ver or
|
|
156
|
+
latest[name].platform != Gem::Platform::RUBY
|
|
157
|
+
|
|
158
|
+
if prev_ver.nil? or
|
|
159
|
+
(curr_ver > prev_ver and spec.platform == Gem::Platform::RUBY) then
|
|
160
|
+
result[name].clear
|
|
161
|
+
latest[name] = spec
|
|
162
|
+
end
|
|
163
|
+
|
|
164
|
+
if spec.platform != Gem::Platform::RUBY then
|
|
165
|
+
result[name].delete_if do |result_spec|
|
|
166
|
+
result_spec.platform == spec.platform
|
|
167
|
+
end
|
|
168
|
+
end
|
|
169
|
+
|
|
170
|
+
result[name] << spec
|
|
171
|
+
end
|
|
172
|
+
|
|
173
|
+
# TODO: why is this a hash while @gems is an array? Seems like
|
|
174
|
+
# structural similarity would be good.
|
|
175
|
+
result.values.flatten
|
|
176
|
+
end
|
|
177
|
+
|
|
178
|
+
##
|
|
179
|
+
# An array including only the prerelease gemspecs
|
|
180
|
+
|
|
181
|
+
def prerelease_specs
|
|
182
|
+
prerelease_gems.values
|
|
183
|
+
end
|
|
184
|
+
|
|
185
|
+
##
|
|
186
|
+
# An array including only the released gemspecs
|
|
187
|
+
|
|
188
|
+
def released_specs
|
|
189
|
+
released_gems.values
|
|
190
|
+
end
|
|
191
|
+
|
|
192
|
+
##
|
|
193
|
+
# Add a gem specification to the source index.
|
|
194
|
+
|
|
195
|
+
def add_spec(gem_spec, name = gem_spec.full_name)
|
|
196
|
+
# No idea why, but the Indexer wants to insert them using original_name
|
|
197
|
+
# instead of full_name. So we make it an optional arg.
|
|
198
|
+
@gems[name] = gem_spec
|
|
199
|
+
end
|
|
200
|
+
|
|
201
|
+
##
|
|
202
|
+
# Add gem specifications to the source index.
|
|
203
|
+
|
|
204
|
+
def add_specs(*gem_specs)
|
|
205
|
+
gem_specs.each do |spec|
|
|
206
|
+
add_spec spec
|
|
207
|
+
end
|
|
208
|
+
end
|
|
209
|
+
|
|
210
|
+
##
|
|
211
|
+
# Remove a gem specification named +full_name+.
|
|
212
|
+
|
|
213
|
+
def remove_spec(full_name)
|
|
214
|
+
@gems.delete full_name
|
|
215
|
+
end
|
|
216
|
+
|
|
217
|
+
##
|
|
218
|
+
# Iterate over the specifications in the source index.
|
|
219
|
+
|
|
220
|
+
def each(&block) # :yields: gem.full_name, gem
|
|
221
|
+
@gems.each(&block)
|
|
222
|
+
end
|
|
223
|
+
|
|
224
|
+
##
|
|
225
|
+
# The gem specification given a full gem spec name.
|
|
226
|
+
|
|
227
|
+
def specification(full_name)
|
|
228
|
+
@gems[full_name]
|
|
229
|
+
end
|
|
230
|
+
|
|
231
|
+
##
|
|
232
|
+
# The signature for the source index. Changes in the signature indicate a
|
|
233
|
+
# change in the index.
|
|
234
|
+
|
|
235
|
+
def index_signature
|
|
236
|
+
require 'digest'
|
|
237
|
+
|
|
238
|
+
Digest::SHA256.new.hexdigest(@gems.keys.sort.join(',')).to_s
|
|
239
|
+
end
|
|
240
|
+
|
|
241
|
+
##
|
|
242
|
+
# The signature for the given gem specification.
|
|
243
|
+
|
|
244
|
+
def gem_signature(gem_full_name)
|
|
245
|
+
require 'digest'
|
|
246
|
+
|
|
247
|
+
Digest::SHA256.new.hexdigest(@gems[gem_full_name].to_yaml).to_s
|
|
248
|
+
end
|
|
249
|
+
|
|
250
|
+
def size
|
|
251
|
+
@gems.size
|
|
252
|
+
end
|
|
253
|
+
alias length size
|
|
254
|
+
|
|
255
|
+
##
|
|
256
|
+
# Find a gem by an exact match on the short name.
|
|
257
|
+
|
|
258
|
+
def find_name(gem_name, requirement = Gem::Requirement.default)
|
|
259
|
+
dep = Gem::Dependency.new gem_name, requirement
|
|
260
|
+
search dep
|
|
261
|
+
end
|
|
262
|
+
|
|
263
|
+
##
|
|
264
|
+
# Search for a gem by Gem::Dependency +gem_pattern+. If +only_platform+
|
|
265
|
+
# is true, only gems matching Gem::Platform.local will be returned. An
|
|
266
|
+
# Array of matching Gem::Specification objects is returned.
|
|
267
|
+
#
|
|
268
|
+
# For backwards compatibility, a String or Regexp pattern may be passed as
|
|
269
|
+
# +gem_pattern+, and a Gem::Requirement for +platform_only+. This
|
|
270
|
+
# behavior is deprecated and will be removed.
|
|
271
|
+
|
|
272
|
+
def search(gem_pattern, platform_only = false)
|
|
273
|
+
requirement = nil
|
|
274
|
+
only_platform = false
|
|
275
|
+
|
|
276
|
+
# TODO - Remove support and warning for legacy arguments after 2008/11
|
|
277
|
+
unless Gem::Dependency === gem_pattern
|
|
278
|
+
warn "#{Gem.location_of_caller.join ':'}:Warning: Gem::SourceIndex#search support for #{gem_pattern.class} patterns is deprecated, use #find_name"
|
|
279
|
+
end
|
|
280
|
+
|
|
281
|
+
case gem_pattern
|
|
282
|
+
when Regexp then
|
|
283
|
+
requirement = platform_only || Gem::Requirement.default
|
|
284
|
+
when Gem::Dependency then
|
|
285
|
+
only_platform = platform_only
|
|
286
|
+
requirement = gem_pattern.requirement
|
|
287
|
+
|
|
288
|
+
gem_pattern = if Regexp === gem_pattern.name then
|
|
289
|
+
gem_pattern.name
|
|
290
|
+
elsif gem_pattern.name.empty? then
|
|
291
|
+
//
|
|
292
|
+
else
|
|
293
|
+
/^#{Regexp.escape gem_pattern.name}$/
|
|
294
|
+
end
|
|
295
|
+
else
|
|
296
|
+
requirement = platform_only || Gem::Requirement.default
|
|
297
|
+
gem_pattern = /#{gem_pattern}/i
|
|
298
|
+
end
|
|
299
|
+
|
|
300
|
+
unless Gem::Requirement === requirement then
|
|
301
|
+
requirement = Gem::Requirement.create requirement
|
|
302
|
+
end
|
|
303
|
+
|
|
304
|
+
specs = all_gems.values.select do |spec|
|
|
305
|
+
spec.name =~ gem_pattern and
|
|
306
|
+
requirement.satisfied_by? spec.version
|
|
307
|
+
end
|
|
308
|
+
|
|
309
|
+
if only_platform then
|
|
310
|
+
specs = specs.select do |spec|
|
|
311
|
+
Gem::Platform.match spec.platform
|
|
312
|
+
end
|
|
313
|
+
end
|
|
314
|
+
|
|
315
|
+
specs.sort_by { |s| s.sort_obj }
|
|
316
|
+
end
|
|
317
|
+
|
|
318
|
+
##
|
|
319
|
+
# Replaces the gems in the source index from specifications in the
|
|
320
|
+
# directories this source index was created from. Raises an exception if
|
|
321
|
+
# this source index wasn't created from a directory (via from_gems_in or
|
|
322
|
+
# from_installed_gems, or having spec_dirs set).
|
|
323
|
+
|
|
324
|
+
def refresh!
|
|
325
|
+
raise 'source index not created from disk' if @spec_dirs.nil?
|
|
326
|
+
load_gems_in(*@spec_dirs)
|
|
327
|
+
end
|
|
328
|
+
|
|
329
|
+
##
|
|
330
|
+
# Returns an Array of Gem::Specifications that are not up to date.
|
|
331
|
+
|
|
332
|
+
def outdated
|
|
333
|
+
outdateds = []
|
|
334
|
+
|
|
335
|
+
latest_specs.each do |local|
|
|
336
|
+
dependency = Gem::Dependency.new local.name, ">= #{local.version}"
|
|
337
|
+
|
|
338
|
+
fetcher = Gem::SpecFetcher.fetcher
|
|
339
|
+
remotes = fetcher.find_matching dependency
|
|
340
|
+
remotes = remotes.map { |(_, version, _), _| version }
|
|
341
|
+
|
|
342
|
+
latest = remotes.sort.last
|
|
343
|
+
|
|
344
|
+
outdateds << local.name if latest and local.version < latest
|
|
345
|
+
end
|
|
346
|
+
|
|
347
|
+
outdateds
|
|
348
|
+
end
|
|
349
|
+
|
|
350
|
+
def ==(other) # :nodoc:
|
|
351
|
+
self.class === other and @gems == other.gems
|
|
352
|
+
end
|
|
353
|
+
|
|
354
|
+
def dump
|
|
355
|
+
Marshal.dump(self)
|
|
356
|
+
end
|
|
357
|
+
|
|
358
|
+
end
|
|
359
|
+
|
|
360
|
+
# :stopdoc:
|
|
361
|
+
module Gem
|
|
362
|
+
|
|
363
|
+
##
|
|
364
|
+
# Cache is an alias for SourceIndex to allow older YAMLized source index
|
|
365
|
+
# objects to load properly.
|
|
366
|
+
|
|
367
|
+
Cache = SourceIndex unless defined?(Cache)
|
|
368
|
+
|
|
369
|
+
end
|
|
370
|
+
# :startdoc:
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
begin
|
|
2
|
+
require 'rubygems/user_interaction'
|
|
3
|
+
require 'rubygems/doc_manager'
|
|
4
|
+
rescue LoadError
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
class Gem::DocManager
|
|
8
|
+
def self.load_yardoc
|
|
9
|
+
require File.expand_path(File.join(File.dirname(__FILE__), *%w(.. .. yard)))
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def run_yardoc(*args)
|
|
13
|
+
args << '--quiet'
|
|
14
|
+
args << '--backtrace' if Gem.configuration.backtrace
|
|
15
|
+
unless File.file?(File.join(@spec.full_gem_path, '.yardopts'))
|
|
16
|
+
args << @spec.require_paths
|
|
17
|
+
if @spec.extra_rdoc_files.size > 0
|
|
18
|
+
args << '-'
|
|
19
|
+
args += @spec.extra_rdoc_files
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
args = args.flatten.map {|arg| arg.to_s }
|
|
23
|
+
|
|
24
|
+
old_pwd = Dir.pwd
|
|
25
|
+
Dir.chdir(@spec.full_gem_path)
|
|
26
|
+
YARD::CLI::Yardoc.run(*args)
|
|
27
|
+
rescue Errno::EACCES => e
|
|
28
|
+
dirname = File.dirname e.message.split("-")[1].strip
|
|
29
|
+
raise Gem::FilePermissionError.new(dirname)
|
|
30
|
+
rescue => ex
|
|
31
|
+
alert_error "While generating documentation for #{@spec.full_name}"
|
|
32
|
+
ui.errs.puts "... MESSAGE: #{ex}"
|
|
33
|
+
ui.errs.puts "... YARDOC args: #{args.join(' ')}"
|
|
34
|
+
ui.errs.puts "\t#{ex.backtrace.join("\n\t")}" if Gem.configuration.backtrace
|
|
35
|
+
ui.errs.puts "(continuing with the rest of the installation)"
|
|
36
|
+
ensure
|
|
37
|
+
Dir.chdir(old_pwd)
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
begin undef setup_rdoc; rescue NameError; end
|
|
41
|
+
def setup_rdoc
|
|
42
|
+
if File.exist?(@doc_dir) && !File.writable?(@doc_dir) then
|
|
43
|
+
raise Gem::FilePermissionError.new(@doc_dir)
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
FileUtils.mkdir_p @doc_dir unless File.exist?(@doc_dir)
|
|
47
|
+
|
|
48
|
+
self.class.load_rdoc if @spec.has_rdoc?
|
|
49
|
+
self.class.load_yardoc if @spec.has_yardoc?
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def install_yardoc
|
|
53
|
+
rdoc_dir = File.join(@doc_dir, 'rdoc')
|
|
54
|
+
|
|
55
|
+
FileUtils.rm_rf rdoc_dir
|
|
56
|
+
|
|
57
|
+
say "Installing YARD documentation for #{@spec.full_name}..."
|
|
58
|
+
run_yardoc '-o', rdoc_dir
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
def install_ri_yard
|
|
62
|
+
install_ri_yard_orig if @spec.has_rdoc?
|
|
63
|
+
return if @spec.has_rdoc? == false
|
|
64
|
+
return if @spec.has_yardoc?
|
|
65
|
+
|
|
66
|
+
self.class.load_yardoc
|
|
67
|
+
say "Building YARD (yri) index for #{@spec.full_name}..."
|
|
68
|
+
run_yardoc '-c', '-n'
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
begin
|
|
72
|
+
alias install_ri_yard_orig install_ri
|
|
73
|
+
alias install_ri install_ri_yard
|
|
74
|
+
rescue NameError; end
|
|
75
|
+
|
|
76
|
+
def install_rdoc_yard
|
|
77
|
+
if @spec.has_rdoc?
|
|
78
|
+
install_rdoc_yard_orig
|
|
79
|
+
elsif @spec.has_yardoc?
|
|
80
|
+
install_yardoc
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
begin
|
|
85
|
+
alias install_rdoc_yard_orig install_rdoc
|
|
86
|
+
alias install_rdoc install_rdoc_yard
|
|
87
|
+
rescue NameError; end
|
|
88
|
+
end
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
require 'rubygems/specification'
|
|
2
|
+
|
|
3
|
+
class Gem::Specification
|
|
4
|
+
# @since 0.5.3
|
|
5
|
+
def has_yardoc=(value)
|
|
6
|
+
@has_rdoc = value ? 'yard' : false
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def has_yardoc
|
|
10
|
+
@has_rdoc == 'yard'
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
undef has_rdoc?
|
|
14
|
+
def has_rdoc?
|
|
15
|
+
(@has_rdoc ||= true) && @has_rdoc != 'yard'
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
alias has_yardoc? has_yardoc
|
|
19
|
+
|
|
20
|
+
# has_rdoc should not be ignored!
|
|
21
|
+
if respond_to?(:overwrite_accessor)
|
|
22
|
+
overwrite_accessor(:has_rdoc) { @has_rdoc ||= true }
|
|
23
|
+
overwrite_accessor(:has_rdoc=) {|v| @has_rdoc = v }
|
|
24
|
+
else
|
|
25
|
+
attr_accessor :has_rdoc
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
if defined?(Gem::VERSION) && Gem::VERSION >= '1.7.'
|
|
29
|
+
def _dump_with_rdoc(limit)
|
|
30
|
+
dmp = _dump_without_rdoc(limit)
|
|
31
|
+
dmp[15] = @has_rdoc if dmp[15] == true
|
|
32
|
+
dmp
|
|
33
|
+
end
|
|
34
|
+
alias _dump_without_rdoc _dump
|
|
35
|
+
alias _dump _dump_with_rdoc
|
|
36
|
+
|
|
37
|
+
@@default_value[:has_rdoc] = true if defined?(@@default_value)
|
|
38
|
+
@@attributes << 'has_rdoc' if defined?(@@attributes)
|
|
39
|
+
@@nil_attributes << 'has_rdoc' if defined?(@@nil_attributes)
|
|
40
|
+
end
|
|
41
|
+
end
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
module YARD
|
|
2
|
+
module Serializers
|
|
3
|
+
# The abstract base serializer. Serializers allow templates to be
|
|
4
|
+
# rendered to various endpoints. For instance, a {FileSystemSerializer}
|
|
5
|
+
# would allow template contents to be written to the filesystem
|
|
6
|
+
#
|
|
7
|
+
# To implement a custom serializer, override the following methods:
|
|
8
|
+
# * {#serialize}
|
|
9
|
+
# * {#serialized_path}
|
|
10
|
+
#
|
|
11
|
+
# Optionally, a serializer can implement before and after filters:
|
|
12
|
+
# * {#before_serialize}
|
|
13
|
+
# * {#after_serialize}
|
|
14
|
+
#
|
|
15
|
+
# @abstract Override this class to implement a custom serializer.
|
|
16
|
+
class Base
|
|
17
|
+
# All serializer options are saved so they can be passed to other serializers.
|
|
18
|
+
#
|
|
19
|
+
# @return [SymbolHash] the serializer options
|
|
20
|
+
attr_reader :options
|
|
21
|
+
|
|
22
|
+
# @group Creating a New Serializer
|
|
23
|
+
|
|
24
|
+
# Creates a new serializer with options
|
|
25
|
+
#
|
|
26
|
+
# @param [Hash] opts the options to assign to {#options}
|
|
27
|
+
def initialize(opts = {})
|
|
28
|
+
@options = SymbolHash.new(false).update(opts)
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
# @group Serializing an Object
|
|
32
|
+
|
|
33
|
+
# Serializes an object.
|
|
34
|
+
#
|
|
35
|
+
# @abstract This method should implement the logic that serializes
|
|
36
|
+
# +data+ to the respective endpoint. This method should also call
|
|
37
|
+
# the before and after callbacks {#before_serialize} and {#after_serialize}
|
|
38
|
+
# @param [CodeObjects::Base, String] object the object to serialize the
|
|
39
|
+
# data for. The object can also be a string (for non-object serialization)
|
|
40
|
+
# @param [String] data the contents that should be serialized
|
|
41
|
+
def serialize(object, data) end
|
|
42
|
+
|
|
43
|
+
# The serialized path of an object
|
|
44
|
+
#
|
|
45
|
+
# @abstract This method should return the path of the object on the
|
|
46
|
+
# endpoint. For instance, for a file serializer, this should return
|
|
47
|
+
# the filename that represents the object on disk.
|
|
48
|
+
# @param [CodeObjects::Base] object the object to return a path for
|
|
49
|
+
# @return [String] the serialized path of an object
|
|
50
|
+
def serialized_path(object) end
|
|
51
|
+
|
|
52
|
+
# Returns whether an object has been serialized
|
|
53
|
+
#
|
|
54
|
+
# @abstract This method should return whether the endpoint already exists.
|
|
55
|
+
# For instance, a file system serializer would check if the file exists
|
|
56
|
+
# on disk. You will most likely use +#basepath+ and {#serialized_path} to
|
|
57
|
+
# get the endpoint's location.
|
|
58
|
+
# @param [CodeObjects::Base] object the object to check existence of
|
|
59
|
+
# @return [Boolean] whether the endpoint exists.
|
|
60
|
+
# @since 0.6.0
|
|
61
|
+
def exists?(object) false end
|
|
62
|
+
|
|
63
|
+
# @group Callbacks
|
|
64
|
+
|
|
65
|
+
# Called before serialization.
|
|
66
|
+
#
|
|
67
|
+
# @abstract Should run code before serialization. Should return false
|
|
68
|
+
# if serialization should not occur.
|
|
69
|
+
# @return [Boolean] whether or not serialization should occur
|
|
70
|
+
def before_serialize; end
|
|
71
|
+
|
|
72
|
+
# Called after serialization.
|
|
73
|
+
#
|
|
74
|
+
# @abstract Should run code after serialization.
|
|
75
|
+
# @param [String] data the data that was serialized.
|
|
76
|
+
# @return [void]
|
|
77
|
+
def after_serialize(data); end
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
end
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
module YARD
|
|
2
|
+
module Serializers
|
|
3
|
+
# Implements a serializer that reads from and writes to the filesystem.
|
|
4
|
+
class FileSystemSerializer < Base
|
|
5
|
+
# The base path to write data to.
|
|
6
|
+
# @return [String] a base path
|
|
7
|
+
attr_reader :basepath
|
|
8
|
+
|
|
9
|
+
def basepath=(value)
|
|
10
|
+
@basepath = options[:basepath] = value
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
# The extension of the filename (defaults to +html+)
|
|
14
|
+
#
|
|
15
|
+
# @return [String] the extension of the file. Empty string for no extension.
|
|
16
|
+
attr_reader :extension
|
|
17
|
+
|
|
18
|
+
def extension=(value)
|
|
19
|
+
@extension = options[:extension] = value
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
# Creates a new FileSystemSerializer with options
|
|
23
|
+
#
|
|
24
|
+
# @option opts [String] :basepath ('doc') the base path to write data to
|
|
25
|
+
# @option opts [String] :extension ('html') the extension of the serialized
|
|
26
|
+
# path filename. If this is set to the empty string, no extension is used.
|
|
27
|
+
def initialize(opts = {})
|
|
28
|
+
super
|
|
29
|
+
@basepath = (options[:basepath] || 'doc').to_s
|
|
30
|
+
@extension = (options.has_key?(:extension) ? options[:extension] : 'html').to_s
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
# Serializes object with data to its serialized path (prefixed by the +#basepath+).
|
|
34
|
+
#
|
|
35
|
+
# @return [String] the written data (for chaining)
|
|
36
|
+
def serialize(object, data)
|
|
37
|
+
path = File.join(basepath, serialized_path(object))
|
|
38
|
+
log.debug "Serializing to #{path}"
|
|
39
|
+
File.open!(path, "wb") {|f| f.write data }
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
# Implements the serialized path of a code object.
|
|
43
|
+
#
|
|
44
|
+
# @param [CodeObjects::Base, CodeObjects::ExtraFileObject, String] object
|
|
45
|
+
# the object to get a path for. The path of a string is the string itself.
|
|
46
|
+
# @return [String] if object is a String, returns
|
|
47
|
+
# object, otherwise the path on disk (without the basepath).
|
|
48
|
+
def serialized_path(object)
|
|
49
|
+
return object if object.is_a?(String)
|
|
50
|
+
|
|
51
|
+
if object.is_a?(CodeObjects::ExtraFileObject)
|
|
52
|
+
fspath = ['file.' + object.name + (extension.empty? ? '' : ".#{extension}")]
|
|
53
|
+
else
|
|
54
|
+
objname = object != YARD::Registry.root ? object.name.to_s : "top-level-namespace"
|
|
55
|
+
objname += '_' + object.scope.to_s[0,1] if object.is_a?(CodeObjects::MethodObject)
|
|
56
|
+
fspath = [objname + (extension.empty? ? '' : ".#{extension}")]
|
|
57
|
+
if object.namespace && object.namespace.path != ""
|
|
58
|
+
fspath.unshift(*object.namespace.path.split(CodeObjects::NSEP))
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
File.join(encode_path_components(*fspath))
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
# Checks the disk for an object and returns whether it was serialized.
|
|
66
|
+
#
|
|
67
|
+
# @param [CodeObjects::Base] object the object to check
|
|
68
|
+
# @return [Boolean] whether an object has been serialized to disk
|
|
69
|
+
def exists?(object)
|
|
70
|
+
File.exist?(File.join(basepath, serialized_path(object)))
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
private
|
|
74
|
+
|
|
75
|
+
# Remove special chars from filenames.
|
|
76
|
+
# Windows disallows \ / : * ? " < > | but we will just remove any
|
|
77
|
+
# non alphanumeric (plus period, underscore and dash).
|
|
78
|
+
def encode_path_components(*components)
|
|
79
|
+
components.map! do |p|
|
|
80
|
+
p.gsub(/[^\w\.-]/) do |x|
|
|
81
|
+
encoded = '_'
|
|
82
|
+
|
|
83
|
+
x.each_byte { |b| encoded << ("%X" % b) }
|
|
84
|
+
encoded
|
|
85
|
+
end
|
|
86
|
+
end
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
end
|
|
90
|
+
end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
module YARD
|
|
2
|
+
module Serializers
|
|
3
|
+
# Serializes an object to a process (like less)
|
|
4
|
+
#
|
|
5
|
+
# @example Serializing to a pager (less)
|
|
6
|
+
# serializer = ProcessSerializer.new('less')
|
|
7
|
+
# serializer.serialize(object, "data!")
|
|
8
|
+
class ProcessSerializer < Base
|
|
9
|
+
# Creates a new ProcessSerializer for the shell command +cmd+
|
|
10
|
+
#
|
|
11
|
+
# @param [String] cmd the command that will accept data on stdin
|
|
12
|
+
def initialize(cmd)
|
|
13
|
+
@cmd = cmd
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
# Overrides serialize behaviour and writes data to standard input
|
|
17
|
+
# of the associated command
|
|
18
|
+
def serialize(object, data)
|
|
19
|
+
IO.popen(@cmd, 'w') {|io| io.write(data) }
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
|