| {%- macro enum_def(enum_name, enum) -%} |
| {{enum_name}} = {}; |
| {%- set prev_enum = 0 %} |
| {%- for field in enum.fields %} |
| {%- if field.value %} |
| {{enum_name}}.{{field.name}} = {{field.value|expression_to_text}}; |
| {%- elif loop.first %} |
| {{enum_name}}.{{field.name}} = 0; |
| {%- else %} |
| {{enum_name}}.{{field.name}} = {{enum_name}}.{{enum.fields[loop.index0 - 1].name}} + 1; |
| {%- endif %} |
| {%- endfor %} |
| |
| {{enum_name}}.isKnownEnumValue = function(value) { |
| {%- if enum.fields %} |
| switch (value) { |
| {%- for enum_field in enum.fields|groupby('numeric_value') %} |
| case {{enum_field[0]}}: |
| {%- endfor %} |
| return true; |
| } |
| {%- endif %} |
| return false; |
| }; |
| |
| {{enum_name}}.validate = function(enumValue) { |
| var isExtensible = {% if enum.extensible %}true{% else %}false{% endif %}; |
| if (isExtensible || this.isKnownEnumValue(enumValue)) |
| return validator.validationError.NONE; |
| |
| return validator.validationError.UNKNOWN_ENUM_VALUE; |
| }; |
| {%- endmacro %} |