Text¶
Text processing utilities for splitting and filtering.
#include <dftracer/utils/utilities/text/line_splitter.h>
#include <dftracer/utils/utilities/text/line_filter.h>
#include <dftracer/utils/utilities/text/multi_lines_filter.h>
LineSplitterUtility¶
Splits text into lines with line numbers.
LineSplitterUtility splitter;
Text content{"line1\nline2\nline3"};
Lines lines = splitter.process(content);
for (const auto& line : lines) {
std::cout << line.line_number << ": " << line.content << "\n";
}
// Output:
// 1: line1
// 2: line2
// 3: line3
LineFilterUtility¶
Filters a single line based on predicate.
struct FilterableLine {
Line line;
std::function<bool(const Line&)> predicate;
};
LineFilterUtility filter;
FilterableLine input{
Line{"error: something failed", 42},
[](const Line& l) { return l.content.find("error") != std::string_view::npos; }
};
std::optional<Line> result = filter.process(input);
if (result) {
std::cout << "Matched: " << result->content << "\n";
}
MultiLinesFilterUtility¶
Batch filtering of multiple lines.
MultiLinesFilterUtility filter;
// Set predicate
filter.set_predicate([](const Line& l) {
return l.content.find("TRACE") != std::string_view::npos;
});
Lines input = /* ... */;
Lines filtered = filter.process(input);
std::cout << "Filtered " << filtered.size() << " lines\n";