-
Notifications
You must be signed in to change notification settings - Fork 0
/
zalgo.js
40 lines (36 loc) · 1.24 KB
/
zalgo.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
var trials = require('trials');
var souls = [
[ // highs
'̍', '̎', '̄', '̅', '̿', '̑', '̆', '̐', '͒', '͗',
'͑', '̇', '̈', '̊', '͂', '̓', '̈', '͊', '͋', '͌',
'̃', '̂', '̌', '͐', '̀', '́', '̋', '̏', '̒', '̓',
'̔', '̽', '̉', 'ͣ', 'ͤ', 'ͥ', 'ͦ', 'ͧ', 'ͨ', 'ͩ',
'ͪ', 'ͫ', 'ͬ', 'ͭ', 'ͮ', 'ͯ', '̾', '͛', '͆', '̚'
],
[ // mids
'̕', '̛', '̀', '́', '͘', '̡', '̢', '̧', '̨', '̴', '̵',
'̶', '͜', '͝', '͞', '͟', '͠', '͢', '̸', '̷', '͡', '҉'
],
[ // lows
'̖', '̗', '̘', '̙', '̜', '̝', '̞', '̟', '̠', '̤',
'̥', '̦', '̩', '̪', '̫', '̬', '̭', '̮', '̯', '̰',
'̱', '̲', '̳', '̹', '̺', '̻', '̼', 'ͅ', '͇', '͈',
'͉', '͍', '͎', '͓', '͔', '͕', '͖', '͙', '͚', '̣'
]
];
var zalgo = module.exports = function (str, p, maxs) {
maxs = maxs || [5, 3, 5];
p = p || 0.2;
var res = '';
for (var i = 0; i < str.length; i += 1) {
res += str[i];
for (var k = 0; k < souls.length; k += 1) {
res += trials.cluster(souls[k], maxs[k], p).join('');
}
}
return res;
};
// in case people want to attempt sanitize a string
zalgo.souls = function () {
return souls;
};