class VCR::Cassette::Serializers

Keeps track of the cassette serializers in a hash-like object.

Public Class Methods

new() click to toggle source

@private

# File lib/vcr/cassette/serializers.rb, line 11
def initialize
  @serializers = {}
end

Public Instance Methods

[](name) click to toggle source

Gets the named serializer.

@param name [Symbol] the name of the serializer @return the named serializer @raise [ArgumentError] if there is not a serializer for the given name

# File lib/vcr/cassette/serializers.rb, line 20
def [](name)
  @serializers.fetch(name) do |_|
    @serializers[name] = case name
      when :yaml  then YAML
      when :syck  then Syck
      when :psych then Psych
      when :json  then JSON
      else raise ArgumentError.new("The requested VCR cassette serializer (#{name.inspect}) is not registered.")
    end
  end
end
[]=(name, value) click to toggle source

Registers a serializer.

@param name [Symbol] the name of the serializer @param value [#file_extension, serialize, deserialize] the serializer object. It must implement

`file_extension()`, `serialize(Hash)` and `deserialize(String)`.
# File lib/vcr/cassette/serializers.rb, line 37
def []=(name, value)
  if @serializers.has_key?(name)
    warn "WARNING: There is already a VCR cassette serializer registered for #{name.inspect}. Overriding it."
  end

  @serializers[name] = value
end