Added ignore case modifier option
This commit is contained in:
parent
fde588d922
commit
06b93e3def
@ -38,12 +38,12 @@ bool ProcessSentence(std::wstring& sentence, SentenceInfo sentenceInfo)
|
|||||||
if (!sentenceInfo["current select"] || sentenceInfo["text number"] == 0) return false;
|
if (!sentenceInfo["current select"] || sentenceInfo["text number"] == 0) return false;
|
||||||
|
|
||||||
std::ifstream stream(REGEX_REPLACEMENTS_SAVE_FILE, std::ios::binary);
|
std::ifstream stream(REGEX_REPLACEMENTS_SAVE_FILE, std::ios::binary);
|
||||||
BlockMarkupIterator savedFilters(stream, Array<std::wstring_view>{ L"|REGEX|", L"|BECOMES|" });
|
BlockMarkupIterator savedFilters(stream, Array<std::wstring_view>{ L"|REGEX|", L"|BECOMES|", L"|MODIFIER|" });
|
||||||
concurrency::reader_writer_lock::scoped_lock_read readLock(m);
|
concurrency::reader_writer_lock::scoped_lock_read readLock(m);
|
||||||
while (auto read = savedFilters.Next()) {
|
while (auto read = savedFilters.Next()) {
|
||||||
const auto& [regex, replacement] = read.value();
|
const auto& [regex, replacement, modifier] = read.value();
|
||||||
if (regex == L"") continue;
|
std::wregex regexp(regex, (modifier == L"i") ? std::regex::ECMAScript | std::regex::icase : std::regex::ECMAScript);
|
||||||
try { ::regex = regex; }
|
try { ::regex = regexp; }
|
||||||
catch (std::regex_error) { continue; }
|
catch (std::regex_error) { continue; }
|
||||||
sentence = std::regex_replace(sentence, ::regex.value(), replacement);
|
sentence = std::regex_replace(sentence, ::regex.value(), replacement);
|
||||||
}
|
}
|
||||||
|
8
text.cpp
8
text.cpp
@ -226,7 +226,9 @@ Whitespace in original_text is ignored, but replacement_text can contain spaces,
|
|||||||
This file must be encoded in Unicode (UTF-16 Little Endian).)";
|
This file must be encoded in Unicode (UTF-16 Little Endian).)";
|
||||||
const wchar_t* REGEX_REPLACER_INSTRUCTIONS = LR"(This file only does anything when the "Regex Replacer" extension is used.
|
const wchar_t* REGEX_REPLACER_INSTRUCTIONS = LR"(This file only does anything when the "Regex Replacer" extension is used.
|
||||||
Replacement commands must be formatted like this:
|
Replacement commands must be formatted like this:
|
||||||
|REGEX|regular_expression|BECOMES|replacement_text|END|
|
|REGEX|regular_expression|BECOMES|replacement_text|MODIFIER|i|END|
|
||||||
|
If the "MODIFIER" parameter is set to "i" the replacement ignores the case.
|
||||||
|
Any other value is not considered and the replacement is case sensitive.
|
||||||
All text in this file outside of a replacement command is ignored.
|
All text in this file outside of a replacement command is ignored.
|
||||||
This file must be encoded in Unicode (UTF-16 Little Endian).
|
This file must be encoded in Unicode (UTF-16 Little Endian).
|
||||||
Learn, build, & test Regular Expressions: https://regexr.com/)";
|
Learn, build, & test Regular Expressions: https://regexr.com/)";
|
||||||
@ -939,7 +941,9 @@ La spaziatura nel testo_originale è ignorato, ma testo_sostituito può contener
|
|||||||
Questo file deve essere codificato in Unicode (UTF-16 Little Endian).)";
|
Questo file deve essere codificato in Unicode (UTF-16 Little Endian).)";
|
||||||
REGEX_REPLACER_INSTRUCTIONS = LR"(Questo file fa qualcosa solo quando l'estenzione "Regex Replacer" è utilizzata.
|
REGEX_REPLACER_INSTRUCTIONS = LR"(Questo file fa qualcosa solo quando l'estenzione "Regex Replacer" è utilizzata.
|
||||||
I comandi di sostituzione devono essere formattati cosi:
|
I comandi di sostituzione devono essere formattati cosi:
|
||||||
|REGEX|espressione_regolare|BECOMES|testo_sostituito|END|
|
|REGEX|espressione_regolare|BECOMES|testo_sostituito|MODIFIER|i|END|
|
||||||
|
Se il parametro "MODIFIER" è impostato a "i" la sostituzione ignora maiuscole/minuscole
|
||||||
|
Qualsiasi altro valore non è considerato e la sostituzione è case sensitive.
|
||||||
Tutto il testo in questo file all'infuori di un comando di sostituzione è ignorato.
|
Tutto il testo in questo file all'infuori di un comando di sostituzione è ignorato.
|
||||||
Questo file deve essere codificato in Unicode (UTF-16 Little Endian).
|
Questo file deve essere codificato in Unicode (UTF-16 Little Endian).
|
||||||
Apprendere, creare e testare Espressioni Regolari: https://regexr.com/)";
|
Apprendere, creare e testare Espressioni Regolari: https://regexr.com/)";
|
||||||
|
Loading…
Reference in New Issue
Block a user