diff options
-rw-r--r-- | base/string_util.cc | 54 | ||||
-rw-r--r-- | base/string_util.h | 42 | ||||
-rw-r--r-- | base/string_util_unittest.cc | 8 | ||||
-rw-r--r-- | chrome/common/l10n_util.cc | 61 |
4 files changed, 83 insertions, 82 deletions
diff --git a/base/string_util.cc b/base/string_util.cc index ebab89b..2e6f7b3 100644 --- a/base/string_util.cc +++ b/base/string_util.cc @@ -1269,14 +1269,14 @@ void SplitStringAlongWhitespace(const std::wstring& str, } } -std::wstring ReplaceStringPlaceholders(const std::wstring& format_string, - const std::wstring& a, - size_t* offset) { +string16 ReplaceStringPlaceholders(const string16& format_string, + const string16& a, + size_t* offset) { std::vector<size_t> offsets; - std::wstring result = ReplaceStringPlaceholders(format_string, a, - std::wstring(), - std::wstring(), - std::wstring(), &offsets); + string16 result = ReplaceStringPlaceholders(format_string, a, + string16(), + string16(), + string16(), &offsets); DCHECK(offsets.size() == 1); if (offset) { *offset = offsets[0]; @@ -1284,41 +1284,41 @@ std::wstring ReplaceStringPlaceholders(const std::wstring& format_string, return result; } -std::wstring ReplaceStringPlaceholders(const std::wstring& format_string, - const std::wstring& a, - const std::wstring& b, - std::vector<size_t>* offsets) { - return ReplaceStringPlaceholders(format_string, a, b, std::wstring(), - std::wstring(), offsets); +string16 ReplaceStringPlaceholders(const string16& format_string, + const string16& a, + const string16& b, + std::vector<size_t>* offsets) { + return ReplaceStringPlaceholders(format_string, a, b, string16(), + string16(), offsets); } -std::wstring ReplaceStringPlaceholders(const std::wstring& format_string, - const std::wstring& a, - const std::wstring& b, - const std::wstring& c, - std::vector<size_t>* offsets) { - return ReplaceStringPlaceholders(format_string, a, b, c, std::wstring(), +string16 ReplaceStringPlaceholders(const string16& format_string, + const string16& a, + const string16& b, + const string16& c, + std::vector<size_t>* offsets) { + return ReplaceStringPlaceholders(format_string, a, b, c, string16(), offsets); } -std::wstring ReplaceStringPlaceholders(const std::wstring& format_string, - const std::wstring& a, - const std::wstring& b, - const std::wstring& c, - const std::wstring& d, +string16 ReplaceStringPlaceholders(const string16& format_string, + const string16& a, + const string16& b, + const string16& c, + const string16& d, std::vector<size_t>* offsets) { // We currently only support up to 4 place holders ($1 through $4), although // it's easy enough to add more. - const std::wstring* subst_texts[] = { &a, &b, &c, &d }; + const string16* subst_texts[] = { &a, &b, &c, &d }; - std::wstring formatted; + string16 formatted; formatted.reserve(format_string.length() + a.length() + b.length() + c.length() + d.length()); std::vector<ReplacementOffset> r_offsets; // Replace $$ with $ and $1-$4 with placeholder text if it exists. - for (std::wstring::const_iterator i = format_string.begin(); + for (string16::const_iterator i = format_string.begin(); i != format_string.end(); ++i) { if ('$' == *i) { if (i + 1 != format_string.end()) { diff --git a/base/string_util.h b/base/string_util.h index ca1fc05..c32bef3 100644 --- a/base/string_util.h +++ b/base/string_util.h @@ -556,27 +556,27 @@ void SplitStringAlongWhitespace(const std::wstring& str, // Replace $1-$2-$3 in the format string with |a| and |b| respectively. // Additionally, $$ is replaced by $. The offset/offsets parameter here can be // NULL. -std::wstring ReplaceStringPlaceholders(const std::wstring& format_string, - const std::wstring& a, - size_t* offset); - -std::wstring ReplaceStringPlaceholders(const std::wstring& format_string, - const std::wstring& a, - const std::wstring& b, - std::vector<size_t>* offsets); - -std::wstring ReplaceStringPlaceholders(const std::wstring& format_string, - const std::wstring& a, - const std::wstring& b, - const std::wstring& c, - std::vector<size_t>* offsets); - -std::wstring ReplaceStringPlaceholders(const std::wstring& format_string, - const std::wstring& a, - const std::wstring& b, - const std::wstring& c, - const std::wstring& d, - std::vector<size_t>* offsets); +string16 ReplaceStringPlaceholders(const string16& format_string, + const string16& a, + size_t* offset); + +string16 ReplaceStringPlaceholders(const string16& format_string, + const string16& a, + const string16& b, + std::vector<size_t>* offsets); + +string16 ReplaceStringPlaceholders(const string16& format_string, + const string16& a, + const string16& b, + const string16& c, + std::vector<size_t>* offsets); + +string16 ReplaceStringPlaceholders(const string16& format_string, + const string16& a, + const string16& b, + const string16& c, + const string16& d, + std::vector<size_t>* offsets); // If the size of |input| is more than |max_len|, this function returns true and // |input| is shortened into |output| by removing chars in the middle (they are diff --git a/base/string_util_unittest.cc b/base/string_util_unittest.cc index 9e55c10..c7b881e 100644 --- a/base/string_util_unittest.cc +++ b/base/string_util_unittest.cc @@ -1421,14 +1421,18 @@ TEST(StringUtilTest, StartsWith) { TEST(StringUtilTest, GetStringFWithOffsets) { std::vector<size_t> offsets; - ReplaceStringPlaceholders(L"Hello, $1. Your number is $2.", L"1", L"2", + ReplaceStringPlaceholders(ASCIIToUTF16("Hello, $1. Your number is $2."), + ASCIIToUTF16("1"), + ASCIIToUTF16("2"), &offsets); EXPECT_EQ(2U, offsets.size()); EXPECT_EQ(7U, offsets[0]); EXPECT_EQ(25U, offsets[1]); offsets.clear(); - ReplaceStringPlaceholders(L"Hello, $2. Your number is $1.", L"1", L"2", + ReplaceStringPlaceholders(ASCIIToUTF16("Hello, $2. Your number is $1."), + ASCIIToUTF16("1"), + ASCIIToUTF16("2"), &offsets); EXPECT_EQ(2U, offsets.size()); EXPECT_EQ(25U, offsets[0]); diff --git a/chrome/common/l10n_util.cc b/chrome/common/l10n_util.cc index fabd01c..cdb65d7 100644 --- a/chrome/common/l10n_util.cc +++ b/chrome/common/l10n_util.cc @@ -301,79 +301,76 @@ std::string GetStringUTF8(int message_id) { return WideToUTF8(GetString(message_id)); } -static std::wstring GetStringF(int message_id, - const std::wstring& a, - const std::wstring& b, - const std::wstring& c, - const std::wstring& d, - std::vector<size_t>* offsets) { - const std::wstring& format_string = GetString(message_id); - std::wstring formatted = ReplaceStringPlaceholders(format_string, a, b, c, - d, offsets); +static string16 GetStringF(int message_id, + const string16& a, + const string16& b, + const string16& c, + const string16& d, + std::vector<size_t>* offsets) { + // TODO(tc): ResourceBundle::GetLocalizedString should return a string16 + // so we can avoid this conversion on linux/mac. + const string16& format_string = WideToUTF16(GetString(message_id)); + string16 formatted = ReplaceStringPlaceholders(format_string, a, b, c, d, + offsets); return formatted; } -std::wstring GetStringF(int message_id, - const std::wstring& a) { - return GetStringF(message_id, a, std::wstring(), std::wstring(), - std::wstring(), NULL); +std::wstring GetStringF(int message_id, const std::wstring& a) { + return UTF16ToWide(GetStringF(message_id, WideToUTF16(a), string16(), + string16(), string16(), NULL)); } std::wstring GetStringF(int message_id, const std::wstring& a, const std::wstring& b) { - return GetStringF(message_id, a, b, std::wstring(), std::wstring(), NULL); + return UTF16ToWide(GetStringF(message_id, WideToUTF16(a), WideToUTF16(b), + string16(), string16(), NULL)); } std::wstring GetStringF(int message_id, const std::wstring& a, const std::wstring& b, const std::wstring& c) { - return GetStringF(message_id, a, b, c, std::wstring(), NULL); + return UTF16ToWide(GetStringF(message_id, WideToUTF16(a), WideToUTF16(b), + WideToUTF16(c), string16(), NULL)); } std::string GetStringFUTF8(int message_id, const string16& a) { - // TODO(tc): Once this whole file uses string16, we can drop the UTF16ToWide - // conversions. http://crbug.com/9911 - return WideToUTF8(GetStringF(message_id, UTF16ToWide(a))); + return UTF16ToUTF8(GetStringF(message_id, a, string16(), string16(), + string16(), NULL)); } std::string GetStringFUTF8(int message_id, const string16& a, const string16& b) { - // TODO(tc): Once this whole file uses string16, we can drop the UTF16ToWide - // conversions. http://crbug.com/9911 - return WideToUTF8(GetStringF(message_id, UTF16ToWide(a), UTF16ToWide(b))); + return UTF16ToUTF8(GetStringF(message_id, a, b, string16(), string16(), + NULL)); } std::string GetStringFUTF8(int message_id, const string16& a, const string16& b, const string16& c) { - // TODO(tc): Once this whole file uses string16, we can drop the UTF16ToWide - // conversions. http://crbug.com/9911 - return WideToUTF8(GetStringF(message_id, UTF16ToWide(a), UTF16ToWide(b), - UTF16ToWide(c))); + return UTF16ToUTF8(GetStringF(message_id, a, b, c, string16(), NULL)); } -std::wstring GetStringF(int message_id, - const std::wstring& a, - size_t* offset) { +std::wstring GetStringF(int message_id, const std::wstring& a, size_t* offset) { DCHECK(offset); std::vector<size_t> offsets; - std::wstring result = GetStringF(message_id, a, std::wstring(), - std::wstring(), std::wstring(), &offsets); + string16 result = GetStringF(message_id, WideToUTF16(a), string16(), + string16(), string16(), &offsets); DCHECK(offsets.size() == 1); *offset = offsets[0]; - return result; + return UTF16ToWide(result); } std::wstring GetStringF(int message_id, const std::wstring& a, const std::wstring& b, std::vector<size_t>* offsets) { - return GetStringF(message_id, a, b, std::wstring(), std::wstring(), offsets); + return UTF16ToWide(GetStringF(message_id, WideToUTF16(a), WideToUTF16(b), + string16(), string16(), offsets)); } std::wstring GetStringF(int message_id, int a) { |