yard 0.6.8 → 0.7.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.

Files changed (224) hide show
  1. data/.yardopts +1 -0
  2. data/ChangeLog +723 -0
  3. data/README.md +16 -6
  4. data/docs/CodeObjects.md +10 -16
  5. data/docs/GettingStarted.md +232 -32
  6. data/docs/Glossary.md +1 -2
  7. data/docs/Handlers.md +10 -16
  8. data/docs/Overview.md +14 -13
  9. data/docs/Parser.md +13 -22
  10. data/docs/Tags.md +209 -16
  11. data/docs/Templates.md +237 -26
  12. data/docs/WhatsNew.md +178 -2
  13. data/lib/yard.rb +13 -10
  14. data/lib/yard/autoload.rb +22 -18
  15. data/lib/yard/cli/command.rb +13 -12
  16. data/lib/yard/cli/command_parser.rb +20 -19
  17. data/lib/yard/cli/config.rb +19 -19
  18. data/lib/yard/cli/diff.rb +46 -21
  19. data/lib/yard/cli/gems.rb +11 -11
  20. data/lib/yard/cli/graph.rb +13 -13
  21. data/lib/yard/cli/help.rb +1 -1
  22. data/lib/yard/cli/list.rb +22 -0
  23. data/lib/yard/cli/server.rb +17 -17
  24. data/lib/yard/cli/stats.rb +32 -32
  25. data/lib/yard/cli/yardoc.rb +181 -135
  26. data/lib/yard/cli/yri.rb +29 -29
  27. data/lib/yard/code_objects/base.rb +101 -101
  28. data/lib/yard/code_objects/class_object.rb +20 -20
  29. data/lib/yard/code_objects/constant_object.rb +1 -1
  30. data/lib/yard/code_objects/extended_method_object.rb +5 -5
  31. data/lib/yard/code_objects/extra_file_object.rb +89 -0
  32. data/lib/yard/code_objects/macro_object.rb +215 -0
  33. data/lib/yard/code_objects/method_object.rb +30 -30
  34. data/lib/yard/code_objects/module_object.rb +1 -1
  35. data/lib/yard/code_objects/namespace_object.rb +39 -39
  36. data/lib/yard/code_objects/proxy.rb +38 -38
  37. data/lib/yard/code_objects/root_object.rb +1 -1
  38. data/lib/yard/config.rb +40 -40
  39. data/lib/yard/core_ext/array.rb +2 -2
  40. data/lib/yard/core_ext/file.rb +11 -11
  41. data/lib/yard/core_ext/insertion.rb +10 -10
  42. data/lib/yard/core_ext/module.rb +2 -2
  43. data/lib/yard/core_ext/string.rb +2 -2
  44. data/lib/yard/core_ext/symbol_hash.rb +14 -14
  45. data/lib/yard/docstring.rb +122 -54
  46. data/lib/yard/globals.rb +2 -2
  47. data/lib/yard/handlers/base.rb +216 -127
  48. data/lib/yard/handlers/processor.rb +65 -27
  49. data/lib/yard/handlers/ruby/alias_handler.rb +6 -3
  50. data/lib/yard/handlers/ruby/attribute_handler.rb +7 -6
  51. data/lib/yard/handlers/ruby/base.rb +50 -31
  52. data/lib/yard/handlers/ruby/class_condition_handler.rb +11 -11
  53. data/lib/yard/handlers/ruby/class_handler.rb +10 -10
  54. data/lib/yard/handlers/ruby/class_variable_handler.rb +3 -3
  55. data/lib/yard/handlers/ruby/constant_handler.rb +7 -7
  56. data/lib/yard/handlers/ruby/exception_handler.rb +2 -2
  57. data/lib/yard/handlers/ruby/extend_handler.rb +1 -1
  58. data/lib/yard/handlers/ruby/legacy/alias_handler.rb +8 -5
  59. data/lib/yard/handlers/ruby/legacy/attribute_handler.rb +6 -5
  60. data/lib/yard/handlers/ruby/legacy/base.rb +42 -27
  61. data/lib/yard/handlers/ruby/legacy/class_condition_handler.rb +9 -9
  62. data/lib/yard/handlers/ruby/legacy/class_handler.rb +13 -12
  63. data/lib/yard/handlers/ruby/legacy/class_variable_handler.rb +3 -6
  64. data/lib/yard/handlers/ruby/legacy/constant_handler.rb +5 -8
  65. data/lib/yard/handlers/ruby/legacy/exception_handler.rb +1 -1
  66. data/lib/yard/handlers/ruby/legacy/extend_handler.rb +1 -0
  67. data/lib/yard/handlers/ruby/legacy/macro_handler.rb +40 -0
  68. data/lib/yard/handlers/ruby/legacy/method_handler.rb +10 -10
  69. data/lib/yard/handlers/ruby/legacy/mixin_handler.rb +4 -3
  70. data/lib/yard/handlers/ruby/legacy/module_handler.rb +2 -1
  71. data/lib/yard/handlers/ruby/legacy/private_constant_handler.rb +4 -4
  72. data/lib/yard/handlers/ruby/legacy/visibility_handler.rb +2 -1
  73. data/lib/yard/handlers/ruby/legacy/yield_handler.rb +3 -3
  74. data/lib/yard/handlers/ruby/macro_handler.rb +41 -0
  75. data/lib/yard/handlers/ruby/macro_handler_methods.rb +130 -0
  76. data/lib/yard/handlers/ruby/method_condition_handler.rb +1 -1
  77. data/lib/yard/handlers/ruby/method_handler.rb +13 -13
  78. data/lib/yard/handlers/ruby/mixin_handler.rb +4 -4
  79. data/lib/yard/handlers/ruby/module_handler.rb +2 -1
  80. data/lib/yard/handlers/ruby/private_constant_handler.rb +4 -4
  81. data/lib/yard/handlers/ruby/struct_handler_methods.rb +11 -11
  82. data/lib/yard/handlers/ruby/visibility_handler.rb +1 -1
  83. data/lib/yard/handlers/ruby/yield_handler.rb +5 -5
  84. data/lib/yard/logging.rb +11 -11
  85. data/lib/yard/parser/base.rb +8 -8
  86. data/lib/yard/parser/c_parser.rb +42 -33
  87. data/lib/yard/parser/ruby/ast_node.rb +62 -61
  88. data/lib/yard/parser/ruby/legacy/ruby_lex.rb +66 -66
  89. data/lib/yard/parser/ruby/legacy/ruby_parser.rb +4 -4
  90. data/lib/yard/parser/ruby/legacy/statement.rb +11 -11
  91. data/lib/yard/parser/ruby/legacy/statement_list.rb +15 -15
  92. data/lib/yard/parser/ruby/legacy/token_list.rb +9 -9
  93. data/lib/yard/parser/ruby/ruby_parser.rb +51 -37
  94. data/lib/yard/parser/source_parser.rb +271 -46
  95. data/lib/yard/rake/yardoc_task.rb +18 -17
  96. data/lib/yard/registry.rb +64 -64
  97. data/lib/yard/registry_store.rb +34 -34
  98. data/lib/yard/rubygems/backports.rb +8 -0
  99. data/lib/yard/rubygems/backports/LICENSE.txt +57 -0
  100. data/lib/yard/rubygems/backports/MIT.txt +20 -0
  101. data/lib/yard/rubygems/backports/gem.rb +8 -0
  102. data/lib/yard/rubygems/backports/source_index.rb +353 -0
  103. data/lib/yard/rubygems/specification.rb +2 -2
  104. data/lib/yard/serializers/base.rb +20 -20
  105. data/lib/yard/serializers/file_system_serializer.rb +28 -24
  106. data/lib/yard/serializers/process_serializer.rb +3 -3
  107. data/lib/yard/serializers/stdout_serializer.rb +6 -6
  108. data/lib/yard/serializers/yardoc_serializer.rb +17 -17
  109. data/lib/yard/server/adapter.rb +12 -12
  110. data/lib/yard/server/commands/base.rb +26 -26
  111. data/lib/yard/server/commands/display_file_command.rb +3 -2
  112. data/lib/yard/server/commands/display_object_command.rb +5 -5
  113. data/lib/yard/server/commands/frames_command.rb +1 -1
  114. data/lib/yard/server/commands/library_command.rb +7 -7
  115. data/lib/yard/server/commands/library_index_command.rb +2 -2
  116. data/lib/yard/server/commands/list_command.rb +8 -8
  117. data/lib/yard/server/commands/search_command.rb +8 -8
  118. data/lib/yard/server/commands/static_file_command.rb +3 -3
  119. data/lib/yard/server/doc_server_helper.rb +6 -3
  120. data/lib/yard/server/doc_server_serializer.rb +1 -1
  121. data/lib/yard/server/library_version.rb +45 -45
  122. data/lib/yard/server/rack_adapter.rb +10 -10
  123. data/lib/yard/server/router.rb +28 -28
  124. data/lib/yard/server/static_caching.rb +5 -5
  125. data/lib/yard/server/templates/default/fulldoc/html/css/custom.css +3 -3
  126. data/lib/yard/server/templates/default/fulldoc/html/js/live.js +1 -1
  127. data/lib/yard/server/templates/default/layout/html/breadcrumb.erb +2 -2
  128. data/lib/yard/server/templates/default/layout/html/headers.erb +13 -8
  129. data/lib/yard/server/templates/default/layout/html/setup.rb +7 -0
  130. data/lib/yard/server/templates/doc_server/full_list/html/full_list.erb +2 -2
  131. data/lib/yard/server/templates/doc_server/full_list/html/setup.rb +14 -4
  132. data/lib/yard/server/templates/doc_server/library_list/html/contents.erb +2 -2
  133. data/lib/yard/server/templates/doc_server/library_list/html/headers.erb +2 -2
  134. data/lib/yard/server/templates/doc_server/processing/html/processing.erb +1 -1
  135. data/lib/yard/server/templates/doc_server/search/html/search.erb +1 -1
  136. data/lib/yard/server/webrick_adapter.rb +2 -2
  137. data/lib/yard/tags/default_factory.rb +19 -19
  138. data/lib/yard/tags/default_tag.rb +1 -1
  139. data/lib/yard/tags/library.rb +68 -63
  140. data/lib/yard/tags/option_tag.rb +1 -1
  141. data/lib/yard/tags/overload_tag.rb +9 -9
  142. data/lib/yard/tags/ref_tag_list.rb +2 -2
  143. data/lib/yard/tags/tag.rb +7 -7
  144. data/lib/yard/templates/engine.rb +31 -31
  145. data/lib/yard/templates/erb_cache.rb +1 -1
  146. data/lib/yard/templates/helpers/base_helper.rb +46 -32
  147. data/lib/yard/templates/helpers/filter_helper.rb +2 -2
  148. data/lib/yard/templates/helpers/html_helper.rb +120 -81
  149. data/lib/yard/templates/helpers/html_syntax_highlight_helper.rb +4 -4
  150. data/lib/yard/templates/helpers/markup/rdoc_markup.rb +9 -9
  151. data/lib/yard/templates/helpers/markup_helper.rb +37 -30
  152. data/lib/yard/templates/helpers/method_helper.rb +7 -7
  153. data/lib/yard/templates/helpers/text_helper.rb +7 -7
  154. data/lib/yard/templates/helpers/uml_helper.rb +3 -3
  155. data/lib/yard/templates/section.rb +14 -14
  156. data/lib/yard/templates/template.rb +54 -54
  157. data/lib/yard/verifier.rb +27 -27
  158. data/spec/cli/list_spec.rb +8 -0
  159. data/spec/cli/yardoc_spec.rb +58 -10
  160. data/spec/code_objects/extra_file_object_spec.rb +132 -0
  161. data/spec/code_objects/macro_object_spec.rb +154 -0
  162. data/spec/docstring_spec.rb +90 -0
  163. data/spec/handlers/base_spec.rb +22 -0
  164. data/spec/handlers/examples/macro_handler_001.rb.txt +73 -0
  165. data/spec/handlers/examples/method_handler_001.rb.txt +17 -0
  166. data/spec/handlers/macro_handler_spec.rb +140 -0
  167. data/spec/handlers/method_handler_spec.rb +28 -0
  168. data/spec/handlers/processor_spec.rb +4 -0
  169. data/spec/handlers/spec_helper.rb +1 -1
  170. data/spec/parser/c_parser_spec.rb +47 -16
  171. data/spec/parser/examples/extrafile.c.txt +8 -0
  172. data/spec/parser/examples/multifile.c.txt +6 -0
  173. data/spec/parser/ruby/ruby_parser_spec.rb +5 -0
  174. data/spec/parser/source_parser_spec.rb +235 -0
  175. data/spec/rake/yardoc_task_spec.rb +22 -17
  176. data/spec/serializers/file_system_serializer_spec.rb +6 -0
  177. data/spec/server/commands/library_command_spec.rb +39 -0
  178. data/spec/spec_helper.rb +14 -0
  179. data/spec/templates/examples/method001.html +6 -6
  180. data/spec/templates/examples/method002.html +4 -4
  181. data/spec/templates/examples/method003.html +10 -10
  182. data/spec/templates/examples/method005.html +2 -2
  183. data/spec/templates/examples/module001.dot +2 -0
  184. data/spec/templates/examples/module001.html +76 -37
  185. data/spec/templates/examples/module001.txt +1 -1
  186. data/spec/templates/helpers/base_helper_spec.rb +7 -2
  187. data/spec/templates/helpers/html_helper_spec.rb +49 -5
  188. data/spec/templates/helpers/markup_helper_spec.rb +9 -8
  189. data/spec/templates/module_spec.rb +7 -0
  190. data/spec/templates/onefile_spec.rb +47 -0
  191. data/templates/default/fulldoc/html/css/style.css +7 -5
  192. data/templates/default/fulldoc/html/full_list.erb +13 -10
  193. data/templates/default/fulldoc/html/full_list_files.erb +1 -1
  194. data/templates/default/fulldoc/html/js/app.js +16 -14
  195. data/templates/default/fulldoc/html/js/full_list.js +7 -6
  196. data/templates/default/fulldoc/html/setup.rb +78 -17
  197. data/templates/default/layout/html/files.erb +1 -1
  198. data/templates/default/layout/html/headers.erb +11 -7
  199. data/templates/default/layout/html/search.erb +4 -4
  200. data/templates/default/layout/html/setup.rb +28 -8
  201. data/templates/default/module/html/inherited_attributes.erb +17 -0
  202. data/templates/default/module/setup.rb +1 -1
  203. data/templates/default/onefile/html/files.erb +2 -2
  204. data/templates/default/onefile/html/layout.erb +1 -1
  205. data/templates/default/onefile/html/setup.rb +7 -5
  206. data/templates/default/tags/html/option.erb +1 -1
  207. data/templates/default/tags/html/tag.erb +3 -3
  208. data/templates/guide/class/html/setup.rb +1 -0
  209. data/templates/guide/docstring/html/setup.rb +1 -0
  210. data/templates/guide/fulldoc/html/css/style.css +91 -0
  211. data/templates/guide/fulldoc/html/js/app.js +33 -0
  212. data/templates/guide/fulldoc/html/setup.rb +54 -0
  213. data/templates/guide/layout/html/layout.erb +81 -0
  214. data/templates/guide/layout/html/setup.rb +24 -0
  215. data/templates/guide/method/html/header.erb +18 -0
  216. data/templates/guide/method/html/setup.rb +21 -0
  217. data/templates/guide/module/html/header.erb +7 -0
  218. data/templates/guide/module/html/method_list.erb +5 -0
  219. data/templates/guide/module/html/setup.rb +26 -0
  220. data/templates/guide/tags/html/setup.rb +8 -0
  221. metadata +40 -7
  222. data/lib/yard/handlers/ruby/legacy/process_handler.rb +0 -13
  223. data/lib/yard/handlers/ruby/process_handler.rb +0 -18
  224. data/spec/handlers/process_handler_spec.rb +0 -17
