# Class: YARD::Serializers::Base Abstract

Inherits:
  Object
  - Object
  - YARD::Serializers::Base
  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:

- #serialize

- #serialized_path

Optionally, a serializer can implement before and after filters:

- #before_serialize

- #after_serialize

## Direct Known Subclasses

FileSystemSerializer, ProcessSerializer, StdoutSerializer

## Instance Attribute Summary collapse

- #options ⇒ SymbolHash readonly

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

## Creating a New Serializer collapse

- #initialize(opts = {}) ⇒ Base constructor

  Creates a new serializer with options.

## Serializing an Object collapse

- #exists?(object) ⇒ Boolean abstract

  Returns whether an object has been serialized.

- #serialize(object, data) ⇒ Object abstract

  Serializes an object.

- #serialized_path(object) ⇒ String abstract

  The serialized path of an object.

## Callbacks collapse

- #after_serialize(data) ⇒ void abstract

  Called after serialization.

- #before_serialize ⇒ Boolean abstract

  Called before serialization.

## 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

### #options ⇒ `SymbolHash` (readonly)

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

Returns:

- (`SymbolHash`) —

  the serializer options

    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_serialize ⇒ `Boolean`

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:

- object (`CodeObjects::Base`) —

  the object to check existence of

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:

- object (`CodeObjects::Base`) —

  the object to return a path for

Returns:

- (`String`) —

  the serialized path of an object

    51

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

    def serialized_path(object) end