{%- 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 %} {% for field in schema.fields %} {% endfor %}
Name Type Default Notes
{{ 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 }}
{% endif %} {% endmacro %} {% macro avro_link(entity_name) %} {{ code(entity_name) }} {% endmacro %} {% macro display_links(links) %} {% for link in links %} {% endfor %}
Rel Notes
{{ link.rel }} {{ link.doc|join|safe }}
{% endmacro %}