Tue, 15 Jul 2025 19:18:15 +0200
merge changes
src/heatmap.cpp | file | annotate | diff | comparison | revisions |
--- a/src/heatmap.cpp Tue Jul 15 19:14:29 2025 +0200 +++ b/src/heatmap.cpp Tue Jul 15 19:18:15 2025 +0200 @@ -36,14 +36,19 @@ for (auto line: std::views::split(log, "\n"sv)) { if (line.empty()) continue; - auto parts = std::views::split(line, "#"sv); - auto parts_iter = parts.begin(); - std::string author{settings.map_author(std::string_view{*parts_iter})}; + + // find all delimiters + const auto line_view = std::string_view{line}; + const auto pos_delim1 = line_view.find('#', 0); + const auto pos_delim2 = line_view.find('#', pos_delim1 + 1); + + std::string author{settings.map_author(line_view.substr(0, pos_delim1))}; + std::string_view date_view{line_view.substr(pos_delim1+1, pos_delim2)}; + std::string_view summary_view{line_view.substr(pos_delim2+1)}; int year = 0; unsigned int month = 0, day = 0; - ++parts_iter; - auto date_parts = std::views::split(*parts_iter, "-"sv) + auto date_parts = std::views::split(date_view, "-"sv) | std::views::transform([](auto r) { return std::string_view(r); }) | std::ranges::to<std::vector>(); std::from_chars(date_parts[0].begin(), date_parts[0].end(), year); @@ -52,8 +57,7 @@ auto &[summaries] = m_heatmap[repo_key][author][chrono::year_month_day{ chrono::year{year}, chrono::month{month}, chrono::day{day} }]; - ++parts_iter; - summaries[m_current_repo].emplace_back(std::string_view{*parts_iter}); + summaries[m_current_repo].emplace_back(summary_view); } }