diff options
author | Alex Vakulenko <avakulenko@chromium.org> | 2015-02-26 10:16:12 -0800 |
---|---|---|
committer | ChromeOS Commit Bot <chromeos-commit-bot@chromium.org> | 2015-02-27 07:08:02 +0000 |
commit | 1485624e77ed53a3beba5ab6433b26f31f3607a2 (patch) | |
tree | ea9e46b58359abcf595021de8cac249941013de6 | |
parent | c4e01f1a41b5fce64a352f9a39f956c2586887af (diff) | |
download | dbus-binding-generator-1485624e77ed53a3beba5ab6433b26f31f3607a2.tar.gz |
chromeos-dbus-bindings: Handle all-uppercase identifiers gracefully
Properties such as 'UUID' were convered to 'u_u_i_d' while trying
to convert 'CamelCase' identifier to 'google_style' variable name.
Do not break up consecutive uppercase characters into separate
'words'.
BUG=brillo:387
TEST=FEATURES=test emerge-link chromeos-dbus-bindings
Change-Id: I541f12e33d1c36d9ae2cf9fdba5ca9e23096fc46
Reviewed-on: https://chromium-review.googlesource.com/254180
Reviewed-by: Christopher Wiley <wiley@chromium.org>
Commit-Queue: Alex Vakulenko <avakulenko@chromium.org>
Tested-by: Alex Vakulenko <avakulenko@chromium.org>
-rw-r--r-- | chromeos-dbus-bindings/name_parser.cc | 7 | ||||
-rw-r--r-- | chromeos-dbus-bindings/name_parser_unittest.cc | 10 |
2 files changed, 15 insertions, 2 deletions
diff --git a/chromeos-dbus-bindings/name_parser.cc b/chromeos-dbus-bindings/name_parser.cc index 33584d9..f920c04 100644 --- a/chromeos-dbus-bindings/name_parser.cc +++ b/chromeos-dbus-bindings/name_parser.cc @@ -46,12 +46,15 @@ std::string NameParser::MakeFullCppName() const { std::string NameParser::MakeVariableName() const { // Convert CamelCase name to google_style variable name. std::string result; + bool last_upper = true; for (char c : type_name) { - if (isupper(c)) { - if (!result.empty()) + bool is_upper = isupper(c); + if (is_upper) { + if (!last_upper) result += '_'; c = base::ToLowerASCII(c); } + last_upper = is_upper; result.push_back(c); } return result; diff --git a/chromeos-dbus-bindings/name_parser_unittest.cc b/chromeos-dbus-bindings/name_parser_unittest.cc index 62de4fe..25c6c92 100644 --- a/chromeos-dbus-bindings/name_parser_unittest.cc +++ b/chromeos-dbus-bindings/name_parser_unittest.cc @@ -50,6 +50,16 @@ TEST(NameParser, MakeVariableName_NoInitialCapital) { EXPECT_EQ("foo_bar_baz", parser.MakeVariableName()); } +TEST(NameParser, MakeVariableName_AllCapitals) { + NameParser parser{"UUID"}; + EXPECT_EQ("uuid", parser.MakeVariableName()); +} + +TEST(NameParser, MakeVariableName_MixedCapital) { + NameParser parser{"FOObarBaz"}; + EXPECT_EQ("foobar_baz", parser.MakeVariableName()); +} + TEST(NameParser, MakeInterfaceName) { NameParser parser{"foo.bar.FooBar"}; EXPECT_EQ("FooBarInterface", parser.MakeInterfaceName(false)); |