Skip to content

Instantly share code, notes, and snippets.

@xTCry
Created January 8, 2019 00:24
Show Gist options
  • Save xTCry/4b72898d761ed750450b0ea5e9e7105d to your computer and use it in GitHub Desktop.
Save xTCry/4b72898d761ed750450b0ea5e9e7105d to your computer and use it in GitHub Desktop.
Smart Replacing Expletives
console.log("\n\n-------------");
const isUpperCase = (m)=> (m == m.toUpperCase()),
isLowerCase = (m) => (m == m.toLowerCase());
const isArr = Array.isArray;
class VjuhSwear {
constructor(text) {
this.text = text;
}
// Обычная замена
v(swearRegex, word) {
var re = new RegExp("([^а-яё]|^)("+swearRegex+")(?=[^а-яё]|$)", "gi");
// console.log(re);
var res = this.text.replace(re, function( full, m1, m2 ) {
console.log("full:", full);
console.log("m1:", m1);
console.log("m2:", m2);
console.log("arguments:", arguments);
if ( m2.charAt(0).toUpperCase() == m2.charAt(0) ) {
return m1 + word.charAt(0).toUpperCase() + word.slice(1);
}
else {
return m1 + word;
}
});
return res;
}
// Smart
// [ "б", "л", "я" ], [ "б", "лэнч" ]
s(swearArr, word) {
var ms = swearArr.map(s=> ( "("+s+")+" ) ).join("");
var re = new RegExp("([^а-яё]|^)"+ms+"(?=[^а-яё]|$)", "gi");
console.log(re);
var res = this.text.replace(re, function( full, m1, m2 ) {
if(isUpperCase(m2)) {
return m1 + word[0].toUpperCase() + word.join("").slice(1);
}
else
return m1 + word.join("");
});
return res;
}
}
var vj = new VjuhSwear("та ББллляяяЯяЯ, как так таа");
var repl = ["б", "л", ["э"], "нч"];
// var t = vj.v("(б)+(л)+(я)+(\\s|^|\"|,|!|\\?|.|)", repl);
var t = vj.s([ "б", "л", "я" ], repl);
console.log("t:", t);
// var t2 = vj.v("(\\s|^|\"|«|\\()бл(я)+(\\s|^|\"|,|!|\\?|.|)", "блэнч");
// console.log("t2:", t2);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment