28 #include <ranges> |
28 #include <ranges> |
29 #include <chrono> |
29 #include <chrono> |
30 |
30 |
31 namespace chrono = std::chrono; |
31 namespace chrono = std::chrono; |
32 |
32 |
33 void fm::heatmap::add(const std::string &log) { |
33 void fm::heatmap::add(const fm::settings &settings, const std::string &log) { |
34 using std::string_view_literals::operator ""sv; |
34 using std::string_view_literals::operator ""sv; |
35 |
35 |
36 for (auto &&line: std::views::split(log, "\n"sv)) { |
36 for (auto &&line: std::views::split(log, "\n"sv)) { |
37 if (line.empty()) continue; |
37 if (line.empty()) continue; |
38 auto parts = std::views::split(line, "#"sv).begin(); |
38 auto parts = std::views::split(line, "#"sv).begin(); |
39 std::string author{(*parts).begin(), (*parts).end()}; |
39 std::string author{settings.map_author({(*parts).begin(), (*parts).end()})}; |
40 |
40 |
41 int year = 0; |
41 int year = 0; |
42 unsigned int month = 0, day = 0; |
42 unsigned int month = 0, day = 0; |
43 auto date_parts = std::views::split(*++parts, "-"sv) |
43 auto date_parts = std::views::split(*++parts, "-"sv) |
44 | std::views::transform([](auto r) { return std::string_view(r); }) |
44 | std::views::transform([](auto r) { return std::string_view(r); }) |