@@ -24,7 +24,7 @@ class Gem::Specification
24
24
  else
25
25
  attr_accessor :has_rdoc
26
26
  end
27
-
27
+
28
28
  if defined?(Gem::VERSION) && Gem::VERSION =~ /^1\.7\./
29
29
  def _dump_with_rdoc(limit)
30
30
  dmp = _dump_without_rdoc(limit)
@@ -33,7 +33,7 @@ class Gem::Specification
33
33
  end
34
34
  alias _dump_without_rdoc _dump
35
35
  alias _dump _dump_with_rdoc
36
-
36
+
37
37
  @@default_value[:has_rdoc] = true if defined?(@@default_value)
38
38
  @@attributes << 'has_rdoc' if defined?(@@attributes)
39
39
  @@nil_attributes << 'has_rdoc' if defined?(@@nil_attributes)
@@ -3,57 +3,57 @@ module YARD
3
3
  # The abstract base serializer. Serializers allow templates to be
4
4
  # rendered to various endpoints. For instance, a {FileSystemSerializer}
5
5
  # would allow template contents to be written to the filesystem
6
- #
6
+ #
7
7
  # To implement a custom serializer, override the following methods:
8
8
  # * {#serialize}
9
9
  # * {#serialized_path}
10
- #
10
+ #
11
11
  # Optionally, a serializer can implement before and after filters:
