Sha256: 823eb1494f2a2e093bc07b70e7de755efebb62886607bdb151312371b1a04742
Contents?: true
Size: 1.07 KB
Versions: 7
Compression:
Stored size: 1.07 KB
Contents
# frozen_string_literal: true module Avro module Builder module Types # This module provides common functionality for non-primitive types # that do not require a name to be created. module ComplexType def self.included(base) base.extend ClassMethods end # Override initialize so that type name is not required def initialize(cache:, field: nil) super(self.class.avro_type_name, cache: cache, field: field) end def namespace field.namespace end def serialize(_reference_state, overrides: {}) { type: avro_type_name, logicalType: logical_type }.merge(overrides).reject { |_, v| v.nil? } end def to_h(reference_state) serialize(reference_state) end module ClassMethods # Infer avro_type_name based on class def avro_type_name @avro_type_name ||= name.split('::').last.sub('Type', '').downcase.to_sym end end end end end end
Version data entries
7 entries across 7 versions & 1 rubygems