powershell/resources/templates/enum.ejs (71 lines of code) (raw):
<%- project.commentHeader %>
namespace <%- project.namespace %>.Models
{
/// <summary>
/// Defines values for <%-model.language.default.name%>.
/// </summary>
<%#ToDo need to figure out when !Model.OldModelAsString is applied%>
<%#ToDo GetObsoleteAttribute%>
<% if (!model.extensions['x-ms-model-as-string']) { -%>
[Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))]
public enum <%-model.language.default.name%>
{
<% var last = model.choices[model.choices.length - 1]-%>
<% model.choices.forEach(function(item) {
if (item.language.default.description) {
-%>
/// <summary>
/// <%=project.helper.wrapComments(' ', '/// ', item.language.default.description)%>
/// </summary>
<% } -%>
[System.Runtime.Serialization.EnumMember(Value = "<%-item.value%>")]
<% if (item == last) {-%>
<%-item.language.default.name.replace(/\//g, '-')%>
<% } else {-%>
<%-item.language.default.name.replace(/\//g, '-')%>,
<% }-%>
<% });-%>
}
internal static class <%-model.language.default.name%>EnumExtension
{
internal static string ToSerializedValue(this <%-model.language.default.name%>? value)
{
return value == null ? null : ((<%-model.language.default.name%>)value).ToSerializedValue();
}
internal static string ToSerializedValue(this <%-model.language.default.name%> value)
{
switch( value )
{
<% for (var i = 0; i < model.choices.length; i++) {-%>
case <%-model.language.default.name%>.<%-model.choices[i].language.default.name.replace(/\//g, '-')%>:
return "<%-model.choices[i].value%>";
<% }-%>
}
return null;
}
internal static <%-model.language.default.name%>? Parse<%-model.language.default.name%>(this string value)
{
switch( value )
{
<% for (var i = 0; i < model.choices.length; i++) {-%>
case "<%-model.choices[i].value%>":
return <%-model.language.default.name%>.<%-model.choices[i].language.default.name.replace(/\//g, '-')%>;
<% }-%>
}
return null;
}
}
<%} else {-%>
public static class <%-model.language.default.name%>
{
<%model.choices.forEach(function(choice){-%>
<%if(choice.language.default.description){-%>
/// <summary>
/// <%=project.helper.wrapComments(' ', '/// ', choice.language.default.description)%>
/// </summary>
<%}-%>
public const string <%-project.helper.GetValidCsharpName(choice.language.default.name)%> = "<%-choice.value%>";
<%});-%>
}
<% } -%>
}