yard 0.7.5 → 0.8.0
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.
- data/.yardopts +10 -2
- data/ChangeLog +1263 -38
- data/LEGAL +5 -5
- data/LICENSE +1 -1
- data/README.md +91 -82
- data/Rakefile +6 -6
- data/benchmarks/builtins_vs_eval.rb +1 -1
- data/benchmarks/erb_vs_erubis.rb +4 -4
- data/benchmarks/generation.rb +5 -5
- data/benchmarks/parsing.rb +2 -2
- data/benchmarks/registry_store_types.rb +48 -0
- data/bin/yard +9 -1
- data/bin/yardoc +9 -1
- data/bin/yri +10 -2
- data/docs/CodeObjects.md +10 -10
- data/docs/GettingStarted.md +85 -83
- data/docs/Handlers.md +21 -21
- data/docs/Overview.md +7 -7
- data/docs/Parser.md +30 -30
- data/docs/Tags.md +250 -554
- data/docs/TagsArch.md +123 -0
- data/docs/Templates.md +58 -80
- data/docs/WhatsNew.md +378 -133
- 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/yard.rb +1 -10
- data/lib/yard/autoload.rb +75 -27
- data/lib/yard/cli/command.rb +5 -2
- data/lib/yard/cli/command_parser.rb +3 -2
- data/lib/yard/cli/diff.rb +1 -1
- data/lib/yard/cli/i18n.rb +69 -0
- data/lib/yard/cli/list.rb +1 -1
- data/lib/yard/cli/server.rb +30 -7
- data/lib/yard/cli/stats.rb +5 -6
- data/lib/yard/cli/yardoc.rb +95 -45
- data/lib/yard/cli/yri.rb +24 -3
- data/lib/yard/code_objects/base.rb +35 -4
- data/lib/yard/code_objects/extra_file_object.rb +1 -1
- data/lib/yard/code_objects/macro_object.rb +56 -99
- data/lib/yard/code_objects/method_object.rb +44 -6
- data/lib/yard/config.rb +18 -8
- data/lib/yard/core_ext/symbol_hash.rb +1 -1
- data/lib/yard/docstring.rb +45 -85
- data/lib/yard/docstring_parser.rb +269 -0
- data/lib/yard/handlers/base.rb +129 -118
- 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 +165 -0
- data/lib/yard/handlers/c/init_handler.rb +16 -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 +22 -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 +41 -30
- data/lib/yard/handlers/ruby/alias_handler.rb +0 -2
- data/lib/yard/handlers/ruby/attribute_handler.rb +16 -17
- data/lib/yard/handlers/ruby/base.rb +10 -6
- data/lib/yard/handlers/ruby/comment_handler.rb +9 -0
- data/lib/yard/handlers/ruby/dsl_handler.rb +14 -0
- data/lib/yard/handlers/ruby/dsl_handler_methods.rb +71 -0
- data/lib/yard/handlers/ruby/legacy/alias_handler.rb +0 -3
- data/lib/yard/handlers/ruby/legacy/attribute_handler.rb +16 -17
- data/lib/yard/handlers/ruby/legacy/base.rb +28 -6
- data/lib/yard/handlers/ruby/legacy/comment_handler.rb +9 -0
- data/lib/yard/handlers/ruby/legacy/dsl_handler.rb +16 -0
- data/lib/yard/handlers/ruby/legacy/method_handler.rb +0 -2
- data/lib/yard/handlers/ruby/legacy/mixin_handler.rb +1 -1
- data/lib/yard/handlers/ruby/legacy/module_function_handler.rb +18 -0
- data/lib/yard/handlers/ruby/method_handler.rb +10 -15
- data/lib/yard/handlers/ruby/mixin_handler.rb +1 -1
- data/lib/yard/handlers/ruby/module_function_handler.rb +26 -0
- data/lib/yard/handlers/ruby/struct_handler_methods.rb +3 -2
- data/lib/yard/i18n/pot_generator.rb +281 -0
- data/lib/yard/i18n/text.rb +72 -0
- data/lib/yard/logging.rb +3 -7
- data/lib/yard/options.rb +216 -0
- data/lib/yard/parser/c/c_parser.rb +225 -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 +91 -1
- data/lib/yard/parser/ruby/legacy/ruby_parser.rb +1 -0
- data/lib/yard/parser/ruby/legacy/statement.rb +7 -2
- data/lib/yard/parser/ruby/legacy/statement_list.rb +13 -22
- data/lib/yard/parser/ruby/ruby_parser.rb +87 -26
- data/lib/yard/parser/source_parser.rb +89 -88
- data/lib/yard/rake/yardoc_task.rb +1 -1
- data/lib/yard/registry.rb +21 -10
- data/lib/yard/registry_store.rb +48 -0
- data/lib/yard/serializers/file_system_serializer.rb +18 -20
- data/lib/yard/serializers/yardoc_serializer.rb +1 -0
- data/lib/yard/server/adapter.rb +2 -2
- data/lib/yard/server/commands/base.rb +1 -1
- data/lib/yard/server/commands/display_object_command.rb +13 -6
- data/lib/yard/server/commands/frames_command.rb +4 -21
- data/lib/yard/server/commands/library_command.rb +57 -11
- data/lib/yard/server/commands/list_command.rb +10 -34
- data/lib/yard/server/commands/search_command.rb +8 -2
- data/lib/yard/server/doc_server_helper.rb +34 -0
- data/lib/yard/server/rack_adapter.rb +5 -1
- data/lib/yard/server/router.rb +4 -10
- data/lib/yard/server/static_caching.rb +2 -2
- data/lib/yard/server/templates/default/fulldoc/html/css/custom.css +2 -2
- data/lib/yard/server/templates/default/fulldoc/html/js/live.js +0 -15
- data/lib/yard/server/templates/default/layout/html/breadcrumb.erb +3 -3
- data/lib/yard/server/templates/default/layout/html/script_setup.erb +8 -0
- data/lib/yard/server/templates/doc_server/processing/html/processing.erb +1 -1
- data/lib/yard/server/templates/doc_server/search/html/setup.rb +1 -1
- data/lib/yard/tags/default_factory.rb +31 -4
- data/lib/yard/tags/directives.rb +593 -0
- data/lib/yard/tags/library.rb +437 -35
- data/lib/yard/templates/engine.rb +17 -12
- data/lib/yard/templates/helpers/base_helper.rb +8 -2
- data/lib/yard/templates/helpers/html_helper.rb +57 -14
- data/lib/yard/templates/helpers/markup/rdoc_markup.rb +1 -1
- data/lib/yard/templates/helpers/markup_helper.rb +9 -9
- data/lib/yard/templates/helpers/text_helper.rb +2 -2
- data/lib/yard/templates/template.rb +42 -13
- data/lib/yard/templates/template_options.rb +81 -0
- data/spec/cli/command_parser_spec.rb +4 -4
- data/spec/cli/command_spec.rb +3 -3
- data/spec/cli/config_spec.rb +13 -13
- data/spec/cli/diff_spec.rb +13 -10
- data/spec/cli/gems_spec.rb +12 -12
- data/spec/cli/help_spec.rb +2 -2
- data/spec/cli/i18n_spec.rb +111 -0
- data/spec/cli/server_spec.rb +66 -18
- data/spec/cli/stats_spec.rb +15 -15
- data/spec/cli/yardoc_spec.rb +124 -97
- data/spec/cli/yri_spec.rb +14 -12
- data/spec/code_objects/base_spec.rb +104 -46
- data/spec/code_objects/class_object_spec.rb +33 -33
- data/spec/code_objects/code_object_list_spec.rb +5 -5
- data/spec/code_objects/constants_spec.rb +4 -3
- data/spec/code_objects/extra_file_object_spec.rb +19 -19
- data/spec/code_objects/macro_object_spec.rb +31 -37
- data/spec/code_objects/method_object_spec.rb +46 -23
- data/spec/code_objects/module_object_spec.rb +16 -16
- data/spec/code_objects/namespace_object_spec.rb +6 -6
- data/spec/code_objects/proxy_spec.rb +19 -19
- data/spec/config_spec.rb +33 -24
- data/spec/core_ext/array_spec.rb +1 -1
- data/spec/core_ext/file_spec.rb +8 -8
- data/spec/core_ext/hash_spec.rb +1 -1
- data/spec/core_ext/insertion_spec.rb +3 -3
- data/spec/core_ext/module_spec.rb +1 -1
- data/spec/core_ext/string_spec.rb +6 -6
- data/spec/core_ext/symbol_hash_spec.rb +11 -11
- data/spec/docstring_parser_spec.rb +207 -0
- data/spec/docstring_spec.rb +33 -146
- data/spec/handlers/alias_handler_spec.rb +14 -14
- data/spec/handlers/attribute_handler_spec.rb +20 -20
- data/spec/handlers/base_spec.rb +16 -16
- 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 +64 -0
- data/spec/handlers/c/constant_handler_spec.rb +68 -0
- data/spec/handlers/c/init_handler_spec.rb +36 -0
- data/spec/handlers/c/method_handler_spec.rb +228 -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 +43 -0
- data/spec/handlers/c/path_handler_spec.rb +35 -0
- data/spec/handlers/c/spec_helper.rb +11 -0
- data/spec/handlers/c/struct_handler_spec.rb +15 -0
- data/spec/handlers/class_condition_handler_spec.rb +10 -10
- data/spec/handlers/class_handler_spec.rb +38 -38
- data/spec/handlers/class_variable_handler_spec.rb +1 -1
- data/spec/handlers/constant_handler_spec.rb +7 -7
- data/spec/handlers/{macro_handler_spec.rb → dsl_handler_spec.rb} +72 -53
- data/spec/handlers/examples/alias_handler_001.rb.txt +5 -5
- data/spec/handlers/examples/class_condition_handler_001.rb.txt +9 -9
- data/spec/handlers/examples/class_handler_001.rb.txt +1 -1
- data/spec/handlers/examples/dsl_handler_001.rb.txt +110 -0
- data/spec/handlers/examples/exception_handler_001.rb.txt +14 -14
- data/spec/handlers/examples/method_condition_handler_001.rb.txt +2 -2
- data/spec/handlers/examples/method_handler_001.rb.txt +16 -16
- data/spec/handlers/examples/mixin_handler_001.rb.txt +8 -4
- data/spec/handlers/examples/private_constant_handler_001.rb.txt +1 -1
- data/spec/handlers/examples/visibility_handler_001.rb.txt +3 -3
- data/spec/handlers/examples/yield_handler_001.rb.txt +13 -14
- data/spec/handlers/exception_handler_spec.rb +9 -9
- data/spec/handlers/extend_handler_spec.rb +2 -2
- data/spec/handlers/legacy_base_spec.rb +34 -34
- data/spec/handlers/method_condition_handler_spec.rb +2 -2
- data/spec/handlers/method_handler_spec.rb +33 -33
- data/spec/handlers/mixin_handler_spec.rb +13 -9
- data/spec/handlers/module_function_handler_spec.rb +82 -0
- data/spec/handlers/module_handler_spec.rb +6 -6
- data/spec/handlers/private_constant_handler_spec.rb +3 -3
- data/spec/handlers/processor_spec.rb +5 -5
- data/spec/handlers/ruby/base_spec.rb +10 -6
- data/spec/handlers/ruby/legacy/base_spec.rb +11 -7
- data/spec/handlers/spec_helper.rb +2 -3
- data/spec/handlers/visibility_handler_spec.rb +6 -6
- data/spec/handlers/yield_handler_spec.rb +8 -8
- data/spec/i18n/pot_generator_spec.rb +244 -0
- data/spec/i18n/text_spec.rb +69 -0
- data/spec/options_spec.rb +160 -0
- data/spec/parser/base_spec.rb +3 -3
- data/spec/parser/c_parser_spec.rb +31 -257
- data/spec/parser/examples/array.c.txt +187 -187
- data/spec/parser/examples/extrafile.c.txt +1 -1
- data/spec/parser/examples/override.c.txt +1 -1
- data/spec/parser/ruby/ast_node_spec.rb +1 -1
- data/spec/parser/ruby/legacy/statement_list_spec.rb +24 -24
- data/spec/parser/ruby/legacy/token_list_spec.rb +7 -7
- data/spec/parser/ruby/ruby_parser_spec.rb +56 -34
- data/spec/parser/source_parser_spec.rb +125 -65
- data/spec/parser/tag_parsing_spec.rb +4 -4
- data/spec/rake/yardoc_task_spec.rb +10 -8
- data/spec/registry_spec.rb +65 -36
- data/spec/registry_store_spec.rb +90 -40
- data/spec/serializers/file_system_serializer_spec.rb +12 -12
- data/spec/serializers/yardoc_serializer_spec.rb +2 -2
- data/spec/server/adapter_spec.rb +3 -3
- data/spec/server/commands/base_spec.rb +8 -8
- data/spec/server/commands/library_command_spec.rb +3 -3
- data/spec/server/commands/static_file_command_spec.rb +7 -7
- data/spec/server/doc_server_helper_spec.rb +1 -1
- data/spec/server/doc_server_serializer_spec.rb +6 -6
- data/spec/server/rack_adapter_spec.rb +3 -3
- data/spec/server/router_spec.rb +19 -19
- data/spec/server/static_caching_spec.rb +4 -4
- data/spec/spec_helper.rb +7 -7
- data/spec/tags/default_factory_spec.rb +24 -16
- data/spec/tags/directives_spec.rb +422 -0
- data/spec/tags/library_spec.rb +15 -4
- data/spec/tags/overload_tag_spec.rb +6 -6
- data/spec/tags/ref_tag_list_spec.rb +8 -8
- data/spec/templates/class_spec.rb +7 -7
- data/spec/templates/constant_spec.rb +7 -7
- data/spec/templates/engine_spec.rb +28 -36
- data/spec/templates/examples/class001.html +108 -108
- data/spec/templates/examples/class002.html +17 -17
- data/spec/templates/examples/constant001.txt +1 -1
- data/spec/templates/examples/method001.html +45 -45
- data/spec/templates/examples/method002.html +25 -25
- data/spec/templates/examples/method003.html +60 -60
- data/spec/templates/examples/method004.html +7 -7
- data/spec/templates/examples/method005.html +28 -28
- data/spec/templates/examples/module001.html +321 -321
- data/spec/templates/examples/module001.txt +1 -1
- data/spec/templates/examples/module002.html +130 -130
- data/spec/templates/examples/module003.html +74 -74
- data/spec/templates/examples/module004.html +388 -0
- data/spec/templates/helpers/base_helper_spec.rb +32 -32
- data/spec/templates/helpers/html_helper_spec.rb +87 -68
- data/spec/templates/helpers/html_syntax_highlight_helper_spec.rb +9 -9
- data/spec/templates/helpers/markup/rdoc_markup_spec.rb +16 -16
- data/spec/templates/helpers/markup_helper_spec.rb +31 -28
- data/spec/templates/helpers/method_helper_spec.rb +7 -7
- data/spec/templates/helpers/shared_signature_examples.rb +9 -7
- data/spec/templates/helpers/text_helper_spec.rb +3 -3
- data/spec/templates/method_spec.rb +13 -13
- data/spec/templates/module_spec.rb +70 -24
- data/spec/templates/onefile_spec.rb +32 -15
- data/spec/templates/section_spec.rb +23 -23
- data/spec/templates/spec_helper.rb +31 -1
- data/spec/templates/tag_spec.rb +5 -5
- data/spec/templates/template_spec.rb +54 -46
- data/spec/verifier_spec.rb +5 -5
- data/templates/default/class/setup.rb +2 -2
- data/templates/default/docstring/html/abstract.erb +1 -1
- data/templates/default/docstring/html/note.erb +1 -1
- data/templates/default/docstring/html/private.erb +1 -1
- data/templates/default/docstring/html/todo.erb +1 -1
- data/templates/default/docstring/setup.rb +2 -2
- data/templates/default/fulldoc/html/css/full_list.css +4 -2
- data/templates/default/fulldoc/html/css/style.css +50 -44
- data/templates/default/fulldoc/html/frames.erb +21 -6
- data/templates/default/fulldoc/html/full_list.erb +5 -3
- data/templates/default/fulldoc/html/{full_list_files.erb → full_list_file.erb} +0 -0
- data/templates/default/fulldoc/html/js/app.js +29 -26
- data/templates/default/fulldoc/html/js/full_list.js +9 -9
- data/templates/default/fulldoc/html/js/jquery.js +4 -16
- data/templates/default/fulldoc/html/setup.rb +42 -38
- data/templates/default/layout/dot/header.erb +1 -1
- data/templates/default/layout/html/breadcrumb.erb +6 -6
- data/templates/default/layout/html/files.erb +1 -1
- data/templates/default/layout/html/footer.erb +1 -1
- data/templates/default/layout/html/headers.erb +3 -6
- data/templates/default/layout/html/index.erb +1 -1
- data/templates/default/layout/html/layout.erb +3 -7
- data/templates/default/layout/html/objects.erb +1 -1
- data/templates/default/layout/html/script_setup.erb +5 -0
- data/templates/default/layout/html/search.erb +4 -1
- data/templates/default/layout/html/setup.rb +8 -8
- data/templates/default/method_details/html/method_signature.erb +10 -3
- data/templates/default/method_details/setup.rb +1 -0
- data/templates/default/module/dot/info.erb +1 -1
- data/templates/default/module/dot/setup.rb +2 -2
- data/templates/default/module/html/attribute_details.erb +1 -1
- data/templates/default/module/html/children.erb +1 -1
- data/templates/default/module/html/defines.erb +1 -1
- data/templates/default/module/html/inherited_methods.erb +5 -4
- data/templates/default/module/html/item_summary.erb +15 -5
- data/templates/default/module/html/method_details_list.erb +2 -2
- data/templates/default/module/setup.rb +25 -12
- data/templates/default/module/text/setup.rb +1 -1
- data/templates/default/onefile/html/layout.erb +1 -1
- data/templates/default/onefile/html/setup.rb +2 -2
- data/templates/default/tags/html/example.erb +4 -2
- data/templates/default/tags/html/option.erb +1 -1
- data/templates/default/tags/html/overload.erb +1 -1
- data/templates/default/tags/html/see.erb +1 -1
- data/templates/default/tags/html/tag.erb +1 -1
- data/templates/default/tags/setup.rb +4 -3
- data/templates/guide/fulldoc/html/css/style.css +8 -8
- data/templates/guide/fulldoc/html/js/app.js +6 -6
- data/templates/guide/fulldoc/html/setup.rb +12 -12
- data/templates/guide/layout/html/layout.erb +11 -11
- data/templates/guide/layout/html/setup.rb +9 -9
- data/templates/guide/method/html/header.erb +2 -2
- data/templates/guide/method/html/setup.rb +1 -1
- metadata +68 -18
- data/bin/yard-graph +0 -4
- data/bin/yard-server +0 -4
- data/docs/Glossary.md +0 -12
- data/lib/yard/handlers/ruby/legacy/macro_handler.rb +0 -39
- data/lib/yard/handlers/ruby/macro_handler.rb +0 -40
- data/lib/yard/handlers/ruby/macro_handler_methods.rb +0 -131
- data/lib/yard/parser/c_parser.rb +0 -497
- data/lib/yard/server/templates/default/layout/html/headers.erb +0 -16
- data/lib/yard/server/templates/doc_server/frames/html/frames.erb +0 -13
- data/lib/yard/server/templates/doc_server/frames/html/setup.rb +0 -3
- data/lib/yard/server/templates/doc_server/full_list/html/full_list.erb +0 -34
- data/lib/yard/server/templates/doc_server/full_list/html/setup.rb +0 -20
- data/spec/handlers/examples/macro_handler_001.rb.txt +0 -83
@@ -31,7 +31,7 @@ module YARD
|
|
31
31
|
# @return [Proc] a proc to call after running the task
|
32
32
|
attr_accessor :after
|
33
33
|
|
34
|
-
# @return [Verifier, Proc] an optional {Verifier} to run against all objects
|
34
|
+
# @return [Verifier, Proc] an optional {Verifier} to run against all objects
|
35
35
|
# being generated. Any object that the verifier returns false for will be
|
36
36
|
# excluded from documentation. This attribute can also be a lambda.
|
37
37
|
# @see Verifier
|
data/lib/yard/registry.rb
CHANGED
@@ -70,6 +70,7 @@ module YARD
|
|
70
70
|
# @return [String] the yardoc filename
|
71
71
|
# @see DEFAULT_YARDOC_FILE
|
72
72
|
attr_accessor :yardoc_file
|
73
|
+
undef yardoc_file, yardoc_file=
|
73
74
|
def yardoc_file=(v) Thread.current[:__yard_yardoc_file__] = v end
|
74
75
|
def yardoc_file
|
75
76
|
Thread.current[:__yard_yardoc_file__] ||= DEFAULT_YARDOC_FILE
|
@@ -207,16 +208,15 @@ module YARD
|
|
207
208
|
# @return [Array<CodeObjects::Base>] the list of objects found
|
208
209
|
# @see CodeObjects::Base#type
|
209
210
|
def all(*types)
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
type.is_a?(Symbol) ? obj.type == type : obj.is_a?(type)
|
217
|
-
end
|
211
|
+
if types.empty?
|
212
|
+
thread_local_store.values.select {|obj| obj != root }
|
213
|
+
else
|
214
|
+
list = []
|
215
|
+
types.each do |type|
|
216
|
+
list += thread_local_store.values_for_type(type)
|
218
217
|
end
|
219
|
-
|
218
|
+
list
|
219
|
+
end
|
220
220
|
end
|
221
221
|
|
222
222
|
# Returns the paths of all of the objects in the registry.
|
@@ -284,7 +284,17 @@ module YARD
|
|
284
284
|
else
|
285
285
|
while namespace
|
286
286
|
if namespace.is_a?(CodeObjects::NamespaceObject)
|
287
|
-
|
287
|
+
if inheritance
|
288
|
+
nss = namespace.inheritance_tree(true)
|
289
|
+
if namespace.respond_to?(:superclass)
|
290
|
+
if namespace.superclass != P('BasicObject')
|
291
|
+
nss |= [P('Object')]
|
292
|
+
end
|
293
|
+
nss |= [P('BasicObject')]
|
294
|
+
end
|
295
|
+
else
|
296
|
+
nss = [namespace]
|
297
|
+
end
|
288
298
|
nss.each do |ns|
|
289
299
|
next if ns.is_a?(CodeObjects::Proxy)
|
290
300
|
found = partial_resolve(ns, name)
|
@@ -321,6 +331,7 @@ module YARD
|
|
321
331
|
# @return [Boolean, nil] if this value is set to nil, the storage
|
322
332
|
# adapter will decide how to store the data.
|
323
333
|
attr_accessor :single_object_db
|
334
|
+
undef single_object_db, single_object_db=
|
324
335
|
def single_object_db=(v) Thread.current[:__yard_single_db__] = v end
|
325
336
|
def single_object_db; Thread.current[:__yard_single_db__] end
|
326
337
|
|
data/lib/yard/registry_store.rb
CHANGED
@@ -13,6 +13,7 @@ module YARD
|
|
13
13
|
@checksums = {}
|
14
14
|
@store = {}
|
15
15
|
@proxy_types = {}
|
16
|
+
@object_types = {:root => [:root]}
|
16
17
|
@notfound = {}
|
17
18
|
@loaded_objects = 0
|
18
19
|
@available_objects = 0
|
@@ -48,9 +49,14 @@ module YARD
|
|
48
49
|
# @return [CodeObjects::Base] returns +value+
|
49
50
|
def put(key, value)
|
50
51
|
if key == ''
|
52
|
+
@object_types[:root] = [:root]
|
51
53
|
@store[:root] = value
|
52
54
|
else
|
53
55
|
@notfound.delete(key.to_sym)
|
56
|
+
(@object_types[value.type] ||= []) << key.to_s
|
57
|
+
if @store[key.to_sym]
|
58
|
+
@object_types[@store[key.to_sym].type].delete(key.to_s)
|
59
|
+
end
|
54
60
|
@store[key.to_sym] = value
|
55
61
|
end
|
56
62
|
end
|
@@ -58,6 +64,9 @@ module YARD
|
|
58
64
|
alias [] get
|
59
65
|
alias []= put
|
60
66
|
|
67
|
+
# Deletes an object at a given path
|
68
|
+
# @param [#to_sym] key the key to delete
|
69
|
+
# @return [void]
|
61
70
|
def delete(key) @store.delete(key.to_sym) end
|
62
71
|
|
63
72
|
# Gets all path names from the store. Loads the entire database
|
@@ -76,6 +85,24 @@ module YARD
|
|
76
85
|
# @return [Array<CodeObjects::Base>] all the code objects
|
77
86
|
def values(reload = false) load_all if reload; @store.values end
|
78
87
|
|
88
|
+
# @param [Symbol] type the type to look for
|
89
|
+
# @return [Array<String>] a list of object paths with a given
|
90
|
+
# {CodeObjects::Base#type}
|
91
|
+
# @since 0.8.0
|
92
|
+
def paths_for_type(type, reload = false)
|
93
|
+
load_all if reload
|
94
|
+
@object_types[type] || []
|
95
|
+
end
|
96
|
+
|
97
|
+
# @param [Symbol] type the type to look for
|
98
|
+
# @return [Array<CodeObjects::Base>] a list of objects with a given
|
99
|
+
# {CodeObjects::Base#type}
|
100
|
+
# @since 0.8.0
|
101
|
+
def values_for_type(type, reload = false)
|
102
|
+
load_all if reload
|
103
|
+
paths_for_type(type).map {|t| @store[t.to_sym] }
|
104
|
+
end
|
105
|
+
|
79
106
|
# @return [CodeObjects::RootObject] the root object
|
80
107
|
def root; @store[:root] end
|
81
108
|
|
@@ -85,6 +112,7 @@ module YARD
|
|
85
112
|
@file = file
|
86
113
|
@store = {}
|
87
114
|
@proxy_types = {}
|
115
|
+
@object_types = {}
|
88
116
|
@notfound = {}
|
89
117
|
@serializer = Serializers::YardocSerializer.new(@file)
|
90
118
|
load_yardoc
|
@@ -147,6 +175,7 @@ module YARD
|
|
147
175
|
end
|
148
176
|
end
|
149
177
|
write_proxy_types
|
178
|
+
write_object_types
|
150
179
|
write_checksums
|
151
180
|
true
|
152
181
|
end
|
@@ -186,6 +215,10 @@ module YARD
|
|
186
215
|
@serializer.checksums_path
|
187
216
|
end
|
188
217
|
|
218
|
+
def object_types_path
|
219
|
+
@serializer.object_types_path
|
220
|
+
end
|
221
|
+
|
189
222
|
def load_yardoc
|
190
223
|
return false unless @file
|
191
224
|
if File.directory?(@file) # new format
|
@@ -194,6 +227,7 @@ module YARD
|
|
194
227
|
load_proxy_types
|
195
228
|
load_checksums
|
196
229
|
load_root
|
230
|
+
load_object_types
|
197
231
|
true
|
198
232
|
elsif File.file?(@file) # old format
|
199
233
|
load_yardoc_old
|
@@ -214,6 +248,16 @@ module YARD
|
|
214
248
|
@proxy_types = Marshal.load(File.read_binary(proxy_types_path))
|
215
249
|
end
|
216
250
|
|
251
|
+
def load_object_types
|
252
|
+
if File.file?(object_types_path)
|
253
|
+
@object_types = Marshal.load(File.read_binary(object_types_path))
|
254
|
+
else # migrate db without object_types
|
255
|
+
values.each do |object|
|
256
|
+
(@object_types[object.type] ||= []) << object.path
|
257
|
+
end
|
258
|
+
end
|
259
|
+
end
|
260
|
+
|
217
261
|
def load_checksums
|
218
262
|
return unless File.file?(checksums_path)
|
219
263
|
lines = File.readlines(checksums_path).map do |line|
|
@@ -243,6 +287,10 @@ module YARD
|
|
243
287
|
File.open!(proxy_types_path, 'wb') {|f| f.write(Marshal.dump(@proxy_types)) }
|
244
288
|
end
|
245
289
|
|
290
|
+
def write_object_types
|
291
|
+
File.open!(object_types_path, 'wb') {|f| f.write(Marshal.dump(@object_types)) }
|
292
|
+
end
|
293
|
+
|
246
294
|
def write_checksums
|
247
295
|
File.open!(checksums_path, 'w') do |f|
|
248
296
|
@checksums.each {|k, v| f.puts("#{k} #{v}") }
|
@@ -34,7 +34,7 @@ module YARD
|
|
34
34
|
#
|
35
35
|
# @return [String] the written data (for chaining)
|
36
36
|
def serialize(object, data)
|
37
|
-
path = File.join(basepath,
|
37
|
+
path = File.join(basepath, serialized_path(object))
|
38
38
|
log.debug "Serializing to #{path}"
|
39
39
|
File.open!(path, "wb") {|f| f.write data }
|
40
40
|
end
|
@@ -59,25 +59,7 @@ module YARD
|
|
59
59
|
end
|
60
60
|
end
|
61
61
|
|
62
|
-
|
63
|
-
# to figure out the original name.
|
64
|
-
#fspath.map! do |p|
|
65
|
-
# p.gsub(/([a-z])([A-Z])/, '\1_\2').downcase
|
66
|
-
#end
|
67
|
-
|
68
|
-
# Remove special chars from filenames.
|
69
|
-
# Windows disallows \ / : * ? " < > | but we will just remove any
|
70
|
-
# non alphanumeric (plus period, underscore and dash).
|
71
|
-
fspath.map! do |p|
|
72
|
-
p.gsub(/[^\w\.-]/) do |x|
|
73
|
-
encoded = '_'
|
74
|
-
|
75
|
-
x.each_byte { |b| encoded << ("%X" % b) }
|
76
|
-
encoded
|
77
|
-
end
|
78
|
-
end
|
79
|
-
|
80
|
-
File.join(fspath)
|
62
|
+
File.join(encode_path_components(*fspath))
|
81
63
|
end
|
82
64
|
|
83
65
|
# Checks the disk for an object and returns whether it was serialized.
|
@@ -87,6 +69,22 @@ module YARD
|
|
87
69
|
def exists?(object)
|
88
70
|
File.exist?(File.join(basepath, serialized_path(object)))
|
89
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
|
90
88
|
end
|
91
89
|
end
|
92
90
|
end
|
@@ -34,6 +34,7 @@ module YARD
|
|
34
34
|
def objects_path; File.join(basepath, 'objects') end
|
35
35
|
def proxy_types_path; File.join(basepath, 'proxy_types') end
|
36
36
|
def checksums_path; File.join(basepath, 'checksums') end
|
37
|
+
def object_types_path; File.join(basepath, 'object_types') end
|
37
38
|
|
38
39
|
def serialized_path(object)
|
39
40
|
path = case object
|
data/lib/yard/server/adapter.rb
CHANGED
@@ -2,7 +2,7 @@ module YARD
|
|
2
2
|
module Server
|
3
3
|
|
4
4
|
# Short circuits a request by raising an error. This exception is caught
|
5
|
-
# by {Commands::Base#call} to
|
5
|
+
# by {Commands::Base#call} to immediately end a request and return a response.
|
6
6
|
class FinishRequest < RuntimeError; end
|
7
7
|
|
8
8
|
# Raises an error if a resource is not found. This exception is caught by
|
@@ -97,4 +97,4 @@ module YARD
|
|
97
97
|
end
|
98
98
|
end
|
99
99
|
end
|
100
|
-
end
|
100
|
+
end
|
@@ -83,7 +83,7 @@ module YARD
|
|
83
83
|
# @note This command should not be overridden by subclasses. Implement
|
84
84
|
# the callback method {#run} instead.
|
85
85
|
# @param [Adapter Dependent] request the request object
|
86
|
-
# @return [Array(
|
86
|
+
# @return [Array(Numeric,Hash,Array<String>)] a Rack-style response
|
87
87
|
# of status, headers, and body wrapped in an array.
|
88
88
|
def call(request)
|
89
89
|
self.request = request
|
@@ -3,8 +3,20 @@ module YARD
|
|
3
3
|
module Commands
|
4
4
|
# Displays documentation for a specific object identified by the path
|
5
5
|
class DisplayObjectCommand < LibraryCommand
|
6
|
+
include DocServerHelper
|
7
|
+
|
6
8
|
def run
|
7
|
-
|
9
|
+
if path.empty?
|
10
|
+
if options.readme
|
11
|
+
url = url_for_file(options.readme)
|
12
|
+
self.status, self.headers, self.body = *router.send(:route, url)
|
13
|
+
cache(body.first)
|
14
|
+
return
|
15
|
+
else
|
16
|
+
self.path = 'index'
|
17
|
+
end
|
18
|
+
end
|
19
|
+
return index if path == 'index'
|
8
20
|
|
9
21
|
if object = Registry.at(object_path)
|
10
22
|
options.update(:type => :layout)
|
@@ -17,14 +29,9 @@ module YARD
|
|
17
29
|
def index
|
18
30
|
Registry.load_all
|
19
31
|
|
20
|
-
title = options[:title]
|
21
|
-
unless title
|
22
|
-
title = "Documentation for #{library.name} #{library.version ? '(' + library.version + ')' : ''}"
|
23
|
-
end
|
24
32
|
options.update(
|
25
33
|
:object => '_index.html',
|
26
34
|
:objects => Registry.all(:module, :class),
|
27
|
-
:title => title,
|
28
35
|
:type => :layout
|
29
36
|
)
|
30
37
|
render
|
@@ -3,28 +3,11 @@ module YARD
|
|
3
3
|
module Commands
|
4
4
|
# Displays an object wrapped in frames
|
5
5
|
class FramesCommand < DisplayObjectCommand
|
6
|
-
include DocServerHelper
|
7
|
-
|
8
6
|
def run
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
page_title = "Object: #{object_path}"
|
14
|
-
elsif options[:files] && options[:files].size > 0
|
15
|
-
page_title = "File: #{File.basename(options[:files].first.path)}"
|
16
|
-
main_url = url_for_file(options[:files].first)
|
17
|
-
elsif !path || path.empty?
|
18
|
-
page_title = "Documentation for #{library.name} #{library.version ? '(' + library.version + ')' : ''}"
|
19
|
-
end
|
20
|
-
|
21
|
-
options.update(
|
22
|
-
:page_title => page_title,
|
23
|
-
:main_url => main_url,
|
24
|
-
:template => :doc_server,
|
25
|
-
:type => :frames
|
26
|
-
)
|
27
|
-
render
|
7
|
+
options.update(:frames => true, :type => :fulldoc)
|
8
|
+
tpl = fulldoc_template
|
9
|
+
tpl.generate_frameset
|
10
|
+
cache(tpl.contents)
|
28
11
|
end
|
29
12
|
end
|
30
13
|
end
|
@@ -3,6 +3,25 @@ require 'thread'
|
|
3
3
|
module YARD
|
4
4
|
module Server
|
5
5
|
module Commands
|
6
|
+
class LibraryOptions < CLI::YardocOptions
|
7
|
+
def adapter; @command.adapter end
|
8
|
+
def library; @command.library end
|
9
|
+
def single_library; @command.single_library end
|
10
|
+
def serializer; @command.serializer end
|
11
|
+
default_attr :serialize, false
|
12
|
+
|
13
|
+
attr_accessor :command
|
14
|
+
attr_accessor :frames
|
15
|
+
|
16
|
+
def each(&block)
|
17
|
+
super(&block)
|
18
|
+
yield(:adapter, adapter)
|
19
|
+
yield(:library, library)
|
20
|
+
yield(:single_library, single_library)
|
21
|
+
yield(:serializer, serializer)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
6
25
|
# This is the base command for all commands that deal directly with libraries.
|
7
26
|
# Some commands do not, but most (like {DisplayObjectCommand}) do. If your
|
8
27
|
# command deals with libraries directly, subclass this class instead.
|
@@ -13,7 +32,7 @@ module YARD
|
|
13
32
|
# @return [LibraryVersion] the object containing library information
|
14
33
|
attr_accessor :library
|
15
34
|
|
16
|
-
# @return [
|
35
|
+
# @return [LibraryOptions] default options for the library
|
17
36
|
attr_accessor :options
|
18
37
|
|
19
38
|
# @return [Serializers::Base] the serializer used to perform file linking
|
@@ -35,24 +54,33 @@ module YARD
|
|
35
54
|
end
|
36
55
|
|
37
56
|
def call(request)
|
57
|
+
save_default_template_info
|
38
58
|
self.request = request
|
39
|
-
self.options =
|
40
|
-
|
41
|
-
|
42
|
-
:library => library,
|
43
|
-
:adapter => adapter,
|
44
|
-
:single_library => single_library,
|
45
|
-
:markup => :rdoc,
|
46
|
-
:format => :html
|
47
|
-
)
|
59
|
+
self.options = LibraryOptions.new
|
60
|
+
self.options.reset_defaults
|
61
|
+
self.options.command = self
|
48
62
|
setup_library
|
63
|
+
self.options.title = "Documentation for #{library.name} " +
|
64
|
+
(library.version ? '(' + library.version + ')' : '')
|
49
65
|
super
|
50
66
|
rescue LibraryNotPreparedError
|
51
67
|
not_prepared
|
68
|
+
ensure
|
69
|
+
restore_template_info
|
52
70
|
end
|
53
71
|
|
54
72
|
private
|
55
73
|
|
74
|
+
def save_default_template_info
|
75
|
+
@old_template_paths = Templates::Engine.template_paths.dup
|
76
|
+
@old_extra_includes = Templates::Template.extra_includes.dup
|
77
|
+
end
|
78
|
+
|
79
|
+
def restore_template_info
|
80
|
+
Templates::Engine.template_paths = @old_template_paths
|
81
|
+
Templates::Template.extra_includes = @old_extra_includes
|
82
|
+
end
|
83
|
+
|
56
84
|
def setup_library
|
57
85
|
library.prepare! if request.xhr? && request.query['process']
|
58
86
|
load_yardoc
|
@@ -83,16 +111,34 @@ module YARD
|
|
83
111
|
return
|
84
112
|
end
|
85
113
|
Registry.clear
|
114
|
+
Templates::ErbCache.clear!
|
86
115
|
Registry.load_yardoc(library.yardoc_file)
|
87
116
|
Thread.current[:__yard_last_yardoc__] = library.yardoc_file
|
88
117
|
end
|
89
118
|
|
90
119
|
def not_prepared
|
91
120
|
self.caching = false
|
92
|
-
options.update(:
|
121
|
+
options.update(:template => :doc_server, :type => :processing)
|
93
122
|
[202, {'Content-Type' => 'text/html'}, [render]]
|
94
123
|
end
|
95
124
|
|
125
|
+
# Hack to load a custom fulldoc template object that does
|
126
|
+
# not do any rendering/generation. We need this to access the
|
127
|
+
# generate_*_list methods.
|
128
|
+
def fulldoc_template
|
129
|
+
tplopts = [options.template, :fulldoc, options.format]
|
130
|
+
tplclass = Templates::Engine.template(*tplopts)
|
131
|
+
obj = Object.new.extend(tplclass)
|
132
|
+
class << obj; def init; end end
|
133
|
+
obj.class = tplclass
|
134
|
+
obj.send(:initialize, options)
|
135
|
+
class << obj
|
136
|
+
attr_reader :contents
|
137
|
+
def asset(file, contents) @contents = contents end
|
138
|
+
end
|
139
|
+
obj
|
140
|
+
end
|
141
|
+
|
96
142
|
# @private
|
97
143
|
@@last_yardoc = nil
|
98
144
|
end
|