Sha256: 2ce2cd02f827c59338b547cd0f79994ffc70ef8d0fc3ad357370535ab5f454f2

Contents?: true

Size: 1016 Bytes

Versions: 21

Compression:

Stored size: 1016 Bytes

Contents

# frozen_string_literal: true

module Eventsimple
  class DataType < ActiveModel::Type::Value
    def initialize(event_klass)
      @event_klass = event_klass
      super()
    end

    attr_reader :event_klass

    def type
      :data_type
    end

    def cast_value(value)
      case value
      when String
        decoded = ActiveSupport::JSON.decode(value)
        return event_klass::Message.new(decoded) if event_klass.const_defined?(:Message)

        decoded
      when Hash
        return event_klass::Message.new(value) if event_klass.const_defined?(:Message)

        value
      when event_klass::Message
        value
      end
    end

    def serialize(value)
      case value
      when Hash, event_klass::Message
        ActiveSupport::JSON.encode(value)
      else
        super
      end
    end

    def deserialize(value)
      decoded = ActiveSupport::JSON.decode(value)
      return event_klass::Message.new(decoded) if event_klass.const_defined?(:Message)

      decoded
    end
  end
end

Version data entries

21 entries across 21 versions & 1 rubygems

Version Path
eventsimple-1.5.6 lib/eventsimple/data_type.rb
eventsimple-1.5.5 lib/eventsimple/data_type.rb
eventsimple-1.5.4 lib/eventsimple/data_type.rb
eventsimple-1.5.3 lib/eventsimple/data_type.rb
eventsimple-1.4.3 lib/eventsimple/data_type.rb
eventsimple-1.4.2 lib/eventsimple/data_type.rb
eventsimple-1.4.1 lib/eventsimple/data_type.rb
eventsimple-1.4.0 lib/eventsimple/data_type.rb
eventsimple-1.3.3 lib/eventsimple/data_type.rb
eventsimple-1.3.2 lib/eventsimple/data_type.rb
eventsimple-1.3.1 lib/eventsimple/data_type.rb
eventsimple-1.3.0 lib/eventsimple/data_type.rb
eventsimple-1.2.3 lib/eventsimple/data_type.rb
eventsimple-1.2.2 lib/eventsimple/data_type.rb
eventsimple-1.2.1 lib/eventsimple/data_type.rb
eventsimple-1.2.0 lib/eventsimple/data_type.rb
eventsimple-1.1.3 lib/eventsimple/data_type.rb
eventsimple-1.1.2 lib/eventsimple/data_type.rb
eventsimple-1.1.1 lib/eventsimple/data_type.rb
eventsimple-1.1.0 lib/eventsimple/data_type.rb