[PS] better handle special variables (#5885)

* add variable

* fix reserved words
This commit is contained in:
William Cheng
2020-04-10 21:46:27 +08:00
committed by GitHub
parent 8eefbadd06
commit 5c2d1eafa2
2 changed files with 80 additions and 67 deletions

View File

@@ -372,39 +372,75 @@ public class PowerShellExperimentalClientCodegen extends DefaultCodegen implemen
"System.Nullable[Boolean]"
));
// https://richardspowershellblog.wordpress.com/2009/05/02/powershell-reserved-words/
// list of reserved words - must be in lower case
reservedWords = new HashSet<String>(Arrays.asList(
"Begin",
"Break",
"Catch",
"Continue",
"Data",
"Do",
"Dynamicparam",
"Else",
"Elseif",
"End",
"Exit",
"Filter",
"Finally",
"For",
"Foreach",
"From",
"Function",
"If",
"In",
"Param",
"Process",
"Return",
"Switch",
"Throw",
"Trap",
"Try",
"Until",
"While",
"Local",
"Private",
"Where"
// https://richardspowershellblog.wordpress.com/2009/05/02/powershell-reserved-words/
"begin",
"break",
"catch",
"continue",
"data",
"do",
"dynamicparam",
"else",
"elseif",
"end",
"exit",
"filter",
"finally",
"for",
"foreach",
"from",
"function",
"if",
"in",
"param",
"process",
"return",
"switch",
"throw",
"trap",
"try",
"until",
"while",
"local",
"private",
"where",
// special variables
"args",
"consolefilename",
"error",
"event",
"eventargs",
"eventsubscriber",
"executioncontext",
"false",
"foreach",
"home",
"host",
"input",
"lastexitcode",
"matches",
"myinvocation",
"nestedpromptlevel",
"null",
"pid",
"profile",
"pscmdlet",
"pscommandpath",
"psculture",
"psdebugcontext",
"pshome",
"psitem",
"psscriptroot",
"pssenderinfo",
"psuiculture",
"psversiontable",
"sender",
"shellid",
"stacktrace",
"this",
"true"
));
defaultIncludes = new HashSet<String>(Arrays.asList(
@@ -634,7 +670,7 @@ public class PowerShellExperimentalClientCodegen extends DefaultCodegen implemen
@Override
public String escapeReservedWord(String name) {
return "_" + name;
return "Var" + name;
}
/**
@@ -654,23 +690,23 @@ public class PowerShellExperimentalClientCodegen extends DefaultCodegen implemen
name = name + "_" + modelNameSuffix;
}
name = sanitizeName(name);
// camelize the model name
// phone_number => PhoneNumber
name = camelize(sanitizeName(name));
// model name cannot use reserved keyword, e.g. return
if (isReservedWord(name)) {
LOGGER.warn(name + " (reserved word) cannot be used as model name. Renamed to " + camelize("model_" + name));
name = "model_" + name; // e.g. return => ModelReturn (after camelize)
LOGGER.warn(name + " (reserved word or special variable name) cannot be used as model name. Renamed to " + camelize("model_" + name));
name = camelize("model_" + name); // e.g. return => ModelReturn (after camelize)
}
// model name starts with number
if (name.matches("^\\d.*")) {
LOGGER.warn(name + " (model name starts with number) cannot be used as model name. Renamed to " + camelize("model_" + name));
name = "model_" + name; // e.g. 200Response => Model200Response (after camelize)
name = camelize("model_" + name); // e.g. 200Response => Model200Response (after camelize)
}
// camelize the model name
// phone_number => PhoneNumber
return camelize(name);
return name;
}
@Override
@@ -736,27 +772,7 @@ public class PowerShellExperimentalClientCodegen extends DefaultCodegen implemen
@Override
public String toParamName(String name) {
// sanitize name
name = sanitizeName(name);
// replace - with _ e.g. created-at => created_at
name = name.replaceAll("-", "_");
// if it's all upper case, do nothing
if (name.matches("^[A-Z_]*$")) {
return name;
}
// camelize the variable name
// pet_id => PetId
name = camelize(name, false);
// for reserved word or word starting with number, append _
if (isReservedWord(name) || name.matches("^\\d.*")) {
name = escapeReservedWord(name);
}
return name;
return toVarName(name);
}
@Override
@@ -835,17 +851,13 @@ public class PowerShellExperimentalClientCodegen extends DefaultCodegen implemen
// sanitize name
name = sanitizeName(name);
// if it's all uppper case, do nothing
if (name.matches("^[A-Z_]*$")) {
return name;
}
// camelize the variable name
// pet_id => PetId
name = camelize(name);
// for reserved word or word starting with number, append _
if (isReservedWord(name) || name.matches("^\\d.*")) {
LOGGER.warn(name + " (reserved word or special variable name) cannot be used in naming. Renamed to " + escapeReservedWord(name));
name = escapeReservedWord(name);
}
@@ -1028,4 +1040,5 @@ public class PowerShellExperimentalClientCodegen extends DefaultCodegen implemen
public String toRegularExpression(String pattern) {
return escapeText(pattern);
}
}

View File

@@ -3,7 +3,7 @@
#
# Generated by: OpenAPI Generator Team
#
# Generated on: 4/9/20
# Generated on: 4/10/20
#
@{