Sha256: 8180ed186b61802289921265c633f272a1f4b4064a8bd679a7a121b61d87215f

Contents?: true

Size: 982 Bytes

Versions: 2

Compression:

Stored size: 982 Bytes

Contents

module VCR
  class Cassette
    class Serializers
      autoload :YAML,  'vcr/cassette/serializers/yaml'
      autoload :Syck,  'vcr/cassette/serializers/syck'
      autoload :Psych, 'vcr/cassette/serializers/psych'
      autoload :JSON,  'vcr/cassette/serializers/json'

      def initialize
        @serializers = {}
      end

      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

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

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
vcr-2.0.0.rc1 lib/vcr/cassette/serializers.rb
vcr-2.0.0.beta2 lib/vcr/cassette/serializers.rb