{% import "render_macros.j2" as macros %}
message {{+ short_name +}} {
{% if let Some(names) = render_reserved_names() ~%}
{{+ names ~}}
{%~ endif %}
{%~ if let Some(numbers) = render_reserved_numbers() ~%}
{{+ numbers ~}}
{%~ endif %}
{%~ for option in options_with_validators() +%}
option {{+ option.name +}} = {{+ option.value | indent(2) }};
{% endfor +%}
{% call macros::empty_line_if(has_options()) %}{% endcall %}
{% for enum_ in enums %}
{%+ filter indent(2) ~%}
{{+ enum_.render()? +}}
{%~ endfilter %}
{%~ endfor %}
{% for nested_msg in messages %}
{%+ filter indent(2) ~%}
{{+ nested_msg.render()? +}}
{%+ endfilter %}
{% endfor %}
{% for entry in entries %}
{% match entry %}
{%~ when MessageEntry::Oneof(oneof) +%}
oneof {{+ oneof.name +}} {
{% filter indent(4) %}
{% for option in oneof.options_with_validators() ~%}
option {{+ option.name +}} = {{+ option.value }};
{% endfor %}
{% endfilter ~%}
{% call macros::empty_line_if(oneof.has_options()) %}{% endcall %}
{%~ for field in oneof.fields ~%}
{%+ call macros::render_field(field, package, 4) %}{% endcall %}
{% endfor +%}
}
{% when MessageEntry::Field(field) ~%}
{%+ call macros::render_field(field, package, 2) %}{% endcall %}
{% endmatch %}
{% endfor +%}
}