Skip to content

Commit 55934d7

Browse files
committed
DRY regex patterns
1 parent d461793 commit 55934d7

22 files changed

Lines changed: 56 additions & 51 deletions

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

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -257,16 +257,27 @@ apiTemplateFiles are for API outputs only (controllers/handlers).
257257

258258
protected static final Pattern WHITESPACE = Pattern.compile("\\s+");
259259

260+
protected static final Pattern DOUBLE_QUOTE = Pattern.compile("\"");
261+
260262
protected static final Pattern STARTS_WITH_SLASH = Pattern.compile("^/.*");
261263

262264
protected static final Pattern UNESCAPED_SLASH = Pattern.compile("(?<!\\\\)/");
263265

264266
/** Matches a string that starts with a digit (anchored); used across language generators. */
265267
protected static final Pattern STARTS_WITH_DIGIT = Pattern.compile("^\\d.*");
266268

267-
protected static final Pattern LEADING_SINGLE_UNDERSCORE = Pattern.compile("^_");
269+
protected static final Pattern FIRST_LEADING_UNDERSCORE = Pattern.compile("^_");
270+
271+
protected static final Pattern LAST_TRAILING_UNDERSCORE = Pattern.compile("_$");
268272
/** Matches a string consisting entirely of uppercase letters and underscores. */
269273
protected static final Pattern ALL_UPPER_UNDERSCORE = Pattern.compile("^[A-Z_]*$");
274+
275+
protected static final Pattern MINUS = Pattern.compile("-");
276+
protected static final Pattern PLUS = Pattern.compile("\\+");
277+
protected static final Pattern DOT = Pattern.compile("\\.");
278+
279+
/** Matches a string consisting entirely of uppercase letters and underscores and digits. */
280+
protected static final Pattern ALL_UPPER_UNDERSCORE_DIGITS = Pattern.compile("^[A-Z0-9_]*$");
270281
/** Matches tab, newline, or carriage-return; used in {@link #escapeText}. */
271282
protected static final Pattern CONTROL_WHITESPACE = Pattern.compile("[\\t\\n\\r]");
272283

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1798,8 +1798,8 @@ public String toEnumVarName(String name, String datatype) {
17981798

17991799
String enumName = sanitizeName(name);
18001800

1801-
enumName = enumName.replaceFirst("^_", "");
1802-
enumName = enumName.replaceFirst("_$", "");
1801+
enumName = FIRST_LEADING_UNDERSCORE.matcher(enumName).replaceFirst("");
1802+
enumName = LAST_TRAILING_UNDERSCORE.matcher(enumName).replaceFirst("");
18031803

18041804
enumName = adjustNamingStyle(enumName) + this.enumValueSuffix;
18051805

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

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@ public abstract class AbstractDartCodegen extends DefaultCodegen {
3636

3737
private final Logger LOGGER = LoggerFactory.getLogger(AbstractDartCodegen.class);
3838

39-
private static final Pattern LEADING_UNDERSCORE = Pattern.compile("^_");
4039
private static final Pattern STARTS_WITH_OPT_NEG_DIGIT = Pattern.compile("^-?\\d.*");
4140

4241
protected static final List<String> DEFAULT_SUPPORTED_CONTENT_TYPES = Arrays.asList(
@@ -417,7 +416,7 @@ public String toVarName(String name) {
417416
if (name.equals("_")) {
418417
return "underscore";
419418
}
420-
name = LEADING_UNDERSCORE.matcher(name).replaceAll("");
419+
name = FIRST_LEADING_UNDERSCORE.matcher(name).replaceAll("");
421420

422421
// if it's all upper case, do nothing
423422
if (ALL_UPPER_UNDERSCORE.matcher(name).matches()) {

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -962,8 +962,8 @@ public String toEnumVarName(String name, String datatype) {
962962

963963
String enumName = sanitizeName(name);
964964

965-
enumName = enumName.replaceFirst("^_", "");
966-
enumName = enumName.replaceFirst("_$", "");
965+
enumName = FIRST_LEADING_UNDERSCORE.matcher(enumName).replaceFirst("");
966+
enumName = LAST_TRAILING_UNDERSCORE.matcher(enumName).replaceFirst("");
967967

968968
enumName = camelize(enumName) + "Enum";
969969

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -947,8 +947,8 @@ public String toEnumVarName(String name, String datatype) {
947947

948948
// string
949949
String enumName = sanitizeName(underscore(name).toUpperCase(Locale.ROOT));
950-
enumName = enumName.replaceFirst("^_", "");
951-
enumName = enumName.replaceFirst("_$", "");
950+
enumName = FIRST_LEADING_UNDERSCORE.matcher(enumName).replaceFirst("");
951+
enumName = LAST_TRAILING_UNDERSCORE.matcher(enumName).replaceFirst("");
952952

953953
if (isReservedWord(enumName)) { // reserved word
954954
return escapeReservedWord(enumName);

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -385,8 +385,8 @@ public String toEnumVarName(String name, String datatype) {
385385

386386
// string
387387
String enumName = sanitizeName(underscore(name).toUpperCase(Locale.ROOT));
388-
enumName = enumName.replaceFirst("^_", "");
389-
enumName = enumName.replaceFirst("_$", "");
388+
enumName = FIRST_LEADING_UNDERSCORE.matcher(enumName).replaceFirst("");
389+
enumName = LAST_TRAILING_UNDERSCORE.matcher(enumName).replaceFirst("");
390390

391391
if (isReservedWord(enumName) || STARTS_WITH_DIGIT.matcher(enumName).matches()) { // reserved word or starts with number
392392
return escapeReservedWord(enumName);

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

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,6 @@ public abstract class AbstractJavaCodegen extends DefaultCodegen implements Code
8686
private static final Pattern LOMBOK_ANNOTATION = Pattern.compile("@lombok.(\\w+\\.)*(?<ClassName>\\w+)(\\(.*?\\))?");
8787
private static final Pattern JAVA_UTIL_IMPORT = Pattern.compile("java\\.util\\.(List|ArrayList|Map|HashMap)");
8888
private static final Pattern STARTS_WITH_UNDERSCORE_CLASS = Pattern.compile("^_*class$");
89-
private static final Pattern ALL_UPPER_CASE_DIGITS_UNDERSCORE = Pattern.compile("^[A-Z0-9_]*$");
9089
private static final Pattern ANNOTATION_IN_TYPE = Pattern.compile("(?:(?i)@[a-z0-9]*+([(].*[)]|\\s*))*+");
9190
private static final Pattern NON_ALPHANUMERIC = Pattern.compile("\\P{Alnum}");
9291
private static final Pattern INVALID_PACKAGE_CHARS = Pattern.compile("[^a-zA-Z0-9_.]");
@@ -941,7 +940,7 @@ public String toVarName(String name) {
941940
}
942941

943942
// if it's all upper case, do nothing
944-
if (ALL_UPPER_CASE_DIGITS_UNDERSCORE.matcher(name).matches()) {
943+
if (ALL_UPPER_UNDERSCORE_DIGITS.matcher(name).matches()) {
945944
return name;
946945
}
947946

@@ -2091,7 +2090,6 @@ public ModelsMap postProcessModels(ModelsMap objs) {
20912090

20922091
// parse lombok additional model type annotations
20932092
Map<String, Boolean> lombokOptions = new HashMap<>();
2094-
String regexp = "@lombok.(\\w+\\.)*(?<ClassName>\\w+)(\\(.*?\\))?";
20952093
for (String annotation : additionalModelTypeAnnotations) {
20962094
Matcher matcher = LOMBOK_ANNOTATION.matcher(annotation);
20972095
if (matcher.find()) {

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

Lines changed: 1 addition & 2 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 ALL_UPPER_ALPHANUMERIC_US = Pattern.compile("^[A-Z0-9_]*$");
5554
private static final Pattern ALL_UNDERSCORES = Pattern.compile("^_*$");
5655
private static final Pattern LEADING_DIGIT_OR_DOLLAR = Pattern.compile("(^\\d.*)|(.*\\$.*)");
5756
private static final Pattern UNDERSCORE_CLASS = Pattern.compile("^_*class$");
@@ -1032,7 +1031,7 @@ protected String toVariableName(String name) {
10321031
}
10331032

10341033
// if it's all upper case, do nothing
1035-
if (ALL_UPPER_ALPHANUMERIC_US.matcher(name).matches()) {
1034+
if (ALL_UPPER_UNDERSCORE_DIGITS.matcher(name).matches()) {
10361035
return name;
10371036
}
10381037

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -781,8 +781,8 @@ public String toEnumVarName(String name, String datatype) {
781781

782782
// string
783783
String enumName = sanitizeName(underscore(name).toUpperCase(Locale.ROOT));
784-
enumName = enumName.replaceFirst("^_", "");
785-
enumName = enumName.replaceFirst("_$", "");
784+
enumName = FIRST_LEADING_UNDERSCORE.matcher(enumName).replaceFirst("");
785+
enumName = LAST_TRAILING_UNDERSCORE.matcher(enumName).replaceFirst("");
786786

787787
if (isReservedWord(enumName) || STARTS_WITH_DIGIT.matcher(enumName).matches()) { // reserved word or starts with number
788788
return escapeReservedWord(enumName);

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1110,8 +1110,8 @@ public String toEnumVariableName(String name, String datatype) {
11101110
}
11111111

11121112
name = name.replace(" ", "_");
1113-
name = name.replaceFirst("^_", "");
1114-
name = name.replaceFirst("_$", "");
1113+
name = FIRST_LEADING_UNDERSCORE.matcher(name).replaceFirst("");
1114+
name = LAST_TRAILING_UNDERSCORE.matcher(name).replaceFirst("");
11151115

11161116
if (STARTS_WITH_DIGIT.matcher(name).matches()) {
11171117
name = "ENUM_" + name.toUpperCase(Locale.ROOT);

0 commit comments

Comments
 (0)