THRIFT-3710 Dart generator does not camel case Constants class names
Client: Dart
This closes #922
diff --git a/compiler/cpp/src/generate/t_dart_generator.cc b/compiler/cpp/src/generate/t_dart_generator.cc
index 3d7f597..1bd2ce6 100644
--- a/compiler/cpp/src/generate/t_dart_generator.cc
+++ b/compiler/cpp/src/generate/t_dart_generator.cc
@@ -180,6 +180,7 @@
std::string get_args_class_name(std::string name);
std::string get_result_class_name(std::string name);
std::string get_file_name(std::string name);
+ std::string get_class_name(std::string name);
std::string generate_isset_check(t_field* field);
std::string generate_isset_check(std::string field);
void generate_isset_set(ofstream& out, t_field* field);
@@ -534,7 +535,7 @@
return;
}
- string class_name = get_cap_name(program_name_) + "Constants";
+ string class_name = get_class_name(program_name_) + "Constants";
string file_name = get_file_name(class_name);
string f_consts_name = src_dir_ + "/" + file_name + ".dart";
@@ -2360,6 +2361,29 @@
return ret;
}
+std::string t_dart_generator::get_class_name(std::string name) {
+ // e.g. change my_great_model to MyGreatModel
+ string ret;
+ const char* tmp = name.c_str();
+ bool is_prev_underscore = true;
+
+ for (unsigned int i = 0; i < name.length(); i++) {
+ if (tmp[i] == '_') {
+ is_prev_underscore = true;
+ } else {
+ if (is_prev_underscore) {
+ ret += toupper(tmp[i]);
+ } else {
+ ret += tmp[i];
+ }
+
+ is_prev_underscore = false;
+ }
+ }
+
+ return ret;
+}
+
string t_dart_generator::constant_name(string name) {
string constant_name;