26 #include <boost/range/iterator_range.hpp>
27 #include <boost/algorithm/string/split.hpp>
28 #include <boost/algorithm/string/classification.hpp>
34 : std::ostream(&m_buffer)
35 , m_buffer(os, indent)
44 IndentedStream::StreamBuf::StreamBuf(std::ostream& os,
const std::string& indent)
51 IndentedStream::StreamBuf::sync()
53 typedef boost::iterator_range<std::string::const_iterator> StringView;
55 const std::string& output = str();
56 std::vector<StringView> splitOutput;
57 boost::split(splitOutput, output, boost::is_any_of(
"\n"));
59 if (!splitOutput.empty() && splitOutput.back().empty()) {
60 splitOutput.pop_back();
62 for (
const StringView& line : splitOutput) {
63 m_output << m_indent << line <<
"\n";
~IndentedStream() override
IndentedStream(std::ostream &os, const std::string &indent)