aboutsummaryrefslogtreecommitdiffstats
path: root/library/cpp/string_utils/indent_text/indent_text.cpp
blob: e2fb1d69d05a9fd95eeeea28e8e2c792b1da2817 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include "indent_text.h" 
 
#include <util/stream/str.h>

TString IndentText(TStringBuf text, TStringBuf indent) {
    if (text.empty())
        return TString();

    TStringStream ss;
    ss.Reserve(text.size() + 20);

    char pc = 0;
    for (size_t i = 0; i < text.size(); ++i) {
        if (i == 0 || pc == '\n')
            ss << indent;

        char c = text.at(i);
        ss << c;
        pc = c;
    }
    if (pc != '\n')
        ss << '\n';

    return ss.Str();
}