Module: AvroGen::AvroParser
- Defined in:
- lib/avro_gen/avro_parser.rb
Overview
Helper methods for interpreting Avro schema objects when generating classes.
Class Method Summary collapse
-
.field_type(avro_schema) ⇒ String
Converts Avro::Schema::NamedSchema's to String form for generated YARD docs.
-
.schema_base_class(schema) ⇒ Avro::Schema::NamedSchema
Returns the base type of this schema.
- .schema_classname(schema) ⇒ String
Class Method Details
.field_type(avro_schema) ⇒ String
Converts Avro::Schema::NamedSchema's to String form for generated YARD docs. Recursively handles the typing for Arrays, Maps and Unions.
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/avro_gen/avro_parser.rb', line 20 def field_type(avro_schema) case avro_schema.type_sym when :string, :boolean avro_schema.type_sym.to_s.titleize when :int, :long 'Integer' when :float, :double 'Float' when :record, :enum schema_classname(avro_schema) when :array arr_t = field_type(AvroGen::SchemaField.new('n/a', avro_schema.items).type) "Array<#{arr_t}>" when :map map_t = field_type(AvroGen::SchemaField.new('n/a', avro_schema.values).type) "Hash<String, #{map_t}>" when :union types = avro_schema.schemas.map do |t| field_type(AvroGen::SchemaField.new('n/a', t).type) end types.join(', ') when :null 'nil' end end |
.schema_base_class(schema) ⇒ Avro::Schema::NamedSchema
Returns the base type of this schema. Decodes Arrays, Maps and Unions
49 50 51 52 53 54 55 56 57 58 59 60 61 |
# File 'lib/avro_gen/avro_parser.rb', line 49 def schema_base_class(schema) case schema.type_sym when :array schema_base_class(schema.items) when :map schema_base_class(schema.values) when :union schema.schemas.map(&method(:schema_base_class)). reject { |s| s.type_sym == :null }.first else schema end end |
.schema_classname(schema) ⇒ String
12 13 14 |
# File 'lib/avro_gen/avro_parser.rb', line 12 def schema_classname(schema) schema.name.underscore.camelize.singularize end |