Make case sensitive replacement an option

This commit is contained in:
Mariam Maarouf 2019-10-19 12:35:59 +02:00
parent ca8731b8dc
commit 8fbdb38d18
4 changed files with 18 additions and 10 deletions

View File

@ -1,7 +1,7 @@
DEACTIVATE_KEY = 'deactivate-this-extension-pls-interactive-fics-yalla-bina';
chrome.runtime.onMessage.addListener((message, sender, sendResponse) => {
escapeAndReplace(message.input_word, message.replace_value)
escapeAndReplace(message.input_word, message.replace_value, message.case_sensitive)
});
const replaceAll = () => {
@ -11,17 +11,18 @@ const replaceAll = () => {
if (key == 'person') {
const regexp_y_n = /\by\/n\b|\(y\/n\)|\[y\/n\]/ig
replace(regexp_y_n, items[key])
} else if (key !== DEACTIVATE_KEY) {
escapeAndReplace(key, items[key])
} else if (key !== DEACTIVATE_KEY && !key.endsWith('_case_sensitive')) {
escapeAndReplace(key, items[key], items[`${key}_case_sensitive`])
}
}
}
})
}
const escapeAndReplace = (input_word, replace_value) => {
const escapeAndReplace = (input_word, replace_value, case_sensitive) => {
const input_word_escaped = escapeRegExp(input_word.trim())
const regexp_input_word = new RegExp(`\\b${input_word_escaped}\\b`, "ig")
const flags = case_sensitive ? "g" : "ig"
const regexp_input_word = new RegExp(`\\b${input_word_escaped}\\b`, flags)
replace(regexp_input_word, replace_value)
}

View File

@ -21,10 +21,10 @@ label *:not([type="checkbox"]){
}
.other-words input:not([type="checkbox"]){
margin-top:0.2em;
margin-top:0.5em;
width:100%;
}
.other-words .other, .other-words .replaceBy{
.other-words .other, .other-words .replace-with{
width:98%;
}
.other-words .change{

View File

@ -24,11 +24,15 @@
<span>Value (e.g. L/N, E/C, etc):</span>
<input type="text" id="replace-word" class="other"/>
</label>
<br>
<label>
<input type="checkbox" id="is-case-sensitive">Case sensitive
</label>
<br><br>
<label>
<span>Replace with:</span>
<input type="text" id="replace-with" class="replaceBy"/>
<input type="text" id="replace-with" class="replace-with"/>
</label>
<br>
<label>
<input type="checkbox" id="is-perm">Store this replacement
</label>

View File

@ -27,10 +27,12 @@ const clearName = () => {
const replaceOther = () => {
const input_word = document.getElementById('replace-word').value
const replacement = document.getElementById('replace-with').value
const is_case_sensitive = document.getElementById('is-case-sensitive').checked
if (input_word && replacement) {
if (document.getElementById('is-perm').checked) {
const obj = {}
obj[input_word] = replacement
obj[`${input_word}_case_sensitive`] = is_case_sensitive
chrome.storage.local.set(obj)
}
@ -39,7 +41,8 @@ const replaceOther = () => {
tabs[0].id,
{
input_word: input_word,
replace_value: replacement
replace_value: replacement,
case_sensitive: is_case_sensitive
})
})
}