forked from loafle/openapi-generator-original
fix(swift3): lowercase enum value before checking reserved words (#4357)
Signed-off-by: Vincent Giersch <vincent@giersch.fr>
This commit is contained in:
@@ -518,19 +518,20 @@ public class Swift3Codegen extends DefaultCodegen implements CodegenConfig {
|
||||
return camelize(WordUtils.capitalizeFully(getSymbolName(name).toUpperCase()), true);
|
||||
}
|
||||
|
||||
// Camelize only when we have a structure defined below
|
||||
Boolean camelized = false;
|
||||
if (name.matches("[A-Z][a-z0-9]+[a-zA-Z0-9]*")) {
|
||||
name = camelize(name, true);
|
||||
camelized = true;
|
||||
}
|
||||
|
||||
// Reserved Name
|
||||
if (isReservedWord(name)) {
|
||||
return escapeReservedWord(name);
|
||||
// Camelize only when we have a structure defined below
|
||||
Boolean camelized = false;
|
||||
if (name.matches("[A-Z][a-z0-9]+[a-zA-Z0-9]*")) {
|
||||
name = camelize(name, true);
|
||||
camelized = true;
|
||||
}
|
||||
|
||||
// Check for numerical conversions
|
||||
// Reserved Name
|
||||
String nameLowercase = StringUtils.lowerCase(name);
|
||||
if (isReservedWord(nameLowercase)) {
|
||||
return escapeReservedWord(nameLowercase);
|
||||
}
|
||||
|
||||
// Check for numerical conversions
|
||||
if ("Int".equals(datatype) || "Int32".equals(datatype) || "Int64".equals(datatype) ||
|
||||
"Float".equals(datatype) || "Double".equals(datatype)) {
|
||||
String varName = "number" + camelize(name);
|
||||
@@ -540,11 +541,11 @@ public class Swift3Codegen extends DefaultCodegen implements CodegenConfig {
|
||||
return varName;
|
||||
}
|
||||
|
||||
// If we have already camelized the word, don't progress
|
||||
// any further
|
||||
if (camelized) {
|
||||
return name;
|
||||
}
|
||||
// If we have already camelized the word, don't progress
|
||||
// any further
|
||||
if (camelized) {
|
||||
return name;
|
||||
}
|
||||
|
||||
char[] separators = {'-', '_', ' ', ':', '(', ')'};
|
||||
return camelize(WordUtils.capitalizeFully(StringUtils.lowerCase(name), separators).replaceAll("[-_ :\\(\\)]", ""), true);
|
||||
|
||||
@@ -13,14 +13,19 @@ public class Swift3CodegenTest {
|
||||
|
||||
Swift3Codegen swiftCodegen = new Swift3Codegen();
|
||||
|
||||
@Test
|
||||
public void testCapitalizedReservedWord() throws Exception {
|
||||
Assert.assertEquals(swiftCodegen.toEnumVarName("AS", null), "_as");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testReservedWord() throws Exception {
|
||||
Assert.assertEquals(swiftCodegen.toEnumVarName("Public", null), "_public");
|
||||
Assert.assertEquals(swiftCodegen.toEnumVarName("Public", null), "_public");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void shouldNotBreakNonReservedWord() throws Exception {
|
||||
Assert.assertEquals(swiftCodegen.toEnumVarName("Error", null), "error");
|
||||
Assert.assertEquals(swiftCodegen.toEnumVarName("Error", null), "error");
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -172,7 +172,7 @@ open class FakeAPI: APIBase {
|
||||
- parameter enumQueryDouble: (form) Query parameter enum test (double) (optional)
|
||||
- parameter completion: completion handler to receive the data and the error objects
|
||||
*/
|
||||
open class func testEnumParameters(enumFormStringArray: [String]? = nil, enumFormString: EnumFormString_testEnumParameters? = nil, enumQueryStringArray: [String]? = nil, enumQueryString: EnumQueryString_testEnumParameters? = nil, enumQueryInteger: Double? = nil, enumQueryDouble: Double? = nil, completion: @escaping ((_ error: Error?) -> Void)) {
|
||||
open class func testEnumParameters(enumFormStringArray: [String]? = nil, enumFormString: EnumFormString_testEnumParameters? = nil, enumQueryStringArray: [String]? = nil, enumQueryString: EnumQueryString_testEnumParameters? = nil, enumQueryInteger: Int32? = nil, enumQueryDouble: Double? = nil, completion: @escaping ((_ error: Error?) -> Void)) {
|
||||
testEnumParametersWithRequestBuilder(enumFormStringArray: enumFormStringArray, enumFormString: enumFormString, enumQueryStringArray: enumQueryStringArray, enumQueryString: enumQueryString, enumQueryInteger: enumQueryInteger, enumQueryDouble: enumQueryDouble).execute { (response, error) -> Void in
|
||||
completion(error);
|
||||
}
|
||||
@@ -192,14 +192,14 @@ open class FakeAPI: APIBase {
|
||||
|
||||
- returns: RequestBuilder<Void>
|
||||
*/
|
||||
open class func testEnumParametersWithRequestBuilder(enumFormStringArray: [String]? = nil, enumFormString: EnumFormString_testEnumParameters? = nil, enumQueryStringArray: [String]? = nil, enumQueryString: EnumQueryString_testEnumParameters? = nil, enumQueryInteger: Double? = nil, enumQueryDouble: Double? = nil) -> RequestBuilder<Void> {
|
||||
open class func testEnumParametersWithRequestBuilder(enumFormStringArray: [String]? = nil, enumFormString: EnumFormString_testEnumParameters? = nil, enumQueryStringArray: [String]? = nil, enumQueryString: EnumQueryString_testEnumParameters? = nil, enumQueryInteger: Int32? = nil, enumQueryDouble: Double? = nil) -> RequestBuilder<Void> {
|
||||
let path = "/fake"
|
||||
let URLString = PetstoreClientAPI.basePath + path
|
||||
|
||||
let nillableParameters: [String:Any?] = [
|
||||
"enum_query_string_array": enumQueryStringArray,
|
||||
"enum_query_string": enumQueryString?.rawValue,
|
||||
"enum_query_integer": enumQueryInteger
|
||||
"enum_query_integer": enumQueryInteger?.encodeToJSON()
|
||||
]
|
||||
|
||||
let parameters = APIHelper.rejectNil(nillableParameters)
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
//
|
||||
// ClassModel.swift
|
||||
//
|
||||
// Generated by swagger-codegen
|
||||
// https://github.com/swagger-api/swagger-codegen
|
||||
//
|
||||
|
||||
import Foundation
|
||||
|
||||
|
||||
/** Model for testing model with \"_class\" property */
|
||||
open class ClassModel: JSONEncodable {
|
||||
public var _class: String?
|
||||
|
||||
public init() {}
|
||||
|
||||
// MARK: JSONEncodable
|
||||
open func encodeToJSON() -> Any {
|
||||
var nillableDictionary = [String:Any?]()
|
||||
nillableDictionary["_class"] = self._class
|
||||
let dictionary: [String:Any] = APIHelper.rejectNil(nillableDictionary) ?? [:]
|
||||
return dictionary
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
//
|
||||
// OuterEnum.swift
|
||||
//
|
||||
// Generated by swagger-codegen
|
||||
// https://github.com/swagger-api/swagger-codegen
|
||||
//
|
||||
|
||||
import Foundation
|
||||
|
||||
|
||||
public enum OuterEnum: String {
|
||||
case placed = "placed"
|
||||
case approved = "approved"
|
||||
case delivered = "delivered"
|
||||
|
||||
func encodeToJSON() -> Any { return self.rawValue }
|
||||
}
|
||||
Reference in New Issue
Block a user