12
12
  # * {#before_serialize}
13
13
  # * {#after_serialize}
14
- #
14
+ #
15
15
  # @abstract Override this class to implement a custom serializer.
16
16
  class Base
17
17
  # All serializer options are saved so they can be passed to other serializers.
18
- #
18
+ #
19
19
  # @return [SymbolHash] the serializer options
20
20
  attr_reader :options
21
-
21
+
22
22
  # @group Creating a New Serializer
23
-
23
+
24
24
  # Creates a new serializer with options
25
- #
25
+ #
26
26
  # @param [Hash] opts the options to assign to {#options}
27
27
  def initialize(opts = {})
28
28
  @options = SymbolHash.new(false).update(opts)
29
29
  end
30
-
30
+
31
31
  # @group Serializing an Object
32
-
32
+
33
33
  # Serializes an object.
34
- #
35
- # @abstract This method should implement the logic that serializes
34
+ #
35
+ # @abstract This method should implement the logic that serializes
36
36
  # +data+ to the respective endpoint. This method should also call
37
37
  # the before and after callbacks {#before_serialize} and {#after_serialize}
38
38
  # @param [CodeObjects::Base, String] object the object to serialize the
39
39
  # data for. The object can also be a string (for non-object serialization)
40
40
  # @param [String] data the contents that should be serialized
