Generation of enum types for parameters and properties.

This commit is contained in:
Marcin Stefaniuk 2016-05-19 14:41:47 +02:00
parent be44df44a5
commit 8f2523c448
5 changed files with 36 additions and 9 deletions

View File

@ -84,8 +84,8 @@ public class NancyFXServerCodegen extends AbstractCSharpCodegen {
public void processOpts() { public void processOpts() {
super.processOpts(); super.processOpts();
apiPackage = packageName + ".Api"; apiPackage = packageName + ".Module";
modelPackage = packageName + ".Models"; modelPackage = packageName + ".Model";
supportingFiles.add(new SupportingFile("ApiException.mustache", sourceFolder(), "ApiException.cs")); supportingFiles.add(new SupportingFile("ApiException.mustache", sourceFolder(), "ApiException.cs"));
supportingFiles.add(new SupportingFile("RequestExtensions.mustache", sourceFolder(), "RequestExtensions.cs")); supportingFiles.add(new SupportingFile("RequestExtensions.mustache", sourceFolder(), "RequestExtensions.cs"));
@ -104,12 +104,12 @@ public class NancyFXServerCodegen extends AbstractCSharpCodegen {
@Override @Override
public String apiFileFolder() { public String apiFileFolder() {
return outputFolder + File.separator + sourceFolder() + File.separator + "Api"; return outputFolder + File.separator + sourceFolder() + File.separator + "Module";
} }
@Override @Override
public String modelFileFolder() { public String modelFileFolder() {
return outputFolder + File.separator + sourceFolder() + File.separator + "Models"; return outputFolder + File.separator + sourceFolder() + File.separator + "Model";
} }
@Override @Override
@ -128,4 +128,22 @@ public class NancyFXServerCodegen extends AbstractCSharpCodegen {
// Converts, for example, PUT to HttpPut for controller attributes // Converts, for example, PUT to HttpPut for controller attributes
operation.httpMethod = operation.httpMethod.substring(0, 1) + operation.httpMethod.substring(1).toLowerCase(); operation.httpMethod = operation.httpMethod.substring(0, 1) + operation.httpMethod.substring(1).toLowerCase();
} }
@Override
public String toEnumVarName(String name, String datatype) {
String enumName = sanitizeName(name);
enumName = enumName.replaceFirst("^_", "");
enumName = enumName.replaceFirst("_$", "");
enumName = camelize(enumName);
LOGGER.info("toEnumVarName = " + enumName);
if (enumName.matches("\\d.*")) { // starts with number
return "_" + enumName;
} else {
return enumName;
}
}
} }

View File

@ -1,6 +1,6 @@
using System; using System;
namespace {{packageName}}.Api namespace {{packageName}}.Module
{ {
/// <summary> /// <summary>
/// API Exception /// API Exception

View File

@ -2,10 +2,13 @@ using Nancy;
using Nancy.ModelBinding; using Nancy.ModelBinding;
using System.Collections.Generic; using System.Collections.Generic;
using Sharpility.Net; using Sharpility.Net;
using {{packageName}}.Models; using {{packageName}}.Model;
namespace {{packageName}}.Api namespace {{packageName}}.Module
{ {{#operations}} { {{#operations}}
{{#operation}}{{#allParams}}{{#isEnum}}
{{>innerEnum}}
{{/isEnum}}{{/allParams}}{{/operation}}
public sealed class {{classname}}Module : NancyModule public sealed class {{classname}}Module : NancyModule
{ {

View File

@ -0,0 +1 @@
public enum {{#datatypeWithEnum}}{{.}}{{/datatypeWithEnum}} { {{#allowableValues}}{{#enumVars}}{{{name}}}{{^-last}}, {{/-last}}{{/enumVars}}{{/allowableValues}} };

View File

@ -6,11 +6,13 @@ using Sharpility.Extensions;
{{#models}} {{#models}}
{{#model}} {{#model}}
namespace {{packageName}}.Models namespace {{packageName}}.Model
{ {
public sealed class {{classname}}: {{#parent}}{{{parent}}}, {{/parent}} IEquatable<{{classname}}> public sealed class {{classname}}: {{#parent}}{{{parent}}}, {{/parent}} IEquatable<{{classname}}>
{ {
{{#vars}} {{#vars}}{{#isEnum}}
{{>innerEnum}}
{{/isEnum}}{{/vars}}{{#vars}}
public {{{datatype}}} {{name}} { get; private set; } public {{{datatype}}} {{name}} { get; private set; }
{{/vars}} {{/vars}}
@ -64,6 +66,9 @@ namespace {{packageName}}.Models
return !Equals(left, right); return !Equals(left, right);
} }
/// <summary>
/// Builder of {{classname}} model
/// </summary>
public sealed class {{classname}}Builder public sealed class {{classname}}Builder
{ {
{{#vars}} {{#vars}}