fix accidental split of commit messages - relates to #644 default tip

Sun, 29 Jun 2025 13:51:42 +0200

author
Mike Becker <universe@uap-core.de>
date
Sun, 29 Jun 2025 13:51:42 +0200
changeset 55
3541b2c77dfd
parent 54
586dcd606e47

fix accidental split of commit messages - relates to #644

src/heatmap.cpp file | annotate | diff | comparison | revisions
--- a/src/heatmap.cpp	Sat Jun 28 11:32:08 2025 +0200
+++ b/src/heatmap.cpp	Sun Jun 29 13:51:42 2025 +0200
@@ -35,14 +35,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);
@@ -51,8 +56,7 @@
         auto &[summaries] = m_heatmap[m_current_repo][author][chrono::year_month_day{
             chrono::year{year}, chrono::month{month}, chrono::day{day}
         }];
-        ++parts_iter;
-        summaries.emplace_back(std::string_view{*parts_iter});
+        summaries.emplace_back(summary_view);
     }
 }
 

mercurial