41
41
  def serialize(object, data) end
42
-
42
+
43
43
  # The serialized path of an object
44
- #
44
+ #
45
45
  # @abstract This method should return the path of the object on the
46
46
  # endpoint. For instance, for a file serializer, this should return
47
47
  # the filename that represents the object on disk.
48
48
  # @param [CodeObjects::Base] object the object to return a path for
49
49
  # @return [String] the serialized path of an object
50
50
  def serialized_path(object) end
51
-
51
+
52
52
  # Returns whether an object has been serialized
53
- #
53
+ #
54
54
  # @abstract This method should return whether the endpoint already exists.
55
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
56
+ # on disk. You will most likely use +#basepath+ and {#serialized_path} to
57
57
  # get the endpoint's location.
58
58
  # @param [CodeObjects::Base] object the object to check existence of
59
59
  # @return [Boolean] whether the endpoint exists.
@@ -62,15 +62,15 @@ module YARD
62
62
 
63
63
  # @group Callbacks
64
64
 
65
- # Called before serialization.
66
- #
65
+ # Called before serialization.
66
+ #
67
67
  # @abstract Should run code before serialization. Should return false
68
68
  # if serialization should not occur.
69
69
  # @return [Boolean] whether or not serialization should occur
70
70
  def before_serialize; end
