| 80 | } |
| 81 | |
| 82 | static void process_replacements(std::string &str, std::deque<replacement> &replacements) { |
| 83 | |
| 84 | std::sort(replacements.begin(), replacements.end(), [](const auto &lhs, const auto &rhs) { |
| 85 | return lhs.pos < rhs.pos; |
| 86 | }); |
| 87 | |
| 88 | while (!replacements.empty()) { |
| 89 | |
| 90 | auto rep = std::move(replacements.front()); |
| 91 | |
| 92 | replacements.pop_front(); |
| 93 | |
| 94 | str.replace(lf::impl::checked_cast<std::size_t>(rep.pos), |
| 95 | lf::impl::checked_cast<std::size_t>(rep.len), |
| 96 | rep.text); |
| 97 | |
| 98 | for (auto &replace : replacements) { |
| 99 | replace.pos -= lf::impl::checked_cast<std::size_t>(rep.len) - rep.text.length(); |
| 100 | } |
| 101 | } |
| 102 | } |
| 103 | |
| 104 | fs::path m_start_path; |
| 105 | std::regex m_regex{include_regex}; |