{%- macro code(text) -%}
{{ text }}
{%- endmacro -%}
{% macro avro_field(schema, display_record_header=True) %}
{# PRIMITIVE TYPES #}
{% if schema in ('null', 'boolean', 'int', 'long', 'float', 'double', 'bytes', 'string', 'urn', 'uri') %}
{{ code(schema) }}
{% elif schema is instanceof('') %}
{{ avro_link(schema) }}
{% elif schema is instanceof([]) %}
Union:
{% for s in schema %}{{ avro_field(s) }}{% if not loop.last %},
{% endif %}{% endfor %}
{% elif schema.type == 'enum' %}
Enum {{ code(schema.name) }}:
{% for sym in schema.symbols %}{{ code(sym) }}{% if not loop.last %},
{% endif %}{% endfor %}
{% if schema.doc %}{{ schema.doc }}
{% endif %}
{% elif schema.type == 'array' %}
Array: {{ avro_field(schema['items']) }}
{% if schema.doc %}{{ schema.doc }}
{% endif %}
{% elif schema.type == 'map' %}
Map: {{ code('string') }} to {{ avro_field(schema.values) }}
{% if schema.doc %}{{ schema.doc }}
{% endif %}
{% elif schema.type == 'record' %}
{% if display_record_header %}
Record: {{ code(schema.name) }}
{% if schema.doc %}{{ schema.doc|join|safe }}
{% endif %}
{% endif %}
Name |
Type |
Default |
Notes |
{% for field in schema.fields %}
{{ field.name }} |
{{ avro_field(field if field.type in ('enum', 'array', 'map', 'record') else field.type) }} |
{{ code(field.default) }} |
{% if not field.has_key('default') %}REQUIRED {% endif %}{{ field.doc|join|safe }} |
{% endfor %}
{% endif %}
{% endmacro %}
{% macro avro_link(entity_name) %}
{{ code(entity_name) }}
{% endmacro %}
{% macro display_links(links) %}
Rel |
Notes |
{% for link in links %}
{{ link.rel }} |
{{ link.doc|join|safe }} |
{% endfor %}
{% endmacro %}