cancercase
Version:
Turn text to cancer, one char at a time
1 lines • 1.26 kB
JavaScript
const leetMap=require("./assets/leetMap"),leetWords=require("./assets/leetWords"),accentMap=require("./assets/accentMap"),biMap=require("./assets/biMap");class CaNCeRcASe{constructor(a){if(!a)throw new Error("I cannot cancerify what is undefined you see.");this.text=a.toString(),this.chars=this.text.split("")}cancerify(){return this.chars.map((a,b)=>b%2?a.toLowerCase():a.toUpperCase()).join("")}leetify(){let a=new RegExp(Object.keys(leetWords).join("|")),b=this.text.replace(a,c=>leetWords[c]).split("");return b.map(c=>{return c=c.toLowerCase(),leetMap[c]?leetMap[c]:c}).join("")}accentify(){return this.chars.map(a=>{if(a=a.toLowerCase(),accentMap[a]){let b=Math.floor(Math.random()*accentMap[a].length);return accentMap[a][b]}return a}).join("")}spacify(){return this.chars.join(" ")}crampify(){return this.text.replace(/\s/g,"")}binarify(){return this.chars.map(a=>biMap[a]===void 0?a:biMap[a]).join("")}titlecasify(){return this.text.split(" ").map(a=>a[0].toUpperCase()+a.slice(1)).join(" ")}treeify(){let a=[],b=0,c=d=>2*d+1;for(let d of this.chars)a[b]||(a[b]=[]),a[b].push(d),a[b].length>c(b)&&b++;for(let[d,f]of a.entries()){let g=a.length-1-d;f=f.join(""),a[d]=f;for(let h=0;h<g;h++)f=" "+f,a[d]=f}return a.join("\n")}}module.exports=CaNCeRcASe;