71
71
 
72
- # Called after serialization.
73
- #
72
+ # Called after serialization.
73
+ #
74
74
  # @abstract Should run code after serialization.
75
75
  # @param [String] data the data that was serialized.
76
76
  # @return [void]
@@ -5,22 +5,22 @@ module YARD
5
5
  # The base path to write data to.
6
6
  # @return [String] a base path
7
7
  attr_reader :basepath
8
-
8
+
9
9
  def basepath=(value)
10
10
  @basepath = options[:basepath] = value
11
11
  end
12
-
12
+
13
13
  # The extension of the filename (defaults to +html+)
14
- #
14
+ #
15
15
  # @return [String] the extension of the file. Empty string for no extension.
16
16
  attr_reader :extension
17
-
17
+
18
18
  def extension=(value)
19
19
  @extension = options[:extension] = value
20
20
  end
21
-
21
+
22
22
  # Creates a new FileSystemSerializer with options
23
- #
23
+ #
24
24
  # @option opts [String] :basepath ('doc') the base path to write data to
25
25
  # @option opts [String] :extension ('html') the extension of the serialized
26
26
  # path filename. If this is set to the empty string, no extension is used.
@@ -29,38 +29,42 @@ module YARD
29
29
  @basepath = (options[:basepath] || 'doc').to_s
