Use ConvertCase instead of Make{Upper,Lower,Snake} implementations (#7127)

* Unified name case conversion to single method

* Convert bfbs_gen to use ConvertCase

* convert rust to use ConvertCase

* Convert idl_parser to use ConvertCase

* Convert MakeScreamingCamel to ConvertCase

* Replaced MakeCamel with ConvertCase

* minor fixes
This commit is contained in:
Derek Bailey
2022-02-23 16:08:11 -08:00
committed by GitHub
parent 0471fa807c
commit 3694b830a2
20 changed files with 617 additions and 396 deletions

View File

@@ -46,10 +46,12 @@ static const char *keywords[] = {
// Escape Keywords
static std::string Esc(const std::string &name) {
for (size_t i = 0; i < sizeof(keywords) / sizeof(keywords[0]); i++) {
if (name == keywords[i]) { return MakeCamel(name + "_", false); }
if (name == keywords[i]) {
return ConvertCase(name + "_", Case::kLowerCamel);
}
}
return MakeCamel(name, false);
return ConvertCase(name, Case::kLowerCamel);
}
class KotlinGenerator : public BaseGenerator {
@@ -337,7 +339,8 @@ class KotlinGenerator : public BaseGenerator {
case BASE_TYPE_UTYPE: return bb_var_name + ".get";
case BASE_TYPE_BOOL: return "0.toByte() != " + bb_var_name + ".get";
default:
return bb_var_name + ".get" + MakeCamel(GenTypeBasic(type.base_type));
return bb_var_name + ".get" +
ConvertCase(GenTypeBasic(type.base_type), Case::kUpperCamel);
}
}
@@ -357,7 +360,9 @@ class KotlinGenerator : public BaseGenerator {
case BASE_TYPE_BOOL:
case BASE_TYPE_NONE:
case BASE_TYPE_UTYPE: return "bb.put";
default: return "bb.put" + MakeCamel(GenTypeBasic(type.base_type));
default:
return "bb.put" +
ConvertCase(GenTypeBasic(type.base_type), Case::kUpperCamel);
}
}
return "";
@@ -394,7 +399,7 @@ class KotlinGenerator : public BaseGenerator {
(nameprefix + (field.name + "_")).c_str());
} else {
writer += std::string(", ") + nameprefix + "\\";
writer += MakeCamel(field.name) + ": \\";
writer += ConvertCase(field.name, Case::kUpperCamel) + ": \\";
writer += GenTypeBasic(field.value.type.base_type) + "\\";
}
}
@@ -421,8 +426,8 @@ class KotlinGenerator : public BaseGenerator {
(nameprefix + (field.name + "_")).c_str());
} else {
writer.SetValue("type", GenMethod(field.value.type));
writer.SetValue("argname",
nameprefix + MakeCamel(Esc(field.name), false));
writer.SetValue("argname", nameprefix + ConvertCase(Esc(field.name),
Case::kLowerCamel));
writer.SetValue("cast", CastToSigned(field.value.type));
writer += "builder.put{{type}}({{argname}}{{cast}})";
}
@@ -656,7 +661,8 @@ class KotlinGenerator : public BaseGenerator {
void GenerateCreateVectorField(FieldDef &field, CodeWriter &writer,
const IDLOptions options) const {
auto vector_type = field.value.type.VectorType();
auto method_name = "create" + MakeCamel(Esc(field.name)) + "Vector";
auto method_name =
"create" + ConvertCase(Esc(field.name), Case::kUpperCamel) + "Vector";
auto params = "builder: FlatBufferBuilder, data: " +
GenTypeBasic(vector_type.base_type) + "Array";
writer.SetValue("size", NumToString(InlineSize(vector_type)));
@@ -688,8 +694,9 @@ class KotlinGenerator : public BaseGenerator {
writer.SetValue("align", NumToString(InlineAlignment(vector_type)));
GenerateFunOneLine(
writer, "start" + MakeCamel(Esc(field.name) + "Vector", true), params,
"",
writer,
"start" + ConvertCase(Esc(field.name) + "Vector", Case::kUpperCamel),
params, "",
[&]() {
writer += "builder.startVector({{size}}, numElems, {{align}})";
},
@@ -699,14 +706,16 @@ class KotlinGenerator : public BaseGenerator {
void GenerateAddField(std::string field_pos, FieldDef &field,
CodeWriter &writer, const IDLOptions options) const {
auto field_type = GenTypeBasic(field.value.type.base_type);
auto secondArg = MakeCamel(Esc(field.name), false) + ": " + field_type;
auto secondArg =
ConvertCase(Esc(field.name), Case::kLowerCamel) + ": " + field_type;
GenerateFunOneLine(
writer, "add" + MakeCamel(Esc(field.name), true),
writer, "add" + ConvertCase(Esc(field.name), Case::kUpperCamel),
"builder: FlatBufferBuilder, " + secondArg, "",
[&]() {
auto method = GenMethod(field.value.type);
writer.SetValue("field_name", MakeCamel(Esc(field.name), false));
writer.SetValue("field_name",
ConvertCase(Esc(field.name), Case::kLowerCamel));
writer.SetValue("method_name", method);
writer.SetValue("pos", field_pos);
writer.SetValue("default", GenFBBDefaultValue(field));
@@ -797,7 +806,7 @@ class KotlinGenerator : public BaseGenerator {
for (auto it = fields_vec.begin(); it != fields_vec.end(); ++it) {
auto &field = **it;
if (field.deprecated) continue;
params << ", " << MakeCamel(Esc(field.name), false);
params << ", " << ConvertCase(Esc(field.name), Case::kLowerCamel);
if (!IsScalar(field.value.type.base_type)) {
params << "Offset: ";
} else {
@@ -823,10 +832,11 @@ class KotlinGenerator : public BaseGenerator {
auto base_type_size = SizeOf(field.value.type.base_type);
if (!field.deprecated &&
(!sortbysize || size == base_type_size)) {
writer.SetValue("camel_field_name",
MakeCamel(Esc(field.name), true));
writer.SetValue("field_name",
MakeCamel(Esc(field.name), false));
writer.SetValue(
"camel_field_name",
ConvertCase(Esc(field.name), Case::kUpperCamel));
writer.SetValue("field_name", ConvertCase(Esc(field.name),
Case::kLowerCamel));
// we wrap on null check for scalar optionals
writer += field.IsScalarOptional()
@@ -853,7 +863,7 @@ class KotlinGenerator : public BaseGenerator {
// Check if a buffer has the identifier.
if (parser_.root_struct_def_ != &struct_def || !file_identifier.length())
return;
auto name = MakeCamel(Esc(struct_def.name), false);
auto name = ConvertCase(Esc(struct_def.name), Case::kLowerCamel);
GenerateFunOneLine(
writer, name + "BufferHasIdentifier", "_bb: ByteBuffer", "Boolean",
[&]() {
@@ -872,7 +882,7 @@ class KotlinGenerator : public BaseGenerator {
GenerateComment(field.doc_comment, writer, &comment_config);
auto field_name = MakeCamel(Esc(field.name), false);
auto field_name = ConvertCase(Esc(field.name), Case::kLowerCamel);
auto field_type = GenTypeGet(field.value.type);
auto field_default_value = GenDefaultValue(field);
auto return_type = GetterReturnType(field);
@@ -1043,7 +1053,8 @@ class KotlinGenerator : public BaseGenerator {
auto &kfield = **kit;
if (kfield.key) {
auto qualified_name = WrapInNameSpace(sd);
auto name = MakeCamel(Esc(field.name), false) + "ByKey";
auto name =
ConvertCase(Esc(field.name), Case::kLowerCamel) + "ByKey";
auto params = "key: " + GenTypeGet(kfield.value.type);
auto rtype = qualified_name + "?";
GenerateFun(writer, name, params, rtype, [&]() {
@@ -1136,7 +1147,7 @@ class KotlinGenerator : public BaseGenerator {
auto underlying_type = value_base_type == BASE_TYPE_VECTOR
? value_type.VectorType()
: value_type;
auto name = "mutate" + MakeCamel(Esc(field.name), true);
auto name = "mutate" + ConvertCase(Esc(field.name), Case::kUpperCamel);
auto size = NumToString(InlineSize(underlying_type));
auto params = Esc(field.name) + ": " + GenTypeGet(underlying_type);
// A vector mutator also needs the index of the vector element it should
@@ -1339,8 +1350,8 @@ class KotlinGenerator : public BaseGenerator {
out << StructConstructorParams(*field.value.type.struct_def,
prefix + (Esc(field.name) + "_"));
} else {
out << ", " << prefix << MakeCamel(Esc(field.name), false) << ": "
<< GenTypeBasic(field.value.type.base_type);
out << ", " << prefix << ConvertCase(Esc(field.name), Case::kLowerCamel)
<< ": " << GenTypeBasic(field.value.type.base_type);
}
}
return out.str();