@favware/zalgo
Version:
Invoke and banish the power of the Zalgo Monster
3 lines (2 loc) • 2.81 kB
JavaScript
const t={up:["̍","̎","̄","̅","̿","̑","̆","̐","͒","͗","͑","̇","̈","̊","͂","̓","̈́","͊","͋","͌","̃","̂","̌","͐","̀","́","̋","̏","̒","̓","̔","̽","̉","ͣ","ͤ","ͥ","ͦ","ͧ","ͨ","ͩ","ͪ","ͫ","ͬ","ͭ","ͮ","ͯ","̾","͛","͆","̚"],middle:["̕","̛","̀","́","͘","̡","̢","̧","̨","̴","̵","̶","͏","͜","͝","͞","͟","͠","͢","̸","̷","͡","҉"],down:["̖","̗","̘","̙","̜","̝","̞","̟","̠","̤","̥","̦","̩","̪","̫","̬","̭","̮","̯","̰","̱","̲","̳","̹","̺","̻","̼","ͅ","͇","͈","͉","͍","͎","͓","͔","͕","͖","͙","͚","̣"]};t.all=[...t.up,...t.middle,...t.down],t.pattern=RegExp(`(${t.all.join("|")})`,"g");const randomizer=t=>~~(Math.random()*t),zalgo=(e,n={up:!0,middle:!0,down:!0,size:""})=>{try{if(!e)throw new Error("no_input");if("string"!=typeof e)throw new Error("not_a_string");Reflect.has(n,"up")||(n.up=!0),Reflect.has(n,"middle")||(n.middle=!0),Reflect.has(n,"down")||(n.down=!0),Reflect.has(n,"size")||(n.size="");const u=(t=>{const e=/([\uD800-\uDBFF])([\uDC00-\uDFFF])([\uD800-\uDBFF])?([\uDC00-\uDFFF])?|([0-9])?([\0-\u02FF\u0370-\u1AAF\u1B00-\u1DBF\u1E00-\u20CF\u2100-\uD7FF\uE000-\uFE1F\uFE30-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])([\u0300-\u036F\u1AB0-\u1AFF\u1DC0-\u1DFF\u20D0-\u20FF\uFE20-\uFE2F\uFE0F]+)/g,n=t.replace(e,"•").split("");let u,r=0;for(;u=e.exec(t);)u.index-=r,r+=u[0].length-1,n.splice(u.index,1,u[0]);return n})(e),r=u.length;let i,o="";const s=[];n.up&&s.push("up"),n.middle&&s.push("middle"),n.down&&s.push("down");for(let F=0;F<r;F++)if(!t.pattern.test(u[F]))if(u[F].length>1)o+=u[F];else{i={up:0,middle:0,down:0},i="mini"===n.size?{up:randomizer(8),middle:randomizer(2),down:randomizer(8)}:"maxi"===n.size?{up:randomizer(16)+3,middle:randomizer(4)+1,down:randomizer(64)+3}:{up:randomizer(8)+1,middle:randomizer(3),down:randomizer(8)+1},o+=e[F];for(let e=0,n=s.length;e<n;e++){const n=s[e];let u=i[n];const r=t[n],F=r.length-1;for(;u--;)o+=r[randomizer(F)]}}return o}catch(t){if(/(?:no_input)/i.test(t.message))throw SyntaxError("The zalgo function at least requires some text as input!");if(/(?:not_a_string)/i.test(t.message))throw new SyntaxError("The zalgo function expects input of type string as first argument!");throw t}},banish=e=>{try{if(!e)throw new Error("no_input");if("string"!=typeof e)throw new Error("not_a_string");return e.replace(t.pattern,"")}catch(t){if(/(?:no_input)/i.test(t.message))throw new SyntaxError("The banish function at least requires some text as input!");if(/(?:not_a_string)/i.test(t.message))throw new SyntaxError("The banish function expects input of type string as first argument!");throw t}};export{banish,t as chars,zalgo as default,zalgo};
//# sourceMappingURL=index.mjs.map