From d5cb70f03e46700dc13fdce6bf6a4851ea6b53df Mon Sep 17 00:00:00 2001 From: rcilia Date: Sat, 18 Mar 2017 05:29:52 -0400 Subject: [PATCH] Swift3 enum: number variable names fix (#5060) * Swift3 enum: number variable names fix Swift3 generator: added 'number' prefix to enum variable names that start with a number * Fixed Swift3 enum variable names starting with number (prefixed with '_') and added test cases * Swift3 enum var names: made sure to keep the next word after a number in lower case --- .../java/io/swagger/codegen/languages/Swift3Codegen.java | 9 +++++++++ .../io/swagger/codegen/swift3/Swift3CodegenTest.java | 7 +++++++ 2 files changed, 16 insertions(+) diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/Swift3Codegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/Swift3Codegen.java index 248bfb24098..6a2ccf176a1 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/Swift3Codegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/Swift3Codegen.java @@ -521,6 +521,15 @@ public class Swift3Codegen extends DefaultCodegen implements CodegenConfig { return "empty"; } + Pattern startWithNumberPattern = Pattern.compile("^\\d+"); + Matcher startWithNumberMatcher = startWithNumberPattern.matcher(name); + if (startWithNumberMatcher.find()) { + String startingNumbers = startWithNumberMatcher.group(0); + String nameWithoutStartingNumbers = name.substring(startingNumbers.length()); + + return "_" + startingNumbers + camelize(nameWithoutStartingNumbers, true); + } + // for symbol, e.g. $, # if (getSymbolName(name) != null) { return camelize(WordUtils.capitalizeFully(getSymbolName(name).toUpperCase()), true); diff --git a/modules/swagger-codegen/src/test/java/io/swagger/codegen/swift3/Swift3CodegenTest.java b/modules/swagger-codegen/src/test/java/io/swagger/codegen/swift3/Swift3CodegenTest.java index 6fd6afa66f2..09c86e28bbd 100644 --- a/modules/swagger-codegen/src/test/java/io/swagger/codegen/swift3/Swift3CodegenTest.java +++ b/modules/swagger-codegen/src/test/java/io/swagger/codegen/swift3/Swift3CodegenTest.java @@ -63,6 +63,13 @@ public class Swift3CodegenTest { Assert.assertEquals(swiftCodegen.toEnumVarName("entry_name", null), "entryName"); } + @Test + public void testStartingWithNumber() throws Exception { + Assert.assertEquals(swiftCodegen.toEnumVarName("123EntryName", null), "_123entryName"); + Assert.assertEquals(swiftCodegen.toEnumVarName("123Entry_name", null), "_123entryName"); + Assert.assertEquals(swiftCodegen.toEnumVarName("123EntryName123", null), "_123entryName123"); + } + @Test(description = "returns NSData when response format is binary") public void binaryDataTest() { final Swagger model = new SwaggerParser().read("src/test/resources/2_0/binaryDataTest.json");