[cpp-qt5] sanitize model names (#388)

* Escape characters that have language significance

* Remove assignment to parameter variable
This commit is contained in:
sunn 2018-06-25 05:51:24 +02:00 committed by William Cheng
parent 36f4452351
commit c01f4bf220

View File

@ -248,7 +248,7 @@ public class CppQt5ClientCodegen extends AbstractCppCodegen implements CodegenCo
if (!folder.isEmpty()) if (!folder.isEmpty())
folder += File.separator; folder += File.separator;
return "#include \"" + folder + name + ".h\""; return "#include \"" + folder + toModelName(name) + ".h\"";
} }
/** /**
@ -285,7 +285,7 @@ public class CppQt5ClientCodegen extends AbstractCppCodegen implements CodegenCo
@Override @Override
public String toModelFilename(String name) { public String toModelFilename(String name) {
return modelNamePrefix + initialCaps(name); return initialCaps(toModelName(name));
} }
@Override @Override
@ -381,7 +381,7 @@ public class CppQt5ClientCodegen extends AbstractCppCodegen implements CodegenCo
@Override @Override
public String toModelName(String type) { public String toModelName(String type) {
if (type == null) { if (type == null) {
LOGGER.warn("Model name can't be null. Defaul to 'UnknownModel'."); LOGGER.warn("Model name can't be null. Default to 'UnknownModel'.");
type = "UnknownModel"; type = "UnknownModel";
} }
@ -392,30 +392,31 @@ public class CppQt5ClientCodegen extends AbstractCppCodegen implements CodegenCo
languageSpecificPrimitives.contains(type)) { languageSpecificPrimitives.contains(type)) {
return type; return type;
} else { } else {
return modelNamePrefix + Character.toUpperCase(type.charAt(0)) + type.substring(1); String typeName = sanitizeName(type);
return modelNamePrefix + Character.toUpperCase(typeName.charAt(0)) + typeName.substring(1);
} }
} }
@Override @Override
public String toVarName(String name) { public String toVarName(String name) {
// sanitize name // sanitize name
name = sanitizeName(name); // FIXME: a parameter should not be assigned. Also declare the methods parameters as 'final'. String varName = sanitizeName(name);
// if it's all uppper case, convert to lower case // if it's all uppper case, convert to lower case
if (name.matches("^[A-Z_]*$")) { if (varName.matches("^[A-Z_]*$")) {
name = name.toLowerCase(); varName = varName.toLowerCase();
} }
// camelize (lower first character) the variable name // camelize (lower first character) the variable name
// petId => pet_id // petId => pet_id
name = underscore(name); varName = underscore(varName);
// for reserved word or word starting with number, append _ // for reserved word or word starting with number, append _
if (isReservedWord(name) || name.matches("^\\d.*")) { if (isReservedWord(varName) || varName.matches("^\\d.*")) {
name = escapeReservedWord(name); varName = escapeReservedWord(varName);
} }
return name; return varName;
} }
@Override @Override