-
Notifications
You must be signed in to change notification settings - Fork 16
/
Copy pathmodelInnerEnum.mustache
99 lines (91 loc) · 4.54 KB
/
modelInnerEnum.mustache
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
{{^isContainer}}
/// <summary>
/// {{description}}{{^description}}Defines {{{name}}}{{/description}}
/// </summary>
{{#description}}
/// <value>{{.}}</value>
{{/description}}
{{#isString}}
{{^useGenericHost}}
[JsonConverter(typeof(StringEnumConverter))]
{{/useGenericHost}}
{{/isString}}
{{>visibility}} enum {{datatypeWithEnum}}{{^datatypeWithEnum}}{{classname}}{{/datatypeWithEnum}}{{#vendorExtensions.x-enum-byte}}: byte{{/vendorExtensions.x-enum-byte}}
{
{{#allowableValues}}
{{#enumVars}}
/// <summary>
/// Enum {{name}} for value: {{value}}
/// </summary>
{{^useGenericHost}}
{{#isString}}
[EnumMember(Value = "{{{value}}}")]
{{/isString}}
{{/useGenericHost}}
{{name}}{{^isString}} = {{{value}}}{{/isString}}{{#isString}}{{^vendorExtensions.x-zero-based-enum}} = {{-index}}{{/vendorExtensions.x-zero-based-enum}}{{/isString}}{{^-last}},{{/-last}}
{{^-last}}
{{/-last}}
{{/enumVars}}
{{/allowableValues}}
}
{{#useGenericHost}}
/// <summary>
/// Returns a <see cref="{{datatypeWithEnum}}{{^datatypeWithEnum}}{{classname}}{{/datatypeWithEnum}}"/>
/// </summary>
/// <param name="value"></param>
/// <returns></returns>
/// <exception cref="NotImplementedException"></exception>
public static {{datatypeWithEnum}}{{^datatypeWithEnum}}{{classname}}{{/datatypeWithEnum}} {{datatypeWithEnum}}{{^datatypeWithEnum}}{{classname}}{{/datatypeWithEnum}}FromString(string value)
{
{{#allowableValues}}
{{#enumVars}}
if (value.Equals({{^isString}}({{{value}}}).ToString(){{/isString}}{{#isString}}"{{{value}}}"{{/isString}}))
return {{datatypeWithEnum}}{{^datatypeWithEnum}}{{classname}}{{/datatypeWithEnum}}.{{name}};
{{/enumVars}}
{{/allowableValues}}
throw new NotImplementedException($"Could not convert value to type {{datatypeWithEnum}}{{^datatypeWithEnum}}{{classname}}{{/datatypeWithEnum}}: '{value}'");
}
/// <summary>
/// Returns a <see cref="{{datatypeWithEnum}}{{^datatypeWithEnum}}{{classname}}{{/datatypeWithEnum}}"/>
/// </summary>
/// <param name="value"></param>
/// <returns></returns>
public static {{datatypeWithEnum}}{{^datatypeWithEnum}}{{classname}}{{/datatypeWithEnum}}? {{datatypeWithEnum}}{{^datatypeWithEnum}}{{classname}}{{/datatypeWithEnum}}FromStringOrDefault(string value)
{
{{#allowableValues}}
{{#enumVars}}
if (value.Equals({{^isString}}({{{value}}}).ToString(){{/isString}}{{#isString}}"{{{value}}}"{{/isString}}))
return {{datatypeWithEnum}}{{^datatypeWithEnum}}{{classname}}{{/datatypeWithEnum}}.{{name}};
{{/enumVars}}
{{/allowableValues}}
return null;
}
/// <summary>
/// Converts the <see cref="{{datatypeWithEnum}}{{^datatypeWithEnum}}{{classname}}{{/datatypeWithEnum}}"/> to the json value
/// </summary>
/// <param name="value"></param>
/// <returns></returns>
{{#isString}}
/// <exception cref="NotImplementedException"></exception>
{{/isString}}
public static {{>EnumValueDataType}}{{#lambda.first}}{{#nrt}}{{#isString}}{{#isNullable}}{{nrt?}} {{^nrt}}{{#vendorExtensions.x-is-value-type}}? {{/vendorExtensions.x-is-value-type}}{{/nrt}}{{/isNullable}}{{/isString}}{{/nrt}}{{/lambda.first}} {{datatypeWithEnum}}ToJsonValue({{datatypeWithEnum}}{{^datatypeWithEnum}}{{classname}}{{/datatypeWithEnum}}{{#isString}}{{>NullConditionalProperty}}{{/isString}} value)
{
{{^isString}}
return ({{>EnumValueDataType}}) value;
{{/isString}}
{{#isString}}
{{#isNullable}}
if (value == null)
return null;
{{/isNullable}}
{{#allowableValues}}
{{#enumVars}}
if (value == {{datatypeWithEnum}}{{^datatypeWithEnum}}{{classname}}{{/datatypeWithEnum}}.{{name}})
return {{^isNumeric}}"{{/isNumeric}}{{{value}}}{{^isNumeric}}"{{/isNumeric}};
{{/enumVars}}
{{/allowableValues}}
throw new NotImplementedException($"Value could not be handled: '{value}'");
{{/isString}}
}
{{/useGenericHost}}
{{/isContainer}}