/
githubmirror
/
PowerToys
Обзор
Документация
Войти
/
githubmirror
/
PowerToys
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/modules/powerrename/lib/Enumerating.cpp
46 строк
2 KB
moooyo
[PowerRename] Fix negative enumerate start parameter parse bug. (#37375)
18 фев 2025, 20:28
Не верифицирован
18 фев 2025, 20:28
ec136d7
Код
Авторство
О чём код?
#include <pch.h> #include "Enumerating.h" #include <common\utils\string_utils.h> std::vector<EnumOptions> parseEnumOptions(const std::wstring& replaceWith) { static const std::wregex enumStartRegex(LR"(start=(-?\d+))"); static const std::wregex enumIncrementRegex(LR"(increment=(-?\d+))"); static const std::wregex enumPaddingRegex(LR"(padding=(\d+))"); std::string buf; std::vector<EnumOptions> options; std::wregex enumGroupRegex(LR"(\$\{.*?\})"); for (std::wsregex_iterator i{ begin(replaceWith), end(replaceWith), enumGroupRegex }, end; i != end; ++i) { std::wsmatch match = *i; std::wstring matchString = match.str(); EnumOptions option; option.replaceStrSpan.offset = match.position(); option.replaceStrSpan.length = match.length(); std::wsmatch subMatch; if (std::regex_search(matchString, subMatch, enumStartRegex)) { buf = unwide(subMatch[1].str()); std::from_chars(buf.data(), buf.data() + buf.size(), option.start.emplace()); } if (std::regex_search(matchString, subMatch, enumIncrementRegex)) { buf = unwide(subMatch[1].str()); std::from_chars(buf.data(), buf.data() + buf.size(), option.increment.emplace()); } if (std::regex_search(matchString, subMatch, enumPaddingRegex)) { buf = unwide(subMatch[1].str()); std::from_chars(buf.data(), buf.data() + buf.size(), option.padding.emplace()); } options.emplace_back(std::move(option)); } return options; }