Sha256: 1188c4f6a9b82407c8851f4f398451180a49becf88d6c7e9d170dd7e1fec8c14

Contents?: true

Size: 1.3 KB

Versions: 13

Compression:

Stored size: 1.3 KB

Contents

# frozen_string_literal: true

require 'json'

module Deimos
  module SchemaClass
    # Base Class for Schema Classes generated from Avro.
    class Base

      # @param _args [Array<Object>]
      def initialize(*_args)
      end

      # Converts the object to a hash which can be used for debugging or comparing objects.
      # @param _opts [Hash]
      # @return [Hash] a hash representation of the payload
      def as_json(_opts={})
        raise MissingImplementationError
      end

      # @param key [String,Symbol]
      # @param val [Object]
      # @return [void]
      def []=(key, val)
        self.send("#{key}=", val)
      end

      # @param other [SchemaClass::Base]
      # @return [Boolean]
      def ==(other)
        comparison = other
        if other.class == self.class
          comparison = other.as_json
        end

        comparison == self.as_json
      end

      # @return [String]
      def inspect
        klass = self.class
        "#{klass}(#{self.as_json})"
      end

      # Initializes this class from a given value
      # @param value [Object]
      # @return [SchemaClass::Base]
      def self.initialize_from_value(value)
        raise MissingImplementationError
      end

    protected

      # @return [Integer]
      def hash
        as_json.hash
      end
    end
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
deimos-ruby-2.0.0.pre.beta6 lib/deimos/schema_class/base.rb
deimos-ruby-2.0.0.pre.beta5 lib/deimos/schema_class/base.rb
deimos-ruby-2.0.0.pre.beta4 lib/deimos/schema_class/base.rb
deimos-ruby-2.0.0.pre.beta3 lib/deimos/schema_class/base.rb
deimos-ruby-2.0.0.pre.beta2 lib/deimos/schema_class/base.rb
deimos-ruby-2.0.0.pre.beta1 lib/deimos/schema_class/base.rb
deimos-ruby-2.0.0.pre.alpha7 lib/deimos/schema_class/base.rb
deimos-ruby-2.0.0.pre.alpha6 lib/deimos/schema_class/base.rb
deimos-ruby-2.0.0.pre.alpha5 lib/deimos/schema_class/base.rb
deimos-ruby-2.0.0.pre.alpha4 lib/deimos/schema_class/base.rb
deimos-ruby-2.0.0.pre.alpha3 lib/deimos/schema_class/base.rb
deimos-ruby-2.0.0.pre.alpha2 lib/deimos/schema_class/base.rb
deimos-ruby-2.0.0.pre.alpha1 lib/deimos/schema_class/base.rb