lib/yard/serializers/base.rb in yard-0.2.3.5 vs lib/yard/serializers/base.rb in yard-0.4.0
- old
+ new
@@ -1,16 +1,63 @@
module YARD
module Serializers
+ # The abstract base serializer. Serializers allow templates to be
+ # rendered to various endpoints. For instance, a {FileSystemSerializer}
+ # would allow template contents to be written to the filesystem
+ #
+ # To implement a custom serializer, override the following methods:
+ # * {#serialize}
+ # * {#serialized_path}
+ #
+ # Optionally, a serializer can implement before and after filters:
+ # * {#before_serialize}
+ # * {#after_serialize}
+ #
+ # @abstract Override this class to implement a custom serializer.
class Base
+ # All serializer options are saved so they can be passed to other serializers.
+ #
+ # @return [SymbolHash] the serializer options
attr_reader :options
+ # Creates a new serializer with options
+ #
+ # @param [Hash] opts the options to assign to {#options}
def initialize(opts = {})
@options = SymbolHash.new(false).update(opts)
end
+ # Called before serialization.
+ #
+ # @abstract Should run code before serialization. Should return false
+ # if serialization should not occur.
+ # @return [Boolean] whether or not serialization should occur
def before_serialize; end
- def serialize(object, data) end
+
+ # Called after serialization.
+ #
+ # @abstract Should run code after serialization.
+ # @param [String] data the data that was serialized.
+ # @return [nil]
def after_serialize(data); end
+
+ # Serializes an object.
+ #
+ # @abstract This method should implement the logic that serializes
+ # +data+ to the respective endpoint. This method should also call
+ # the before and after callbacks {#before_serialize} and {#after_serialize}
+ # @param [CodeObjects::Base, String] object the object to serialize the
+ # data for. The object can also be a string (for non-object serialization)
+ # @param [String] data the contents that should be serialized
+ def serialize(object, data) end
+
+ # The serialized path of an object
+ #
+ # @abstract This method should return the path of the object on the
+ # endpoint. For instance, for a file serializer, this should return
+ # the filename that represents the object on disk.
+ # @param [CodeObjects::Base] object the object to return a path for
+ # @return [String] the serialized path of an object
def serialized_path(object) end
end
end
end
\ No newline at end of file