Sha256: 9e633db9dfb7e96b7102e6fd50132b6408a4a3b7faa889f83a5ac214d4adaa83
Contents?: true
Size: 1.11 KB
Versions: 7
Compression:
Stored size: 1.11 KB
Contents
# frozen_string_literal: true module Avro module Builder module Types class UnionType < Type include Avro::Builder::Types::ComplexType include Avro::Builder::Types::TypeReferencer NULL_TYPE = 'null' dsl_attribute :types do |*types| if !types.empty? @types = types.flatten.map { |type| create_builtin_or_lookup_type(type) } else @types end end # Unions are serialized as an array of types def serialize(referenced_state) types.map { |type| type.serialize(referenced_state) } end # serialized will be an array of types. If the array includes # :null then it is moved to the beginning of the array. def self.union_with_null(serialized) serialized.reject { |type| type.to_s == NULL_TYPE }.unshift(:null) end def validate! validate_required_attribute!(:types) end def logical_type=(value) raise AttributeError.new("Logical types are not supported for unions: #{value}.") end end end end end
Version data entries
7 entries across 7 versions & 1 rubygems