Added format_to(buffer, text_style, ...) overload

This commit is contained in:
Eclipse842 2020-12-18 17:30:30 -08:00
parent e737672614
commit 5e705209d8
2 changed files with 19 additions and 0 deletions

View File

@ -618,6 +618,16 @@ inline auto format_to(OutputIt out, const text_style& ts, const S& format_str,
fmt::make_args_checked<Args...>(format_str, args...));
}
template <typename S, typename... Args, size_t SIZE = inline_buffer_size,
typename Char = enable_if_t<detail::is_string<S>::value, char_t<S>>>
inline typename buffer_context<Char>::iterator format_to(
basic_memory_buffer<Char, SIZE>& buf, const text_style& ts,
const S& format_str, Args&&... args) {
const auto& vargs = fmt::make_args_checked<Args...>(format_str, args...);
detail::vformat_to(buf, ts, to_string_view(format_str), vargs);
return detail::buffer_appender<Char>(buf);
}
FMT_END_NAMESPACE
#endif // FMT_COLOR_H_

View File

@ -97,3 +97,12 @@ TEST(ColorsTest, FormatToOutAcceptsTextStyle) {
EXPECT_EQ(fmt::to_string(out),
"\x1b[38;2;255;020;030mrgb(255,20,30)123\x1b[0m");
}
TEST(ColorsTest, FormatToBufAcceptsTextStyle) {
fmt::text_style ts = fg(fmt::rgb(255, 20, 30));
fmt::memory_buffer buf;
fmt::format_to(buf, ts, "rgb(255,20,30){}{}{}", 1, 2, 3);
EXPECT_EQ(std::string(buf.data(), buf.size()),
"\x1b[38;2;255;020;030mrgb(255,20,30)123\x1b[0m");
}