protify 0.1.4

A Rust-first protobuf framework to generate packages from rust code, with validation included
Documentation
{% 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 +%}
}