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'; DEACTIVATE_KEY = 'deactivate-this-extension-pls-interactive-fics-yalla-bina';
chrome.runtime.onMessage.addListener((message, sender, sendResponse) => { 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 = () => { const replaceAll = () => {
@ -11,17 +11,18 @@ const replaceAll = () => {
if (key == 'person') { if (key == 'person') {
const regexp_y_n = /\by\/n\b|\(y\/n\)|\[y\/n\]/ig const regexp_y_n = /\by\/n\b|\(y\/n\)|\[y\/n\]/ig
replace(regexp_y_n, items[key]) replace(regexp_y_n, items[key])
} else if (key !== DEACTIVATE_KEY) { } else if (key !== DEACTIVATE_KEY && !key.endsWith('_case_sensitive')) {
escapeAndReplace(key, items[key]) 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 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) replace(regexp_input_word, replace_value)
} }

View File

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

View File

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

View File

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