From 593106fcfd0350e263e87d4db0a0f2a2207840eb Mon Sep 17 00:00:00 2001 From: shortcuts Date: Fri, 25 Oct 2024 13:00:15 +0200 Subject: [PATCH 1/4] fix(specs): support synonyms type in camel case --- specs/search/paths/synonyms/common/parameters.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/specs/search/paths/synonyms/common/parameters.yml b/specs/search/paths/synonyms/common/parameters.yml index 912b4b70de2..63e5933cd54 100644 --- a/specs/search/paths/synonyms/common/parameters.yml +++ b/specs/search/paths/synonyms/common/parameters.yml @@ -30,6 +30,9 @@ SynonymType: - altcorrection1 - altcorrection2 - placeholder + - oneWaySynonym + - altCorrection1 + - altCorrection2 ObjectID: name: objectID From 14b209d6d8c4a0ae71774c151cfd047851cbd7ab Mon Sep 17 00:00:00 2001 From: shortcuts Date: Fri, 25 Oct 2024 13:04:21 +0200 Subject: [PATCH 2/4] trigger From fc988e136979021188b432e467309e3047b40c6a Mon Sep 17 00:00:00 2001 From: shortcuts Date: Fri, 25 Oct 2024 14:42:20 +0200 Subject: [PATCH 3/4] fix: weird enum names --- .../algolia/codegen/AlgoliaJavaGenerator.java | 3 +-- .../codegen/AlgoliaPythonGenerator.java | 24 +++++++++++++++++++ .../com/algolia/codegen/utils/Helpers.java | 5 ++++ 3 files changed, 30 insertions(+), 2 deletions(-) diff --git a/generators/src/main/java/com/algolia/codegen/AlgoliaJavaGenerator.java b/generators/src/main/java/com/algolia/codegen/AlgoliaJavaGenerator.java index 8337877152a..82d4d2fc17d 100644 --- a/generators/src/main/java/com/algolia/codegen/AlgoliaJavaGenerator.java +++ b/generators/src/main/java/com/algolia/codegen/AlgoliaJavaGenerator.java @@ -131,8 +131,7 @@ public static String toEnum(String value) { } if (!value.matches("[A-Z0-9_]+")) { - // convert camelCase77String to CAMEL_CASE_77_STRING - return value.replaceAll("-", "_").replaceAll("(.+?)([A-Z]|[0-9])", "$1_$2").toUpperCase(Locale.ROOT); + return Helpers.toScreamingSnakeCase(value); } return value; diff --git a/generators/src/main/java/com/algolia/codegen/AlgoliaPythonGenerator.java b/generators/src/main/java/com/algolia/codegen/AlgoliaPythonGenerator.java index 17fd509bd0f..037c4bc8782 100644 --- a/generators/src/main/java/com/algolia/codegen/AlgoliaPythonGenerator.java +++ b/generators/src/main/java/com/algolia/codegen/AlgoliaPythonGenerator.java @@ -161,4 +161,28 @@ public String toEnumDefaultValue(CodegenProperty property, String value) { // always default to None in the client, to let the server handle the default value. return "None"; } + + public static String toEnum(String value) { + // we only convert the full lowercase enums as they have a fallback to camelCase enums with the + // same name so no BC is introduced + if (!value.toLowerCase().equals(value)) { + // special edge case for onewaysynonym because there's no way to distinguish the two at the + // generation level + if (value.equals("'oneWaySynonym'")) { + return Helpers.toSnakeCase(value); + } + return value; + } + return Helpers.toScreamingSnakeCase(value); + } + + @Override + public String toEnumVariableName(String value, String datatype) { + return super.toEnumVariableName(toEnum(value), datatype); + } + + @Override + public String toEnumVarName(String value, String datatype) { + return super.toEnumVarName(toEnum(value), datatype); + } } diff --git a/generators/src/main/java/com/algolia/codegen/utils/Helpers.java b/generators/src/main/java/com/algolia/codegen/utils/Helpers.java index 4296d2dad54..278b7fcf1e1 100644 --- a/generators/src/main/java/com/algolia/codegen/utils/Helpers.java +++ b/generators/src/main/java/com/algolia/codegen/utils/Helpers.java @@ -41,6 +41,11 @@ public static String camelize(String kebabStr) { return camel; } + // convert camelCase77String to CAMEL_CASE_77_STRING + public static String toScreamingSnakeCase(String camelCase) { + return camelCase.replaceAll("-", "_").replaceAll("(.+?)([A-Z]|[0-9])", "$1_$2").toUpperCase(Locale.ROOT); + } + /** * Will add the boolean `vendorExtensions.x-is-custom-request` to operations if they should not * escape '/' in the path variable From d994ac660be7d4b005203859091c572ba389d281 Mon Sep 17 00:00:00 2001 From: shortcuts Date: Mon, 28 Oct 2024 11:41:10 +0100 Subject: [PATCH 4/4] fix: cleaner regex output --- .../src/main/java/com/algolia/codegen/utils/Helpers.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/generators/src/main/java/com/algolia/codegen/utils/Helpers.java b/generators/src/main/java/com/algolia/codegen/utils/Helpers.java index 278b7fcf1e1..5db94c9bc32 100644 --- a/generators/src/main/java/com/algolia/codegen/utils/Helpers.java +++ b/generators/src/main/java/com/algolia/codegen/utils/Helpers.java @@ -43,7 +43,12 @@ public static String camelize(String kebabStr) { // convert camelCase77String to CAMEL_CASE_77_STRING public static String toScreamingSnakeCase(String camelCase) { - return camelCase.replaceAll("-", "_").replaceAll("(.+?)([A-Z]|[0-9])", "$1_$2").toUpperCase(Locale.ROOT); + return camelCase + .replaceAll("-", "_") + .replaceAll("/", "_") + .replaceAll("(?<=.)([A-Z]+|\\d+)", "_$1") + .replaceAll("__", "_") + .toUpperCase(Locale.ROOT); } /**