Class: YARD::Serializers::Base Abstract

Inherits:
Object
  • Object
show all
Defined in:
lib/yard/serializers/base.rb

Overview

This class is abstract.

Override this class to implement a custom serializer.

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:

Optionally, a serializer can implement before and after filters:

Instance Attribute Summary collapse

Creating a New Serializer collapse

Serializing an Object collapse

Callbacks collapse

Constructor Details

#initialize(opts = {}) ⇒ Base

Creates a new serializer with options

Parameters:

  • opts (Hash) (defaults to: {})

    the options to assign to #options



28
29
30
# File 'lib/yard/serializers/base.rb', line 28

def initialize(opts = {})
  @options = SymbolHash.new(false).update(opts)
end

Instance Attribute Details

#optionsSymbolHash (readonly)

All serializer options are saved so they can be passed to other serializers.

Returns:



21
22
23
# File 'lib/yard/serializers/base.rb', line 21

def options
  @options
end

Instance Method Details

#after_serialize(data) ⇒ void

This method is abstract.

Should run code after serialization.

This method returns an undefined value.

Called after serialization.

Parameters:

  • data (String)

    the data that was serialized.



80
# File 'lib/yard/serializers/base.rb', line 80

def after_serialize(data); end

#before_serializeBoolean

This method is abstract.

Should run code before serialization. Should return false if serialization should not occur.

Called before serialization.

Returns:

  • (Boolean)

    whether or not serialization should occur



73
# File 'lib/yard/serializers/base.rb', line 73

def before_serialize; end

#exists?(object) ⇒ Boolean

This method is abstract.

This method should return whether the endpoint already exists. For instance, a file system serializer would check if the file exists on disk. You will most likely use #basepath and #serialized_path to get the endpoint's location.

Returns whether an object has been serialized

Parameters:

Returns:

  • (Boolean)

    whether the endpoint exists.

Since:

  • 0.6.0



62
63
64
# File 'lib/yard/serializers/base.rb', line 62

def exists?(object) # rubocop:disable Lint/UnusedMethodArgument
  false
end

#serialize(object, data) ⇒ Object

This method is 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

Serializes an object.

Parameters:

  • object (CodeObjects::Base, String)

    the object to serialize the data for. The object can also be a string (for non-object serialization)

  • data (String)

    the contents that should be serialized



42
# File 'lib/yard/serializers/base.rb', line 42

def serialize(object, data) end

#serialized_path(object) ⇒ String

This method is 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.

The serialized path of an object

Parameters:

Returns:

  • (String)

    the serialized path of an object



51
# File 'lib/yard/serializers/base.rb', line 51

def serialized_path(object) end