Class: Tros::Schema::NamedSchema

Inherits:
Tros::Schema show all
Defined in:
lib/tros/schema.rb

Direct Known Subclasses

EnumSchema, FixedSchema, RecordSchema

Constant Summary

Constants inherited from Tros::Schema

INT_MAX_VALUE, INT_MIN_VALUE, LONG_MAX_VALUE, LONG_MIN_VALUE, NAMED_TYPES, NAMED_TYPES_SYM, PRIMITIVE_TYPES, PRIMITIVE_TYPES_SYM, VALID_TYPES, VALID_TYPES_SYM

Instance Attribute Summary collapse

Attributes inherited from Tros::Schema

#type_sym

Instance Method Summary collapse

Methods inherited from Tros::Schema

#==, #hash, parse, real_parse, #subparse, #to_s, #type, validate, validate_strictly

Constructor Details

#initialize(type, name, namespace = nil, names = nil) ⇒ NamedSchema

Returns a new instance of NamedSchema.



184
185
186
187
188
# File 'lib/tros/schema.rb', line 184

def initialize(type, name, namespace=nil, names=nil)
  super(type)
  @name, @namespace = Name.extract_namespace(name, namespace)
  names = Name.add_name(names, self)
end

Instance Attribute Details

#nameObject (readonly)

Returns the value of attribute name.



183
184
185
# File 'lib/tros/schema.rb', line 183

def name
  @name
end

#namespaceObject (readonly)

Returns the value of attribute namespace.



183
184
185
# File 'lib/tros/schema.rb', line 183

def namespace
  @namespace
end

Instance Method Details

#fullnameObject



200
201
202
# File 'lib/tros/schema.rb', line 200

def fullname
  @fullname ||= Name.make_fullname(@name, @namespace)
end

#to_avro(names = Set.new) ⇒ Object



190
191
192
193
194
195
196
197
198
# File 'lib/tros/schema.rb', line 190

def to_avro(names=Set.new)
  if @name
    return fullname if names.include?(fullname)
    names << fullname
  end
  props = {'name' => @name}
  props.merge!('namespace' => @namespace) if @namespace
  super.merge props
end