Sha256: 3fe0869521c366361f390382d2471fbf40b1f1420fd314fbfe12e8f40ce835a8

Contents?: true

Size: 1.28 KB

Versions: 38

Compression:

Stored size: 1.28 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 NotImplementedError
      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 NotImplementedError
      end

    protected

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

Version data entries

38 entries across 38 versions & 1 rubygems

Version Path
deimos-ruby-1.24.2 lib/deimos/schema_class/base.rb
deimos-ruby-1.24.1 lib/deimos/schema_class/base.rb
deimos-ruby-1.24.0 lib/deimos/schema_class/base.rb
deimos-ruby-1.23.3 lib/deimos/schema_class/base.rb
deimos-ruby-1.23.2 lib/deimos/schema_class/base.rb
deimos-ruby-1.23.1.pre.beta6 lib/deimos/schema_class/base.rb
deimos-ruby-1.23.1.pre.beta5 lib/deimos/schema_class/base.rb
deimos-ruby-1.23.1.pre.beta4 lib/deimos/schema_class/base.rb
deimos-ruby-1.23.1.pre.beta3 lib/deimos/schema_class/base.rb
deimos-ruby-1.23.1.pre.beta2 lib/deimos/schema_class/base.rb
deimos-ruby-1.23.1.pre.beta1 lib/deimos/schema_class/base.rb
deimos-ruby-1.23.0 lib/deimos/schema_class/base.rb
deimos-ruby-1.22.5 lib/deimos/schema_class/base.rb
deimos-ruby-1.22.4 lib/deimos/schema_class/base.rb
deimos-ruby-1.22.3 lib/deimos/schema_class/base.rb
deimos-ruby-1.22.2 lib/deimos/schema_class/base.rb
deimos-ruby-1.22.1 lib/deimos/schema_class/base.rb
deimos-ruby-1.22 lib/deimos/schema_class/base.rb
deimos-ruby-1.20.1 lib/deimos/schema_class/base.rb
deimos-ruby-1.20.0 lib/deimos/schema_class/base.rb