Added quotes for strings in ranges and tuple likes.
This commit is contained in:
parent
1b8a7f8fa0
commit
d2bfee13e2
@ -162,6 +162,33 @@ void for_each(Tuple &&tup, F &&f) {
|
|||||||
const auto indexes = get_indexes(tup);
|
const auto indexes = get_indexes(tup);
|
||||||
for_each(indexes, std::forward<Tuple>(tup), std::forward<F>(f));
|
for_each(indexes, std::forward<Tuple>(tup), std::forward<F>(f));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template<typename Arg>
|
||||||
|
FMT_CONSTEXPR const char* format_str_quoted(bool add_space, const Arg&,
|
||||||
|
typename std::enable_if<!is_like_std_string<typename std::decay<Arg>::type>::value>::type* = nullptr) {
|
||||||
|
return add_space ? " {}" : "{}";
|
||||||
|
}
|
||||||
|
|
||||||
|
template<typename Arg>
|
||||||
|
FMT_CONSTEXPR const char* format_str_quoted(bool add_space, const Arg&,
|
||||||
|
typename std::enable_if<is_like_std_string<typename std::decay<Arg>::type>::value>::type* = nullptr) {
|
||||||
|
return add_space ? " \"{}\"" : "\"{}\"";
|
||||||
|
}
|
||||||
|
|
||||||
|
FMT_CONSTEXPR const char* format_str_quoted(bool add_space, const char*) {
|
||||||
|
return add_space ? " \"{}\"" : "\"{}\"";
|
||||||
|
}
|
||||||
|
FMT_CONSTEXPR const wchar_t* format_str_quoted(bool add_space, const wchar_t*) {
|
||||||
|
return add_space ? L" \"{}\"" : L"\"{}\"";
|
||||||
|
}
|
||||||
|
|
||||||
|
FMT_CONSTEXPR const char* format_str_quoted(bool add_space, const char) {
|
||||||
|
return add_space ? " '{}'" : "'{}'";
|
||||||
|
}
|
||||||
|
FMT_CONSTEXPR const wchar_t* format_str_quoted(bool add_space, const wchar_t) {
|
||||||
|
return add_space ? L" '{}'" : L"'{}'";
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace internal
|
} // namespace internal
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
@ -185,11 +212,7 @@ private:
|
|||||||
}
|
}
|
||||||
internal::copy(formatting.delimiter, out);
|
internal::copy(formatting.delimiter, out);
|
||||||
}
|
}
|
||||||
if (formatting.add_delimiter_spaces && i > 0) {
|
format_to(out, internal::format_str_quoted((formatting.add_delimiter_spaces && i > 0), v), v);
|
||||||
format_to(out, " {}", v);
|
|
||||||
} else {
|
|
||||||
format_to(out, "{}", v);
|
|
||||||
}
|
|
||||||
++i;
|
++i;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -252,11 +275,7 @@ struct formatter<RangeT, Char,
|
|||||||
}
|
}
|
||||||
internal::copy(formatting.delimiter, out);
|
internal::copy(formatting.delimiter, out);
|
||||||
}
|
}
|
||||||
if (formatting.add_delimiter_spaces && i > 0) {
|
format_to(out, internal::format_str_quoted((formatting.add_delimiter_spaces && i > 0), *it), *it);
|
||||||
format_to(out, " {}", *it);
|
|
||||||
} else {
|
|
||||||
format_to(out, "{}", *it);
|
|
||||||
}
|
|
||||||
if (++i > formatting.range_length_limit) {
|
if (++i > formatting.range_length_limit) {
|
||||||
format_to(out, " ... <other elements>");
|
format_to(out, " ... <other elements>");
|
||||||
break;
|
break;
|
||||||
|
@ -32,7 +32,7 @@ TEST(RangesTest, FormatVector2) {
|
|||||||
|
|
||||||
TEST(RangesTest, FormatMap) {
|
TEST(RangesTest, FormatMap) {
|
||||||
std::map<std::string, int32_t> simap{{"one", 1}, {"two", 2}};
|
std::map<std::string, int32_t> simap{{"one", 1}, {"two", 2}};
|
||||||
EXPECT_EQ("{(one, 1), (two, 2)}", fmt::format("{}", simap));
|
EXPECT_EQ("{(\"one\", 1), (\"two\", 2)}", fmt::format("{}", simap));
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST(RangesTest, FormatPair) {
|
TEST(RangesTest, FormatPair) {
|
||||||
@ -41,9 +41,9 @@ TEST(RangesTest, FormatPair) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST(RangesTest, FormatTuple) {
|
TEST(RangesTest, FormatTuple) {
|
||||||
std::tuple<int64_t, float, std::string> tu1{42, 3.14159265358979f,
|
std::tuple<int64_t, float, std::string, char> tu1{42, 3.14159265358979f,
|
||||||
"this is tuple"};
|
"this is tuple", 'i'};
|
||||||
EXPECT_EQ("(42, 3.14159, this is tuple)", fmt::format("{}", tu1));
|
EXPECT_EQ("(42, 3.14159, \"this is tuple\", 'i')", fmt::format("{}", tu1));
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Check if 'if constexpr' is supported.
|
/// Check if 'if constexpr' is supported.
|
||||||
@ -81,7 +81,7 @@ struct tuple_element<N, my_struct> {
|
|||||||
|
|
||||||
TEST(RangesTest, FormatStruct) {
|
TEST(RangesTest, FormatStruct) {
|
||||||
my_struct mst{13, "my struct"};
|
my_struct mst{13, "my struct"};
|
||||||
EXPECT_EQ("(13, my struct)", fmt::format("{}", mst));
|
EXPECT_EQ("(13, \"my struct\")", fmt::format("{}", mst));
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // (__cplusplus > 201402L) || (defined(_MSVC_LANG) && _MSVC_LANG >
|
#endif // (__cplusplus > 201402L) || (defined(_MSVC_LANG) && _MSVC_LANG >
|
||||||
|
Loading…
Reference in New Issue
Block a user