mirror of
https://github.com/google/flatbuffers.git
synced 2026-06-15 16:57:29 +00:00
Replaced ToDasherCase with ConvertCase (#7131)
This commit is contained in:
@@ -91,7 +91,8 @@ std::string BaseGenerator::NamespaceDir(const Parser &parser,
|
||||
std::string namespace_dir = path; // Either empty or ends in separator.
|
||||
auto &namespaces = ns.components;
|
||||
for (auto it = namespaces.begin(); it != namespaces.end(); ++it) {
|
||||
namespace_dir += !dasherize ? *it : ToDasherizedCase(*it);
|
||||
namespace_dir +=
|
||||
!dasherize ? *it : ConvertCase(*it, Case::kDasher, Case::kUpperCamel);
|
||||
namespace_dir += kPathSeparator;
|
||||
EnsureDirExists(namespace_dir);
|
||||
}
|
||||
@@ -103,22 +104,6 @@ std::string BaseGenerator::NamespaceDir(const Namespace &ns,
|
||||
return BaseGenerator::NamespaceDir(parser_, path_, ns, dasherize);
|
||||
}
|
||||
|
||||
std::string BaseGenerator::ToDasherizedCase(const std::string pascal_case) {
|
||||
std::string dasherized_case;
|
||||
char p = 0;
|
||||
for (size_t i = 0; i < pascal_case.length(); i++) {
|
||||
char const &c = pascal_case[i];
|
||||
if (is_alpha_upper(c)) {
|
||||
if (i > 0 && p != kPathSeparator) dasherized_case += "-";
|
||||
dasherized_case += CharToLower(c);
|
||||
} else {
|
||||
dasherized_case += c;
|
||||
}
|
||||
p = c;
|
||||
}
|
||||
return dasherized_case;
|
||||
}
|
||||
|
||||
std::string BaseGenerator::FullNamespace(const char *separator,
|
||||
const Namespace &ns) {
|
||||
std::string namespace_name;
|
||||
|
||||
@@ -134,8 +134,9 @@ class TsGenerator : public BaseGenerator {
|
||||
if (!imports.empty()) code += "\n\n";
|
||||
|
||||
code += classcode;
|
||||
auto filename = NamespaceDir(*definition.defined_namespace, true) +
|
||||
ToDasherizedCase(definition.name) + ".ts";
|
||||
auto filename =
|
||||
NamespaceDir(*definition.defined_namespace, true) +
|
||||
ConvertCase(definition.name, Case::kDasher, Case::kUpperCamel) + ".ts";
|
||||
return SaveFile(filename.c_str(), code, false);
|
||||
}
|
||||
|
||||
@@ -566,8 +567,11 @@ class TsGenerator : public BaseGenerator {
|
||||
rel_file_path += i == 0 ? ".." : (kPathSeparator + std::string(".."));
|
||||
if (dep_comps.size() == 0) rel_file_path += ".";
|
||||
for (auto it = depc_comps.begin(); it != depc_comps.end(); it++)
|
||||
bare_file_path += kPathSeparator + ToDasherizedCase(*it);
|
||||
bare_file_path += kPathSeparator + ToDasherizedCase(dependency.name);
|
||||
bare_file_path +=
|
||||
kPathSeparator + ConvertCase(*it, Case::kDasher, Case::kUpperCamel);
|
||||
bare_file_path +=
|
||||
kPathSeparator +
|
||||
ConvertCase(dependency.name, Case::kDasher, Case::kUpperCamel);
|
||||
rel_file_path += bare_file_path;
|
||||
import_statement += rel_file_path + "';";
|
||||
export_statement += "." + bare_file_path + "';";
|
||||
@@ -623,8 +627,11 @@ class TsGenerator : public BaseGenerator {
|
||||
rel_file_path += i == 0 ? ".." : (kPathSeparator + std::string(".."));
|
||||
if (dep_comps.size() == 0) rel_file_path += ".";
|
||||
for (auto it = depc_comps.begin(); it != depc_comps.end(); it++)
|
||||
bare_file_path += kPathSeparator + ToDasherizedCase(*it);
|
||||
bare_file_path += kPathSeparator + ToDasherizedCase(dependency.name);
|
||||
bare_file_path +=
|
||||
kPathSeparator + ConvertCase(*it, Case::kDasher, Case::kUpperCamel);
|
||||
bare_file_path +=
|
||||
kPathSeparator +
|
||||
ConvertCase(dependency.name, Case::kDasher, Case::kUpperCamel);
|
||||
rel_file_path += bare_file_path;
|
||||
import_statement += rel_file_path + "';";
|
||||
export_statement += "." + bare_file_path + "';";
|
||||
|
||||
36
src/util.cpp
36
src/util.cpp
@@ -379,6 +379,39 @@ static std::string CamelToSnake(const std::string &input) {
|
||||
return s;
|
||||
}
|
||||
|
||||
static std::string DasherToSnake(const std::string &input) {
|
||||
std::string s;
|
||||
for (size_t i = 0; i < input.length(); i++) {
|
||||
if (input[i] == '-') {
|
||||
s += "_";
|
||||
} else {
|
||||
s += input[i];
|
||||
}
|
||||
}
|
||||
return s;
|
||||
}
|
||||
|
||||
static std::string ToDasher(const std::string &input) {
|
||||
std::string s;
|
||||
char p = 0;
|
||||
for (size_t i = 0; i < input.length(); i++) {
|
||||
char const &c = input[i];
|
||||
if (c == '_') {
|
||||
if (i > 0 && p != kPathSeparator &&
|
||||
// The following is a special case to ignore digits after a _. This is
|
||||
// because ThisExample3 would be converted to this_example_3 in the
|
||||
// CamelToSnake conversion, and then dasher would do this-example-3,
|
||||
// but it expects this-example3.
|
||||
!(i + 1 < input.length() && isdigit(input[i + 1])))
|
||||
s += "-";
|
||||
} else {
|
||||
s += c;
|
||||
}
|
||||
p = c;
|
||||
}
|
||||
return s;
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
std::string ConvertCase(const std::string &input, Case output_case,
|
||||
@@ -389,7 +422,7 @@ std::string ConvertCase(const std::string &input, Case output_case,
|
||||
case Case::kLowerCamel:
|
||||
case Case::kUpperCamel:
|
||||
return ConvertCase(CamelToSnake(input), output_case);
|
||||
|
||||
case Case::kDasher: return ConvertCase(DasherToSnake(input), output_case);
|
||||
default:
|
||||
case Case::kSnake:
|
||||
case Case::kScreamingSnake:
|
||||
@@ -404,6 +437,7 @@ std::string ConvertCase(const std::string &input, Case output_case,
|
||||
case Case::kScreamingSnake: return ToSnakeCase(input, true);
|
||||
case Case::kAllUpper: return ToAll(input, CharToUpper);
|
||||
case Case::kAllLower: return ToAll(input, CharToLower);
|
||||
case Case::kDasher: return ToDasher(input);
|
||||
default:
|
||||
case Case::kUnknown: return input;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user