From 6247dd0cdef6a978ae75f76caf4346595e077737 Mon Sep 17 00:00:00 2001 From: Tomek Cejner Date: Sun, 25 Oct 2015 00:04:25 +0200 Subject: [PATCH] Swift enum names capitalization follows Swift convention. --- .../codegen/languages/SwiftCodegen.java | 13 +++++- .../codegen/languages/SwiftCodegenTest.java | 45 +++++++++++++++++++ 2 files changed, 57 insertions(+), 1 deletion(-) create mode 100644 modules/swagger-codegen/src/test/java/io/swagger/codegen/languages/SwiftCodegenTest.java diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/SwiftCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/SwiftCodegen.java index 9bb1dfd61d47..db0b0fc24eba 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/SwiftCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/SwiftCodegen.java @@ -15,6 +15,7 @@ import io.swagger.models.properties.MapProperty; import io.swagger.models.properties.Property; import org.apache.commons.lang.ArrayUtils; import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang.WordUtils; import javax.annotation.Nullable; import java.util.*; @@ -236,7 +237,7 @@ public class SwiftCodegen extends DefaultCodegen implements CodegenConfig { List values = (List) codegenProperty.allowableValues.get("values"); for (String value : values) { Map map = new HashMap(); - map.put("enum", StringUtils.capitalize(value)); + map.put("enum", toSwiftyEnumName(value)); map.put("raw", value); swiftEnums.add(map); } @@ -250,6 +251,16 @@ public class SwiftCodegen extends DefaultCodegen implements CodegenConfig { return codegenProperty; } + public String toSwiftyEnumName(String value) { + // Prevent from breaking properly cased identifier + if (value.matches("[A-Z][a-z0-9]+[a-zA-Z0-9]*")) { + return value; + } + char[] separators = {'-', '_', ' '}; + return WordUtils.capitalizeFully(StringUtils.lowerCase(value), separators).replaceAll("[-_ ]", ""); + } + + @Override public String toApiName(String name) { if(name.length() == 0) diff --git a/modules/swagger-codegen/src/test/java/io/swagger/codegen/languages/SwiftCodegenTest.java b/modules/swagger-codegen/src/test/java/io/swagger/codegen/languages/SwiftCodegenTest.java new file mode 100644 index 000000000000..acede31f7361 --- /dev/null +++ b/modules/swagger-codegen/src/test/java/io/swagger/codegen/languages/SwiftCodegenTest.java @@ -0,0 +1,45 @@ +package io.swagger.codegen.languages; + +import org.testng.Assert; +import org.testng.annotations.Test; + +public class SwiftCodegenTest { + + SwiftCodegen swiftCodegen = new SwiftCodegen(); + + @Test + public void shouldNotBreakCorrectName() throws Exception { + Assert.assertEquals(swiftCodegen.toSwiftyEnumName("EntryName"), "EntryName"); + } + + @Test + public void testSingleWordAllCaps() throws Exception { + Assert.assertEquals(swiftCodegen.toSwiftyEnumName("VALUE"), "Value"); + } + + @Test + public void testSingleWordLowercase() throws Exception { + Assert.assertEquals(swiftCodegen.toSwiftyEnumName("value"), "Value"); + } + + @Test + public void testCapitalsWithUnderscore() throws Exception { + Assert.assertEquals(swiftCodegen.toSwiftyEnumName("ENTRY_NAME"), "EntryName"); + } + + @Test + public void testCapitalsWithDash() throws Exception { + Assert.assertEquals(swiftCodegen.toSwiftyEnumName("ENTRY-NAME"), "EntryName"); + } + + @Test + public void testCapitalsWithSpace() throws Exception { + Assert.assertEquals(swiftCodegen.toSwiftyEnumName("ENTRY NAME"), "EntryName"); + } + + @Test + public void testLowercaseWithUnderscore() throws Exception { + Assert.assertEquals(swiftCodegen.toSwiftyEnumName("entry_name"), "EntryName"); + } + +} \ No newline at end of file