30
30
  @extension = (options.has_key?(:extension) ? options[:extension] : 'html').to_s
31
31
  end
32
-
32
+
33
33
  # Serializes object with data to its serialized path (prefixed by the +#basepath+).
34
- #
34
+ #
35
35
  # @return [String] the written data (for chaining)
36
36
  def serialize(object, data)
37
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
41
-
41
+
42
42
  # Implements the serialized path of a code object.
43
- #
44
- # @param [CodeObjects::Base, String] object the object to get a path for.
45
- # The path of a string is the string itself.
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
46
  # @return [String] if object is a String, returns
47
47
  # object, otherwise the path on disk (without the basepath).
48
48
  def serialized_path(object)
49
49
  return object if object.is_a?(String)
50
50
 
51
- objname = object != YARD::Registry.root ? object.name.to_s : "top-level-namespace"
52
- objname += '_' + object.scope.to_s[0,1] if object.is_a?(CodeObjects::MethodObject)
53
- fspath = [objname + (extension.empty? ? '' : ".#{extension}")]
54
- if object.namespace && object.namespace.path != ""
55
- fspath.unshift(*object.namespace.path.split(CodeObjects::NSEP))
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
56
60
  end
57
-
61
+
58
62
  # Don't change the filenames, it just makes it more complicated
59
63
  # to figure out the original name.
60
- #fspath.map! do |p|
61
- # p.gsub(/([a-z])([A-Z])/, '\1_\2').downcase
64
+ #fspath.map! do |p|
65
+ # p.gsub(/([a-z])([A-Z])/, '\1_\2').downcase
62
66
  #end
63
-
67
+
64
68
  # Remove special chars from filenames.
65
69
  # Windows disallows \ / : * ? " < > | but we will just remove any
66
70
  # non alphanumeric (plus period, underscore and dash).
@@ -72,12 +76,12 @@ module YARD
72
76
  encoded
73
77
  end
74
78
  end
75
-
79
+
76
80
  File.join(fspath)
77
81
  end
78
-
82
+
79
83
  # Checks the disk for an object and returns whether it was serialized.
80
- #
84
+ #
81
85
  # @param [CodeObjects::Base] object the object to check
82
86
  # @return [Boolean] whether an object has been serialized to disk
83
87
  def exists?(object)
@@ -1,18 +1,18 @@
1
1
  module YARD
2
2
  module Serializers
3
3
  # Serializes an object to a process (like less)
4
- #
4
+ #
5
5
  # @example Serializing to a pager (less)
6
6
  # serializer = ProcessSerializer.new('less')
7
7
  # serializer.serialize(object, "data!")
8
8
  class ProcessSerializer < Base
9
9
  # Creates a new ProcessSerializer for the shell command +cmd+
10
- #
10
+ #
11
11
  # @param [String] cmd the command that will accept data on stdin
12
12
  def initialize(cmd)
13
13
  @cmd = cmd
14
14
  end
