Sha256: 2096180a855ca9ce7eaea375947443824be2865816e64c974e59f418474fcbb8
Contents?: true
Size: 1.92 KB
Versions: 7
Compression:
Stored size: 1.92 KB
Contents
# frozen_string_literal: true module Avro module Builder module Types # This concern is used by types that can be defined at the top-level, # i.e. outside a field. module TopLevel def self.included(base) base.add_option_name :_name end # Provide a way to set the name internally for a top-level type. def _name=(value) @name = value end private :_name= # Namespace is settable as a top-level option attr_writer :namespace module TopLevelErrorHandling # Options disallowed for top-level types. def type_name=(_value) name_attribute_error! end def type_namespace=(_value) namespace_instead_of_type_namespace_error! end private def type_aliases=(_value) raise AttributeError .new("'aliases' must be used instead of 'type_aliases'") end alias_method :type_aliases, :type_aliases= def name_attribute_error! raise AttributeError .new("name must be specified as the first argument for #{avro_type_name}") end alias_method :type_name_instead_of_name_error!, :name_attribute_error! private :type_name_instead_of_name_error! def namespace_attribute_error! raise AttributeError .new("'namespace' must be specified as an option, not via a block") end alias_method :type_namespace_instead_of_namespace_error!, :namespace_attribute_error! private :type_namespace_instead_of_namespace_error! def namespace_instead_of_type_namespace_error! raise AttributeError .new("'namespace' must be specified as an option instead of 'type_namespace'") end end include TopLevelErrorHandling end end end end
Version data entries
7 entries across 7 versions & 1 rubygems