mirror of
https://github.com/flynx/colors.js.git
synced 2025-10-29 11:00:11 +00:00
105 lines
2.6 KiB
JavaScript
105 lines
2.6 KiB
JavaScript
// please no
|
|
module['exports'] = function zalgo(text, options) {
|
|
text = text || " he is here ";
|
|
var soul = {
|
|
"up" : [
|
|
'̍', '̎', '̄', '̅',
|
|
'̿', '̑', '̆', '̐',
|
|
'͒', '͗', '͑', '̇',
|
|
'̈', '̊', '͂', '̓',
|
|
'̈', '͊', '͋', '͌',
|
|
'̃', '̂', '̌', '͐',
|
|
'̀', '́', '̋', '̏',
|
|
'̒', '̓', '̔', '̽',
|
|
'̉', 'ͣ', 'ͤ', 'ͥ',
|
|
'ͦ', 'ͧ', 'ͨ', 'ͩ',
|
|
'ͪ', 'ͫ', 'ͬ', 'ͭ',
|
|
'ͮ', 'ͯ', '̾', '͛',
|
|
'͆', '̚'
|
|
],
|
|
"down" : [
|
|
'̖', '̗', '̘', '̙',
|
|
'̜', '̝', '̞', '̟',
|
|
'̠', '̤', '̥', '̦',
|
|
'̩', '̪', '̫', '̬',
|
|
'̭', '̮', '̯', '̰',
|
|
'̱', '̲', '̳', '̹',
|
|
'̺', '̻', '̼', 'ͅ',
|
|
'͇', '͈', '͉', '͍',
|
|
'͎', '͓', '͔', '͕',
|
|
'͖', '͙', '͚', '̣'
|
|
],
|
|
"mid" : [
|
|
'̕', '̛', '̀', '́',
|
|
'͘', '̡', '̢', '̧',
|
|
'̨', '̴', '̵', '̶',
|
|
'͜', '͝', '͞',
|
|
'͟', '͠', '͢', '̸',
|
|
'̷', '͡', ' ҉'
|
|
]
|
|
},
|
|
all = [].concat(soul.up, soul.down, soul.mid),
|
|
zalgo = {};
|
|
|
|
function randomNumber(range) {
|
|
var r = Math.floor(Math.random() * range);
|
|
return r;
|
|
}
|
|
|
|
function is_char(character) {
|
|
var bool = false;
|
|
all.filter(function (i) {
|
|
bool = (i === character);
|
|
});
|
|
return bool;
|
|
}
|
|
|
|
|
|
function heComes(text, options) {
|
|
var result = '', counts, l;
|
|
options = options || {};
|
|
options["up"] = options["up"] || true;
|
|
options["mid"] = options["mid"] || true;
|
|
options["down"] = options["down"] || true;
|
|
options["size"] = options["size"] || "maxi";
|
|
text = text.split('');
|
|
for (l in text) {
|
|
if (is_char(l)) {
|
|
continue;
|
|
}
|
|
result = result + text[l];
|
|
counts = {"up" : 0, "down" : 0, "mid" : 0};
|
|
switch (options.size) {
|
|
case 'mini':
|
|
counts.up = randomNumber(8);
|
|
counts.min = randomNumber(2);
|
|
counts.down = randomNumber(8);
|
|
break;
|
|
case 'maxi':
|
|
counts.up = randomNumber(16) + 3;
|
|
counts.min = randomNumber(4) + 1;
|
|
counts.down = randomNumber(64) + 3;
|
|
break;
|
|
default:
|
|
counts.up = randomNumber(8) + 1;
|
|
counts.mid = randomNumber(6) / 2;
|
|
counts.down = randomNumber(8) + 1;
|
|
break;
|
|
}
|
|
|
|
var arr = ["up", "mid", "down"];
|
|
for (var d in arr) {
|
|
var index = arr[d];
|
|
for (var i = 0 ; i <= counts[index]; i++) {
|
|
if (options[index]) {
|
|
result = result + soul[index][randomNumber(soul[index].length)];
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return result;
|
|
}
|
|
// don't summon him
|
|
return heComes(text, options);
|
|
}
|