Skip to content

Commit d461793

Browse files
committed
DRY regex patterns
1 parent 4f76b5b commit d461793

20 files changed

Lines changed: 53 additions & 59 deletions

modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -253,8 +253,6 @@ apiTemplateFiles are for API outputs only (controllers/handlers).
253253
protected static final Pattern TRAILING_DIGITS = Pattern.compile("\\d+\\z");
254254
/** Matches one or more non-word characters; used in {@link #toEnumVarName} and {@link #sanitizeName}. */
255255
protected static final Pattern NON_WORD_PLUS = Pattern.compile("\\W+");
256-
/** Matches a string that starts with a digit; used in {@link #toEnumVarName}. */
257-
protected static final Pattern LEADING_DIGIT = Pattern.compile("\\d.*");
258256
protected static final Pattern LEADING_UNDERSCORES = Pattern.compile("^_*");
259257

260258
protected static final Pattern WHITESPACE = Pattern.compile("\\s+");
@@ -265,6 +263,8 @@ apiTemplateFiles are for API outputs only (controllers/handlers).
265263

266264
/** Matches a string that starts with a digit (anchored); used across language generators. */
267265
protected static final Pattern STARTS_WITH_DIGIT = Pattern.compile("^\\d.*");
266+
267+
protected static final Pattern LEADING_SINGLE_UNDERSCORE = Pattern.compile("^_");
268268
/** Matches a string consisting entirely of uppercase letters and underscores. */
269269
protected static final Pattern ALL_UPPER_UNDERSCORE = Pattern.compile("^[A-Z_]*$");
270270
/** Matches tab, newline, or carriage-return; used in {@link #escapeText}. */
@@ -974,12 +974,12 @@ public String toEnumValue(String value, String datatype) {
974974
* @return the sanitized variable name for enum
975975
*/
976976
public String toEnumVarName(String value, String datatype) {
977-
if (value.length() == 0) {
977+
if (value.isEmpty()) {
978978
return "EMPTY";
979979
}
980980

981981
String var = NON_WORD_PLUS.matcher(value).replaceAll("_").toUpperCase(Locale.ROOT);
982-
if (LEADING_DIGIT.matcher(var).lookingAt()) {
982+
if (STARTS_WITH_DIGIT.matcher(var).matches()) {
983983
var = "_" + var;
984984
}
985985

@@ -998,8 +998,8 @@ public boolean specVersionGreaterThanOrEqualTo310(OpenAPI openAPI) {
998998
} else {
999999
originalSpecVersion = openAPI.getOpenapi();
10001000
}
1001-
Integer specMajorVersion = Integer.parseInt(originalSpecVersion.substring(0, 1));
1002-
Integer specMinorVersion = Integer.parseInt(originalSpecVersion.substring(2, 3));
1001+
int specMajorVersion = Integer.parseInt(originalSpecVersion.substring(0, 1));
1002+
int specMinorVersion = Integer.parseInt(originalSpecVersion.substring(2, 3));
10031003
return specMajorVersion == 3 && specMinorVersion >= 1;
10041004
}
10051005

modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractAdaCodegen.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,6 @@
4646
abstract public class AbstractAdaCodegen extends DefaultCodegen implements CodegenConfig {
4747
private final Logger LOGGER = LoggerFactory.getLogger(AbstractAdaCodegen.class);
4848

49-
private static final Pattern LEADING_DIGIT = Pattern.compile("^\\d");
50-
5149
public static final String HTTP_SUPPORT_OPTION = "httpSupport";
5250
public static final String OPENAPI_PACKAGE_NAME_OPTION = "openApiName";
5351

@@ -401,7 +399,7 @@ public String toModelName(final String name) {
401399
}
402400

403401
// model name starts with number
404-
if (LEADING_DIGIT.matcher(result).find()) {
402+
if (STARTS_WITH_DIGIT.matcher(result).matches()) {
405403
String modelName = "Model_" + result; // e.g. 200Response => Model_200Response (after camelize)
406404
LOGGER.warn("{} (model name starts with number) cannot be used as model name. Renamed to {}", name,
407405
modelName);
@@ -451,7 +449,7 @@ else if ("Integer".equals(datatype) || "Long".equals(datatype) ||
451449
// string
452450
else {
453451
var = NON_WORD_PLUS.matcher(value).replaceAll("_").toUpperCase(Locale.ROOT);
454-
if (LEADING_DIGIT.matcher(var).find()) {
452+
if (STARTS_WITH_DIGIT.matcher(var).matches()) {
455453
var = "_" + var;
456454
} else {
457455
var = sanitizeName(var);

modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractApexCodegen.java

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -40,17 +40,17 @@
4040
public abstract class AbstractApexCodegen extends DefaultCodegen implements CodegenConfig {
4141
private final Logger LOGGER = LoggerFactory.getLogger(AbstractApexCodegen.class);
4242

43-
private static final Pattern LEADING_DIGIT = Pattern.compile("^\\d");
44-
private static final Pattern DATE_FORMAT = Pattern.compile("^\\d{4}(-\\d{2}){2}");
45-
private static final Pattern DATETIME_FORMAT = Pattern.compile("^\\d{4}([-T:]\\d{2}){5}.+");
46-
private static final Pattern NON_NUMERIC = Pattern.compile("[^-0-9.]");
43+
private static final Pattern DATE_FORMAT = Pattern.compile("^\\d{4}(-\\d{2}){2}");
44+
private static final Pattern DATETIME_FORMAT = Pattern.compile("^\\d{4}([-T:]\\d{2}){5}.+");
45+
private static final Pattern NON_NUMERIC = Pattern.compile("[^-0-9.]");
4746
private static final Pattern UNSAFE_PACKAGE_CHARS = Pattern.compile("[^a-zA-Z0-9_.]");
48-
private static final Pattern INTEGER_PATTERN = Pattern.compile("^-?\\d+$");
49-
private static final Pattern UNDERSCORE_CLASS = Pattern.compile("^_*class$");
50-
private static final Pattern DATE_SEP_ZERO = Pattern.compile("-0?");
51-
private static final Pattern DATETIME_SEP_ZERO = Pattern.compile("[-T:]0?");
47+
private static final Pattern INTEGER_PATTERN = Pattern.compile("^-?\\d+$");
48+
private static final Pattern UNDERSCORE_CLASS = Pattern.compile("^_*class$");
49+
private static final Pattern DATE_SEP_ZERO = Pattern.compile("-0?");
50+
private static final Pattern DATETIME_SEP_ZERO = Pattern.compile("[-T:]0?");
5251

53-
@Setter protected Boolean serializableModel = false;
52+
@Setter
53+
protected Boolean serializableModel = false;
5454

5555
public AbstractApexCodegen() {
5656
super();
@@ -90,9 +90,7 @@ public String sanitizeName(String name) {
9090
if (name.contains("__")) { // Preventing namespacing
9191
name = name.replace("__", "_");
9292
}
93-
if (LEADING_DIGIT.matcher(name).find()) { // Prevent named credentials with leading number
94-
name = STARTS_WITH_DIGIT.matcher(name).replaceAll("");
95-
}
93+
name = STARTS_WITH_DIGIT.matcher(name).replaceAll(""); // Prevent named credentials with leading number
9694
return name;
9795
}
9896

@@ -126,7 +124,7 @@ public String toVarName(String name) {
126124
name = camelize(name, LOWERCASE_FIRST_LETTER);
127125

128126
// for reserved word or word starting with number, append _
129-
if (isReservedWord(name) || LEADING_DIGIT.matcher(name).find()) {
127+
if (isReservedWord(name) || STARTS_WITH_DIGIT.matcher(name).matches()) {
130128
name = escapeReservedWord(name);
131129
}
132130

@@ -180,7 +178,7 @@ public String toModelName(final String name) {
180178
}
181179

182180
// model name starts with number
183-
if (LEADING_DIGIT.matcher(camelizedName).find()) {
181+
if (STARTS_WITH_DIGIT.matcher(camelizedName).matches()) {
184182
final String modelName = "Model" + camelizedName; // e.g. 200Response => Model200Response (after camelize)
185183
LOGGER.warn("{} (model name starts with number) cannot be used as model name. Renamed to {}", name,
186184
modelName);
@@ -543,7 +541,7 @@ public String toEnumVarName(String value, String datatype) {
543541

544542
// string
545543
String var = NON_WORD_PLUS.matcher(value).replaceAll("_").toUpperCase(Locale.ROOT);
546-
if (LEADING_DIGIT.matcher(var).find()) {
544+
if (STARTS_WITH_DIGIT.matcher(var).matches()) {
547545
return "_" + var;
548546
} else {
549547
return var;

modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractGoCodegen.java

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,6 @@ public abstract class AbstractGoCodegen extends DefaultCodegen implements Codege
4040
private final Logger LOGGER = LoggerFactory.getLogger(AbstractGoCodegen.class);
4141
private static final String NUMERIC_ENUM_PREFIX = "_";
4242

43-
private static final Pattern LEADING_DIGIT = Pattern.compile("^\\d");
4443
private static final Pattern LEADING_TRAILING_SLASH = Pattern.compile("^/|/$");
4544

4645
@Setter
@@ -231,7 +230,7 @@ public String toVarName(String name) {
231230
}
232231

233232
// for reserved word or word starting with number, append _
234-
if (LEADING_DIGIT.matcher(name).find())
233+
if (STARTS_WITH_DIGIT.matcher(name).matches())
235234
name = "Var" + name;
236235

237236
if ("AdditionalProperties".equals(name)) {
@@ -336,7 +335,7 @@ public String toModel(String name, boolean doUnderscore) {
336335
}
337336

338337
// model name starts with number
339-
if (LEADING_DIGIT.matcher(name).find()) {
338+
if (STARTS_WITH_DIGIT.matcher(name).matches()) {
340339
LOGGER.warn("{} (model name starts with number) cannot be used as model name. Renamed to {}", name,
341340
"model_" + name);
342341
name = "model_" + name; // e.g. 200Response => Model200Response (after camelize)
@@ -502,7 +501,7 @@ public String toOperationId(String operationId) {
502501
}
503502

504503
// operationId starts with a number
505-
if (LEADING_DIGIT.matcher(sanitizedOperationId).find()) {
504+
if (STARTS_WITH_DIGIT.matcher(sanitizedOperationId).matches()) {
506505
LOGGER.warn("{} (starting with a number) cannot be used as method name. Renamed to {}", operationId, camelize("call_" + sanitizedOperationId));
507506
sanitizedOperationId = "call_" + sanitizedOperationId;
508507
}
@@ -953,7 +952,7 @@ public String toEnumVarName(String name, String datatype) {
953952

954953
if (isReservedWord(enumName)) { // reserved word
955954
return escapeReservedWord(enumName);
956-
} else if (LEADING_DIGIT.matcher(enumName).find()) { // starts with a number
955+
} else if (STARTS_WITH_DIGIT.matcher(enumName).matches()) { // starts with a number
957956
return NUMERIC_ENUM_PREFIX + enumName;
958957
} else {
959958
return enumName;
@@ -971,7 +970,7 @@ public String toEnumName(CodegenProperty property) {
971970
// remove [] for array or map of enum
972971
enumName = enumName.replace("[]", "");
973972

974-
if (LEADING_DIGIT.matcher(enumName).find()) { // starts with number
973+
if (STARTS_WITH_DIGIT.matcher(enumName).matches()) { // starts with number
975974
return NUMERIC_ENUM_PREFIX + enumName;
976975
} else {
977976
return enumName;

modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractKotlinCodegen.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,6 @@
5151
public abstract class AbstractKotlinCodegen extends DefaultCodegen implements CodegenConfig {
5252

5353
private static final Pattern NON_WORD_UNICODE = Pattern.compile("\\W+", Pattern.UNICODE_CHARACTER_CLASS);
54-
private static final Pattern LEADING_DIGIT = Pattern.compile("^\\d");
5554
private static final Pattern ALL_UPPER_ALPHANUMERIC_US = Pattern.compile("^[A-Z0-9_]*$");
5655
private static final Pattern ALL_UNDERSCORES = Pattern.compile("^_*$");
5756
private static final Pattern LEADING_DIGIT_OR_DOLLAR = Pattern.compile("(^\\d.*)|(.*\\$.*)");
@@ -750,7 +749,7 @@ public String toModelName(final String name) {
750749
}
751750

752751
// model name starts with number
753-
if (LEADING_DIGIT.matcher(modifiedName).find()) {
752+
if (STARTS_WITH_DIGIT.matcher(modifiedName).matches()) {
754753
final String modelName = "Model" + modifiedName; // e.g. 200Response => Model200Response (after camelize)
755754
LOGGER.warn("{} (model name starts with number) cannot be used as model name. Renamed to {}", name,
756755
modelName);
@@ -783,7 +782,7 @@ public String toOperationId(String operationId) {
783782
}
784783

785784
// operationId starts with a number
786-
if (LEADING_DIGIT.matcher(operationId).find()) {
785+
if (STARTS_WITH_DIGIT.matcher(operationId).matches()) {
787786
LOGGER.warn(operationId + " (starting with a number) cannot be used as method name. Renamed to " + camelize("call_" + operationId), LOWERCASE_FIRST_LETTER);
788787
operationId = camelize("call_" + operationId, LOWERCASE_FIRST_LETTER);
789788
}
@@ -811,7 +810,7 @@ private String sanitizeKotlinSpecificNames(final String name) {
811810

812811
// Fallback, replace unknowns with underscore.
813812
word = NON_WORD_UNICODE.matcher(word).replaceAll("_");
814-
if (LEADING_DIGIT.matcher(word).find()) {
813+
if (STARTS_WITH_DIGIT.matcher(word).matches()) {
815814
word = "_" + word;
816815
}
817816

modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractPythonPydanticV1Codegen.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1631,7 +1631,7 @@ public String toEnumVariableName(String name, String datatype) {
16311631
name = name.replaceFirst("^_", "");
16321632
name = name.replaceFirst("_$", "");
16331633

1634-
if (LEADING_DIGIT.matcher(name).matches()) {
1634+
if (STARTS_WITH_DIGIT.matcher(name).matches()) {
16351635
name = "ENUM_" + name.toUpperCase(Locale.ROOT);
16361636
}
16371637

modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractTypeScriptClientCodegen.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -979,7 +979,7 @@ public String toEnumVarName(String name, String datatype) {
979979

980980
varName = getNameUsingEnumPropertyNaming(varName);
981981

982-
if (LEADING_DIGIT.matcher(varName).matches()) { // starts with number
982+
if (STARTS_WITH_DIGIT.matcher(varName).matches()) { // starts with number
983983
return "_" + varName;
984984
} else {
985985
return varName;

modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CLibcurlClientCodegen.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -722,7 +722,7 @@ public String toEnumValue(String value, String datatype) {
722722
if ("Integer".equals(datatype) || "Float".equals(datatype)) {
723723
return value;
724724
} else {
725-
if (LEADING_DIGIT.matcher(value).matches()) { // starts with number
725+
if (STARTS_WITH_DIGIT.matcher(value).matches()) { // starts with number
726726
return escapeReservedWord(escapeText(value));
727727
} else {
728728
return escapeText(value);
@@ -750,7 +750,7 @@ public String toEnumVarName(String name, String datatype) {
750750
enumName = enumName.replaceFirst("^_", "");
751751
enumName = enumName.replaceFirst("_$", "");
752752

753-
if (LEADING_DIGIT.matcher(enumName).matches()) { // starts with number
753+
if (STARTS_WITH_DIGIT.matcher(enumName).matches()) { // starts with number
754754
return escapeReservedWord(enumName);
755755
} else {
756756
return enumName;
@@ -763,7 +763,7 @@ public String toEnumName(CodegenProperty property) {
763763
enumName = enumName.replaceFirst("^_", "");
764764
enumName = enumName.replaceFirst("_$", "");
765765

766-
if (LEADING_DIGIT.matcher(enumName).matches()) { // starts with number
766+
if (STARTS_WITH_DIGIT.matcher(enumName).matches()) { // starts with number
767767
return escapeReservedWord(enumName);
768768
} else {
769769
return enumName;

modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CrystalClientCodegen.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -505,7 +505,7 @@ public String toEnumVarName(String name, String datatype) {
505505
enumName = enumName.replaceFirst("^_", "");
506506
enumName = enumName.replaceFirst("_$", "");
507507

508-
if (LEADING_DIGIT.matcher(enumName).matches()) { // starts with number
508+
if (STARTS_WITH_DIGIT.matcher(enumName).matches()) { // starts with number
509509
return NUMERIC_ENUM_PREFIX + enumName;
510510
} else {
511511
return enumName;
@@ -518,7 +518,7 @@ public String toEnumName(CodegenProperty property) {
518518
enumName = enumName.replaceFirst("^_", "");
519519
enumName = enumName.replaceFirst("_$", "");
520520

521-
if (LEADING_DIGIT.matcher(enumName).matches()) { // starts with number
521+
if (STARTS_WITH_DIGIT.matcher(enumName).matches()) { // starts with number
522522
return NUMERIC_ENUM_PREFIX + enumName;
523523
} else {
524524
return enumName;

modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/EiffelClientCodegen.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -220,7 +220,7 @@ public String toEnumVarName(String value, String datatype) {
220220

221221
// string
222222
String var = NON_WORD_PLUS.matcher(value).replaceAll("_").toLowerCase(Locale.ROOT);
223-
if (LEADING_DIGIT.matcher(var).matches()) {
223+
if (STARTS_WITH_DIGIT.matcher(var).matches()) {
224224
return "val_" + var;
225225
} else if (var.startsWith("_")) {
226226
return "val" + var;

0 commit comments

Comments
 (0)