15
-
15
+
16
16
  # Overrides serialize behaviour and writes data to standard input
17
17
  # of the associated command
18
18
  def serialize(object, data)
@@ -3,28 +3,28 @@ module YARD
3
3
  # A serializer that writes data to standard output.
4
4
  class StdoutSerializer < Base
5
5
  # Creates a serializer to print text to stdout
6
- #
6
+ #
7
7
  # @param [Fixnum, nil] wrap if wrap is a number, wraps text to +wrap+
8
8
  # columns, otherwise no wrapping is done.
9
9
  def initialize(wrap = nil)
10
10
  @wrap = wrap
11
11
  end
12
-
12
+
13
13
  # Overrides serialize behaviour to write data to standard output
14
14
  def serialize(object, data)
15
15
  print(@wrap ? word_wrap(data, @wrap) : data)
16
16
  end
17
-
17
+
18
18
  private
19
-
19
+
20
20
  # Wraps text to a specific column length
21
- #
21
+ #
22
22
  # @param [String] text the text to wrap
23
23
  # @param [Fixnum] length the column length to wrap to
24
24
  # @return [String] the wrapped text
25
25
  def word_wrap(text, length = 80)
26
26
  # See ruby-talk/10655 / Ernest Ellingson
27
- text.gsub(/\t/," ").gsub(/.{1,50}(?:\s|\Z)/){($& +
27
+ text.gsub(/\t/," ").gsub(/.{1,50}(?:\s|\Z)/){($& +
28
28
  5.chr).gsub(/\n\005/,"\n").gsub(/\005/,"\n")}
29
29
  end
30
30
  end
@@ -1,6 +1,6 @@
1
1
  module YARD
2
2
  # Stubs marshal dumps and acts a delegate class for an object by path
3
- #
3
+ #
4
4
  # @private
5
5
  class StubProxy
6
6
  instance_methods.each {|m| undef_method(m) unless m.to_s =~ /^__|^object_id$/ }
@@ -8,12 +8,12 @@ module YARD
8
8
  def _dump(depth) @path end
9
9
  def self._load(str) new(str) end
10
10
  def hash; @path.hash end
11
-
12
- def initialize(path, transient = false)
11
+
12
+ def initialize(path, transient = false)
13
13
  @path = path
14
14
  @transient = transient
15
15
  end
16
-
16
+
17
17
  def method_missing(meth, *args, &block)
18
18
  return true if meth == :respond_to? && args.first == :_dump
19
19
  @object = nil if @transient
@@ -30,11 +30,11 @@ module YARD
30
30
  def initialize(yfile)
31
31
  super(:basepath => yfile, :extension => 'dat')
32
32
  end
33
-
33
+
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
-
37
+
38
38
  def serialized_path(object)
39
39
  path = case object
40
40
  when String, Symbol
@@ -59,7 +59,7 @@ module YARD
59
59
  end
60
60
  File.join('objects', path)
61
61
  end
62
-
62
+
63
63
  def serialize(object)
64
64
  if Hash === object
65
65
  super(object[:root], dump(object)) if object[:root]
@@ -67,7 +67,7 @@ module YARD
67
67
  super(object, dump(object))
68
68
  end
69
69
  end
70
-
70
+
71
71
  def deserialize(path, is_path = false)
72
72
  path = File.join(basepath, serialized_path(path)) unless is_path
73
73
  if File.file?(path)
@@ -78,32 +78,32 @@ module YARD
78
78
  nil
79
79
  end
80
80
  end
81
-
81
+
82
82
  private
83
-
83
+
84
84
  def dump(object)
85
85
  object = internal_dump(object, true) unless object.is_a?(Hash)
86
86
  Marshal.dump(object)
87
87
  end
88
-
88
+
89
89
  def internal_dump(object, first_object = false)
90
- if !first_object && object.is_a?(CodeObjects::Base) &&
90
+ if !first_object && object.is_a?(CodeObjects::Base) &&
91
91
  !(Tags::OverloadTag === object)
92
92
  return StubProxy.new(object.path)
93
93
  end
94
-
95
- if object.is_a?(Hash) || object.is_a?(Array) ||
94
+
95
+ if object.is_a?(Hash) || object.is_a?(Array) ||
96
96
  object.is_a?(CodeObjects::Base) ||
97
97
  object.instance_variables.size > 0
98
98
  object = object.dup
99
99
  end
100
-
100
+
101
101
  object.instance_variables.each do |ivar|
102
102
  ivar_obj = object.instance_variable_get(ivar)
103
103
  ivar_obj_dump = internal_dump(ivar_obj)
104
104
  object.instance_variable_set(ivar, ivar_obj_dump)
105
105
  end
106
-
106
+
107
107
  case object
108
108
  when Hash
109
109
  list = object.map do |k, v|
@@ -114,7 +114,7 @@ module YARD
114
114
  list = object.map {|item| internal_dump(item) }
115
115
  object.replace(list)
116
116
  end
117
-
117
+
118
118
  object
119
119
  end
120
120
  end
@@ -1,10 +1,10 @@
1
1
  module YARD
2
2
  module Server
3
-
3
+
4
4
  # Short circuits a request by raising an error. This exception is caught
5
5
  # by {Commands::Base#call} to immedaitely 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
9
9
  # {Commands::Base#call} to immediately end a request and return a 404 response
10
10
  # code. If a message is provided, the body is set to the exception message.
@@ -14,31 +14,31 @@ module YARD
14
14
  # backend for a specific server type. YARD implements concrete adapters
15
15
  # for WEBrick and Rack respectively, though other adapters can be made
16
16
  # for other server architectures.
17
- #
17
+ #
18
18
  # == Subclassing Notes
19
19
  # To create a concrete adapter class, implement the {#start} method to
20
20
  # initiate the server backend.
21
- #
21
+ #
22
22
  # @abstract
23
23
  class Adapter
24
24
  # @return [String] the location where static files are located, if any.
25
25
  # To set this field on initialization, pass +:DocumentRoot+ to the
26
26
  # +server_opts+ argument in {#initialize}
27
27
  attr_accessor :document_root
28
-
28
+
29
29
  # @return [Hash{String=>Array<LibraryVersion>}] a map of libraries.
30
30
  # @see LibraryVersion LibraryVersion for information on building a list of libraries
31
31
  # @see #add_library
32
32
  attr_accessor :libraries
33
-
33
+
34
34
  # @return [Hash] options passed and processed by adapters. The actual
35
35
  # options mostly depend on the adapters themselves.
36
36
  attr_accessor :options
37
-
37
+
38
38
  # @return [Hash] a set of options to pass to the server backend. Note
39
39
  # that +:DocumentRoot+ also sets the {#document_root}.
40
40
  attr_accessor :server_options
41
-
41
+
42
42
  # @return [Router] the router object used to route URLs to commands
43
43
  attr_accessor :router
44
44
 
@@ -57,9 +57,9 @@ module YARD
57
57
  Templates::Template.extra_includes -= [YARD::Server::DocServerHelper]
58
58
  Templates::Engine.template_paths -= [File.dirname(__FILE__) + '/templates']
59
59
  end
60
-
60
+
61
61
  # Creates a new adapter object
62
- #
62
+ #
63
63
  # @param [Hash{String=>Array<LibraryVersion>}] libs a list of libraries,
64
64
  # see {#libraries} for formulating this list.
65
65
  # @param [Hash] opts extra options to pass to the adapter
@@ -80,7 +80,7 @@ module YARD
80
80
  log.debug "Caching on" if options[:caching]
81
81
  log.debug "Document root: #{document_root}" if document_root
82
82
  end
83
-
83
+
84
84
  # Adds a library to the {#libraries} mapping for a given library object.
85
85
  # @example Adding a new library to an adapter
86
86
  # adapter.add_library LibraryVersion.new('mylib', '1.0', '/path/to/.yardoc')
@@ -89,7 +89,7 @@ module YARD
89
89
  libraries[library.name] ||= []
90
90
  libraries[library.name] |= [library]
91
91
  end
92
-
92
+
93
93
  # Implement this method to connect your adapter to your server.
94
94
  # @abstract
95
95
  def start