├── demos └── index.html ├── zalgo.js ├── jquery.zalgo-0.0.0000001.js └── ReadMe.md /demos/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Xxo 5 | 6 | 7 | 8 | 11 | 12 | 13 |
Then there was all this spaghetti in my pockets
14 |
But I could have lost a lot more.
15 |
And this is my poetry slam.
16 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /zalgo.js: -------------------------------------------------------------------------------- 1 | var sys = require('sys'); 2 | 3 | var soul = { 4 | "up" : [ 5 | '̍','̎','̄','̅', 6 | '̿','̑','̆','̐', 7 | '͒','͗','͑','̇', 8 | '̈','̊','͂','̓', 9 | '̈','͊','͋','͌', 10 | '̃','̂','̌','͐', 11 | '̀','́','̋','̏', 12 | '̒','̓','̔','̽', 13 | '̉','ͣ','ͤ','ͥ', 14 | 'ͦ','ͧ','ͨ','ͩ', 15 | 'ͪ','ͫ','ͬ','ͭ', 16 | 'ͮ','ͯ','̾','͛', 17 | '͆','̚' 18 | ], 19 | "down" : [ 20 | '̖','̗','̘','̙', 21 | '̜','̝','̞','̟', 22 | '̠','̤','̥','̦', 23 | '̩','̪','̫','̬', 24 | '̭','̮','̯','̰', 25 | '̱','̲','̳','̹', 26 | '̺','̻','̼','ͅ', 27 | '͇','͈','͉','͍', 28 | '͎','͓','͔','͕', 29 | '͖','͙','͚','̣' 30 | ], 31 | "mid" : [ 32 | '̕','̛','̀','́', 33 | '͘','̡','̢','̧', 34 | '̨','̴','̵','̶', 35 | '͜','͝','͞', 36 | '͟','͠','͢','̸', 37 | '̷','͡',' ҉' 38 | ] 39 | }; 40 | 41 | var all = [].concat(soul.up, soul.down, soul.mid); 42 | 43 | var zalgo = {}; 44 | 45 | function randomNumber(range) { 46 | r = Math.floor(Math.random()*range); 47 | return r; 48 | }; 49 | 50 | function is_char(character) { 51 | var bool = false; 52 | all.filter(function(i){ 53 | bool = (i == character); 54 | }); 55 | return bool; 56 | } 57 | 58 | zalgo.heComes = function(text, options){ 59 | result = ''; 60 | 61 | options = options || {}; 62 | options["up"] = options["up"] || true; 63 | options["mid"] = options["mid"] || true; 64 | options["down"] = options["down"] || true; 65 | options["size"] = options["size"] || "maxi"; 66 | var counts; 67 | text = text.split(''); 68 | for(var l in text){ 69 | if(is_char(l)) { continue; } 70 | result = result + text[l]; 71 | 72 | counts = {"up" : 0, "down" : 0, "mid" : 0}; 73 | 74 | switch(options.size) { 75 | case 'mini': 76 | counts.up = randomNumber(8); 77 | counts.min= randomNumber(2); 78 | counts.down = randomNumber(8); 79 | break; 80 | case 'maxi': 81 | counts.up = randomNumber(16) + 3; 82 | counts.min = randomNumber(4) + 1; 83 | counts.down = randomNumber(64) + 3; 84 | break; 85 | default: 86 | counts.up = randomNumber(8) + 1; 87 | counts.mid = randomNumber(6) / 2; 88 | counts.down= randomNumber(8) + 1; 89 | break; 90 | } 91 | 92 | var arr = ["up", "mid", "down"]; 93 | for(var d in arr){ 94 | var index = arr[d]; 95 | for (var i = 0 ; i <= counts[index]; i++) 96 | { 97 | if(options[index]) { 98 | result = result + soul[index][randomNumber(soul[index].length)]; 99 | } 100 | } 101 | } 102 | } 103 | return result; 104 | }; 105 | 106 | sys.puts('\n\n\n\n\n\n\n'); 107 | sys.puts(zalgo.heComes('its a chain')); 108 | sys.puts('\n\n\n\n\n\n\n'); 109 | 110 | -------------------------------------------------------------------------------- /jquery.zalgo-0.0.0000001.js: -------------------------------------------------------------------------------- 1 | (function ($) { 2 | var soul = { 3 | "up" : [ 4 | '̍','̎','̄','̅', 5 | '̿','̑','̆','̐', 6 | '͒','͗','͑','̇', 7 | '̈','̊','͂','̓', 8 | '̈','͊','͋','͌', 9 | '̃','̂','̌','͐', 10 | '̀','́','̋','̏', 11 | '̒','̓','̔','̽', 12 | '̉','ͣ','ͤ','ͥ', 13 | 'ͦ','ͧ','ͨ','ͩ', 14 | 'ͪ','ͫ','ͬ','ͭ', 15 | 'ͮ','ͯ','̾','͛', 16 | '͆','̚' 17 | ], 18 | "down" : [ 19 | '̖','̗','̘','̙', 20 | '̜','̝','̞','̟', 21 | '̠','̤','̥','̦', 22 | '̩','̪','̫','̬', 23 | '̭','̮','̯','̰', 24 | '̱','̲','̳','̹', 25 | '̺','̻','̼','ͅ', 26 | '͇','͈','͉','͍', 27 | '͎','͓','͔','͕', 28 | '͖','͙','͚','̣' 29 | ], 30 | "mid" : [ 31 | '̕','̛','̀','́', 32 | '͘','̡','̢','̧', 33 | '̨','̴','̵','̶', 34 | '͜','͝','͞', 35 | '͟','͠','͢','̸', 36 | '̷','͡',' ҉' 37 | ] 38 | }; 39 | 40 | var all = [].concat(soul.up, soul.down, soul.mid); 41 | 42 | var zalgo = {}; 43 | 44 | function randomNumber(range) { 45 | r = Math.floor(Math.random()*range); 46 | return r; 47 | }; 48 | 49 | function is_char(character) { 50 | var bool = false; 51 | all.filter(function(i){ 52 | bool = (i == character); 53 | }); 54 | return bool; 55 | } 56 | 57 | $.zalgo = { "heComes" : function(text, options){ 58 | result = ''; 59 | 60 | options = options || {}; 61 | options["up"] = options["up"] || true; 62 | options["mid"] = options["mid"] || true; 63 | options["down"] = options["down"] || true; 64 | options["size"] = options["size"] || "maxi"; 65 | var counts; 66 | text = text.split(''); 67 | for(var l in text){ 68 | if(is_char(l)) { continue; } 69 | result = result + text[l]; 70 | 71 | counts = {"up" : 0, "down" : 0, "mid" : 0}; 72 | 73 | switch(options.size) { 74 | case 'mini': 75 | counts.up = randomNumber(8); 76 | counts.min= randomNumber(2); 77 | counts.down = randomNumber(8); 78 | break; 79 | case 'maxi': 80 | counts.up = randomNumber(16) + 3; 81 | counts.min = randomNumber(4) + 1; 82 | counts.down = randomNumber(64) + 3; 83 | break; 84 | default: 85 | counts.up = randomNumber(8) + 1; 86 | counts.mid = randomNumber(6) / 2; 87 | counts.down= randomNumber(8) + 1; 88 | break; 89 | } 90 | 91 | var arr = ["up", "mid", "down"]; 92 | for(var d in arr){ 93 | var index = arr[d]; 94 | for (var i = 0 ; i <= counts[index]; i++) 95 | { 96 | if(options[index]) { 97 | result = result + soul[index][randomNumber(soul[index].length)]; 98 | } 99 | } 100 | } 101 | } 102 | return result; 103 | }}; 104 | 105 | $.fn.heComes = function (opts) { 106 | this.each(function (opts) { 107 | $(this).text($.zalgo.heComes($.trim($(this).text()), opts)); 108 | }); 109 | } 110 | 111 | })(jQuery); 112 | -------------------------------------------------------------------------------- /ReadMe.md: -------------------------------------------------------------------------------- 1 | ï͈̦͚̗̙͕̳͈̩͇̮̺̞̫͍͙̠͎̥̱͇̘̞͇̟͍̼̯̫̼͙͈̭̲̘͚̯̝̙̩͐ͨ̔ͪ̍̌̽͂ͩͤͫ̌̾ͪͫ̏ͩͅt͎̠͔̼̯̗͈̫͑ͬ̈͊ͣͭ̐́ͬ̍̈͊̇ͩ̿ͬ̇̿͛ ̱͓͖̭̩̱͚͍̤̮͔̼̪̭̩̖̘̰̫̥̪̱͖͖̫̥̯͙̻̤̳̖͓͔̣͚ͨͮͧ̄̆ͪ̇̄͐ͩ̋ͭ͂̋ͥṣ͈͈͓̱̯̝͙͕̻̟͖̼̼̫̟̱̰̩̞̹̦͔͉̖̫̘̣͔̜̮̹̹̼͎̲̟̖̯̟̝̫̥̪͕̜̜̙̩͉͕̅̍̉̓ͨ͗̋͗̽̊͌ͪ̾̋͛̌ͪ̾̚ͅṯ͖̫͚͓̬̞̘͈̺̺̳̭̘͙͈̲͈͉̹͕̳̩͎̘͎̫̹̗̼̣̻̙͇̭͙̭̲̅ͨ̓͋̉̉̄ȁ̺̗͇̮̘͓̜̫̟̼̭̠̩̗̬̘̯̰̪̲͓̟̤͕͚̤̳̤̜̭̫̫̮͚̞͕̼͔͓̙̹̝͙̙͓̳̬̯̣̭̝͓̦̝̤͙̬ͯ̇̐̈ͩͅͅr̞̼̹̗͓͔̳̘͈͓̙̙̺̖̹̖̬̯̙̜̪̬̞͉̥̙̺͙̲͚͖̖̭̠̺͈̩͙̰̪̞̗̼͚̬͔̫͈͍͇̰̤̣̍̌͑ͪ̈ͧͩ̈̑̍̈̈̚ͅṯ̦̹̝͍͈̜͕͍͇̪̗̦̏̌ͩ̈͆ͦ͒͊ͩͦ͐͌͊̊ͯͩ̎͂ͅe͙̻͙̠͎͓͖̟̻̖̘͉̹̩̙̭͚̫̪͓̤̤͖̯͓͚͔̠̟̟͈̬̣̬̟̘̜̗͖̭̥̳͎͕̪̙̮̮̼̤̖̙̩̼̤͕̣̱̻̞̺̎̈̉̃͒ͮ͐ͅd̤̻̯̺̰̖̫̪͙͔̣̖̲̹̠̩̟͇̭̹̱̯̪̮̬̭̯̬̞̜̼͙͇̮̻̲̟͓̥̣̼̮͉͕̫̦͔̟̭̥̻̳̩̻̙̥̩̰͎̜͔͉ͮͣ̂ͪ̈ ̳̩̙̰͈͖͇̲̙̗̬̦͍̮̦̰̖̙̪͇̮͇͓̜̜͉̞͕̪̘͇͖̰̰̬͙͚͕̙̩̥̦̭̤̹̳̼̠̭̬̠̤͎̤͇̠̬͈͓̰̠͔͕̪̘̰ͩ̈̀ͧͨͦ̊ͥ̍ͭͅo̗͓̩̝͉ͩ̉̔̈̓̈̇̾͂̂͋͗̀̐ű̘̟͔͚̟͚̜͈̞͉̪̼̼̓̌̽ͨͣ̿́̓͗̋̚ͅt͕̖͚̗̣̻͈̭̼̻͓͉͓̟̱̮̱̫̖̗̩̦̩̱̟̠͎̬ͨͮ̂̌ͨͭ͌̏̃̐ͅ ͓̱̖̰̲̥̟̙̪͚̺̠̖̤͎̮̋̈̂ͭ͗̈ͩ͐͐̐͒͆̃ͭͦŵ̻̻̮̟͇̥͕̼̺̟̜̞͚̰̝̳͕̳̻̠͓̟̯̖̞̺͍̺̜̥̠͉̙͔̤̙̦̜͖̰̯̲̮͖͇̝̗̝͓̥̝̬͎̻ͧͭ̉ͭ͋ͨ̑ͅi͎̟̹̬̺̲̘̫̤̹̼̤̳̮̘̲̠̫̗͇̬̭̯̲̲̥̳̫̫̭̱̬̣͓̝̗̲̞͍͙̻͉͈̣͚̳ͪ̊̇̃͊ͮ̓͌͒̑ͯͭ̑̌̈̈͌ͤt̩̜̯̭͙̦͖͓̺̼̰̜̪͔̻̭̭͉̞̪͎̫ͭ̍ͪ͑̎͒͒̂̒ͦ̓h̩͎̯̰̮̣̩̹͇̤̰̟̳͚̬͎̺̝̘͚͓̦̗͖̞̱̘̠̤͙̝̙̺ͣ̈ͧ̿̽͗͛̄ͮ̓̎̔́̉ͅ ̮̭̯͕̼̰͖͍̱̙̲͈̲͎͙̭̯ͣ̾̐̐̃̔͑̎̂̋̃̋̏ó̫̠̥͇̰̙̮̫̪̪̭̰͔̞͕̪̣͕̟̙̠̘̥̬̟̪̦̱͕͂͊͗͋̒n̥͎͓̲̹̖̟̳͕͖͙͕̫͙͈̝͈̟͔̘͎̟̲̱͎̬̺̘͋́̌́̔ͦ̊̅ͥͥ̉ͫ͗ͧ̏̏͂ͅě̩͙̞͙̞̖̲͈̗̻̯̣̰̬̤̭̖̱̩̲͈̞̘͕͙͍̖̙͎̯̩̟̻̗͉̩̲͍͍͙͔̤͓̲̠̫̥̪̜͕̝͔̦̣̱̜̹͓̃̿ͤ̀ͩ̇͌̉ͭ̾̀ͤ ͔͇̩̖̙͈̰̥̝͚͍͖̹̙͉̹̞̯̙̺̙̬̩͇̞̺͉̮̦̞̪͈̠̦͇̠͓̭͇͍̬̯̬͎̻͙͓̟̙̲̜͇͉̗͚̱̼̭͚͔̖͕̺͓̽̆̃̽̈̎̏͋ͦͨ̏̿̚ͅͅċ͓̜̠̼̬͑ͫ̑͌̔͛̎̃̓͒͛̃̐ͣ̊ͤ̌̚ͅǒ̺͈̤̝̹͖̯̪̹͓̤͓̦̯̟̬̳̦͖̱̰̌̎̋̃ͫ̒̔̉̋ͫ̌́ͦ̒͂ͥͅm̙̬͉̭̬̼͌̉̇͗͆͑͐͋̌̀̄͛̑͒ͤ̒m͍̭̘̞͈̜̙̻͔̪̮̥̹̥̹̦̜̱̘̤̠͆̿͒̿ͦ̉̊̏̑̚ĭ͖̞̫̫̝͙̝͖͕̣͓̬̣̲͇̼̩͍̞͙͔̲͍͕̪͕͇̝̹̟̫̫̻̟̹̺̹̻͓̝̘̞̪̹̤̱̣̮̜͔͈̏͋͂̿ͩ͊́̇ͨ̒̂̉ͅͅͅͅͅt͍͎̥͈̘͍̭͉̫̯̼̲̬̜͇͉͓͉͉̮̰̭̮̤̭͉͍̭̹̬͉̘̊̌̾ͧ̓̅ͤ̽̈͋̄͂ ̺̜̪͓ͪ̿̍ͩ͊̃ͪ̃̄̓̂́ͥ̆ä̫̳̜̣̲̳̼̦͎̩̳͇̟̱͈̳͙̭̭̭̼̟̘̯͎̫͖̭͇̼̖̘̫̻̙̫̮͈̗̫̘̟͎̠̟͖̩̻̫͉͈͎̰̩̘̂͂̆̓̉̄̌̊̊̋͑͐̊͑ͮ̃̇ͦͅn̬͈̥̯̤͔͓̤͍̦͖̻̤̥͖̖̼̘͖̩̜̩̪̼͛͌́̇̈ͤ̂̏ͪ̓ͫ̓͊ͅd̖͓͔̦̟͚̬̺̲̪̼͚̝͉͎̠͓͖̖̟̫͕̙̙̜̗̞̮͍̰͓̹̜̻̱̪̫̻͚͉ͫͪ̎ͬ͂ͣ̊͌ͬ̈̄͑ ̘͈̻͇̟̠̟̝͕̱̗͔͚̮̯̞̲̠̪͔̬͓̭̲͉̙͇͇̪͔̟͍͍ͤ̂͆̈̚ͅt̼̙͇̦̫͙̗̘͉̭͕̭̮͕̞̣̭̫̫͖̫̗͉̠̗̱̹̱͉̹̬̦̗̠͇̘̟͉̟̲̫̦͚͈̲̺͎̺̣̦͈͈̝͓̟̐̊͛̐̌ͤͅͅͅh̖̯̖͔̟̮̞̮̱̱͎͎̼̟̪̥̲͈͔̹̠̜͖̤̞̬̪͎̜̩̳̋̈̎̃͋̔̂̋ͫ̈ͭ͋̃̍ͅe̼̮̖̭̪͓̩͉̙͚̜̱̜̻͓̫͚̠͖̲͉̼̎̓̈ͮͤ̔ͥ̔̂̚̚n̬̳͚̹̬͚̼̳̱̲̯̰̭͉̳͙̲̖͓̙͍̩͔̯͈͉̙̝̳͔͔͚̗̹̲̭̮̳̺̙͙͉͖̩̰̜͎̬̦̯̗̗͎͕̥͕̼̳̯̊͋̈̈ͅͅ ͓̼̩̫͙̘͎̺͚̪̦̖̭̼͖͍̮̱͇̤̠͙̥̬̬̮̺̱͕̖̭͚͇̝͙̝͚̠̳͖͙̮̥̮͉͓͎̖̱̼̱̩̯̬̺͍̠̜̋͗ͧ̾ͮ̓ͪ̌͐̍ͣ͛̌ͅͅṭ̯̬̥̬̮̤̩̺͍̞̜̖̹̣̰̳̲̜̟͉͕̫̒ͯ̂͋ͭh͉͓͉̹̹̖̦̩̠̫̭̣̭̯̟̖̣͉̜̟͇̥̹̳̩̙͕͍͍͍͖̫̥ͮ͗͂̌͛͑͐̾i̝̺͉̺̳̖̝͓̺̹͍͕̪̩̲̙̭̯̗̥͔̼̥͉̱͕̗̩̠̺̪̤͕̘̪͎͚̗͕̻̲̻̫̮͎̜̬̳͉͍͕͖͙̠͉͓̟̖̙̟̦͗͆̀̈͂̍͋̿́͐ͬͫ̓̀n̙̲̻̮̭̣̜͚̺̖̹̬̮̼̤̞̜̰͎͔̪͍̰̣̺̮̼͈̬͔̖͍̣̪̗̼͓̘͉͙̝̗̭̺͖̪͕̩̺͔̰̗͇̹̺̙̩̘̱̼̬̟̜̻͇ͥ̏ͧͩ̓̽ͨ̎̈̿ͤ̌ͣ̇̉͋ͩ̓̚ͅḡ̫͉̣̪̩̫̦̻̟̼̘͍͎̥̣̼̺̝̦̫̤̭̖̹͙̥͉͓̩̩̹̠͓͚̣̂ͭ̅̂ͣͪ͒̽͐̈̇̒š̠̹̮̼̮̱̞̺̫̝͚͖̻̯͍͙̼̖̜̫̰̝̝̩̣̰̻͈̰̪̖̤̹̺̝͇̥͇̻͖̯̜̞̞̫̰̘̦̹̳̬̠̩̣̝̺̘̜͕̞̭͓̮̩̣̿ͨͤ͌ͣ́ͫ̿̄̓̈ͅͅ ̗̼̜͎͓͕͖̫͉͕̜͎̞͎̘͍͕͇̣͇̝̣̲̲̼̞̥̥̼͈̻̖͍̣̩̝͎͓̲͉̜̣͎̥͚̬̰̺̖̰̺̬̤̺̪̬̝̣̫̲̖̳̬͇̘ͨ̓ͮ̾͊͒ͩ̊̓̄ͬ̒̚ͅs̞̘̞̦͖̤͇͔ͭ͋̂̌ͩͬͅͅṫ̞̣͈̦̖̥̖̠̳̳̞̯͈̩͓̺̺͈͉̖̘̞̟̿͊̐́̓ͩ̓ͤ͑͒̈̈a̰̹̲̲̞̦̞͚̦̖̰̼̥̖̜̩̬͍̰͈͇̦͍̗͚̜̼̱̘̟̩̟̜̞̜̣̥͖̦̳̖̯̜̯̗͕̟̘͍͊͊͗ͮ̋̐ͅṙ̞̫̠̤̖̺͖̘̝̯͉̝̞̗̟̝̫̼̲̯̝̮͇̹̻̩͖̦̩̝̺̲̩̳̭͔̙͔͇͓̯̗̜͚̳̪̜̦̻͖̜̐̆ͭ̔̑̂̐͌ͫ͒͆̚̚ṱ̹͈̙̙̬̹̹̝̠̦͇̤͔̙̘̼͍̯͍̙̺͖̭̯͎͔̟̠͙͑ͫͯ͑̃̉̏͋̾͐ͅͅȇ̟̩͙̖̬͚̖̠͚͔̤̞̥̹̼̽ͤ̔ͧ̓ͨ͋͐̾̒̉̔ͬ̂̅̏͌ͅd̙͉̼̱͔̮̳̞̜̊͛̋͋ͩ̏͊̽͂͊̈̉̋̃̂̌ͬ̈͒ͅ ̯̞͖͕̦̣͓͈̳͕͔̻̳̮̬̱͚̞͙̺͚̬͕̘̞͔̼͖̫̠̫̩̼̮̥̫̦̻͖̻̮ͧ͗ͤͦ͐̿̓ͭͫ́̋̋ͤ̄͗ͧͨ͆̃ͅͅͅͅͅt̩͔̟̤͚̼̱̭̜̳͔̗̘͚̟͓̭͙͎̖̲̜̻̲͍̠̹̙̥̘ͤ͒͑ͥͥ̎̍̾̊ͫ̓ͪͭͯ͋̈̈ͅͅͅô̼̭̙͕̼̰̠̫̗͉͎̩̬̭̦̺̭̘̲̝͍̮͍̞̹͇͎͚̩͕̟͇̆ͬͨ̒͒̉ͨͪ ̺͇͈̤̙̭͎̦̲̻̳͚̗̬̣̺̯͕̹̤̼̙̳͍̟͔̲̯̤̤̗͓̬̯̙̠̝͖͖͖̘͔̜̮̹͓͉͈̞̭̐ͨ̍̆̓ͅǧ̝̻̼̻̪̘̪̤̺͎͙̯̯̜̞̗̫͍͙̝͇̟̫̱̻̞̫̦̗̺̳̮̦͎͕͈͋̌ͦ̈̋̾̔ͨ̽ͯͮͤ͐̽͑̄̿̋ĕ̮̹̳͍̝̞̹̹̠̺͚̭̲̩̩̯̝̬͇̠̲̞͕͉̦͖̊ͫ́͑͋̎͆̋̀̓͐͊͊͒̓̚t̠͉̼̭̟͉̲͚̜̳͈̘̟͇̤̞͚͚̯͚̣̼̭͉͚͔͈͈͎̪̙̦̖̻͍͔̪͎̺͆̃̅͆̿͋̈̽͑ ͖̙͎̼̣̥͎̙̝͔̮̳͚̯̘͉̯̻̫̝̬̘̯̭͙͚͉̝̠͉̖͔̣̹̣͎̼̠̮̭͓͎͙̖̺̳̯̯͉͕̣͎̟͉̀̓̑ͯ̀ͤ̄ͮ̽ͦo̮͈̠̺̙̯͇̩͚͈̤̟͚̘̮̲͉͙̪͍̩͙̺̫͎͚͔̳̣̙̬̹̘͍ͮ͋̊͛ͩ̉̓͂ͥͥ̐͂̑̌̊̚u̟̹͕̙̗̘͎͎͕̩̘͇̲̹̹̙̅͆̒̈̒ͥ̈̆̚t̖̣̪̟̰̳̯͙͇̗͚̟̹̬͉͎̺̥̫͎͖̱̥̬̪͈̬̥͙̱̣̰̘̖̰͔ͩ̆̈ͧ̒̃͋ͅͅ ͍̖̪͈͕̽̉̆͆́͌̈̐͋̄̓ͅo̞͍͚͉̗̹̮̰̜͕͓̱̮͓̮͈̰̥͎̘͉̪̣̺̱̭̩͉̳̲̫͍̟̱͖͚̭̖̖͓̞̘̐͒̓̂̏ͤ̓ͬ̃f̱͈͇̮͚̤̹̜̟̠̩̤̣͓͕̟̰͔̟̫̟̪̆͐ͪ̂ ̮͈̭͉̤̺͇̲͙̣̥̹͔͖̝̺͇̖͈̺̝͚̭̭͔͙̦͚̦͕͉͖̣̙͕̱̦͍̯̼̲̺̮̭̹͕̭̞̘̝̤̖̗͚̝̻͔̪͓̲̣̖͇ͨ͂ͫͤ̍ͤͪͥͭ̓̒̿̈̏̐̚ͅͅͅh̰̰̼̤̖͙̩͈̻̹͖̙̹̦̮̘̺̜̹̤͉̳̹̪̹̙͚̫̬͇̪̪̟̫̪̲̥̝̲̰̻͔͐̽̿͑ͩ̊̆̎̊ͭ̒ͫ͊̆͛ͮ̅̚̚ͅͅͅa̘̖̖̻̣͕̻̹̘͖̬̳̬̲͚͍̩̦̖͙ͬ̈̑̀̓ͅͅn̪̺̤̟̬̟̠̯̪͖͈͚̰̆ͪ̃̈ͤͪ̌̈ͪ̋ͪ̔ͣͨ̊̾̀d͖̜̤̺͓̦̲̬̼̮͉͕̯͈̖͎̻̝͖̭͍͈̟̭̼̥͖̭̳̹̬͖̣͛͂̾̾̋ͭͤ͒ͭͪ͐͒͑̉̒ͅ.͎̰̬͓̻̲͕͉̺͙̘̯͇̥̜̳̩̙̞̫͉̬̠̘̳̣̩̮͓͙̠͖̰̬͉̝̤̯͈̬͕͓̤̹͕̼̱̗̜̗̞̜̩̳͆̈̏ͫ̏̽ͭ̚ͅ.̣̤͕̪̣̣͓̬̬̮̠͕̲̹̲̰͓̥̗̫̖͚̙͔̹͉͉͓̝͈͉̣͙͕͔̤̩̤̖̗̦̺̫͉͖̮͚͎̰͚̱̜̻̥̩͙̠̫̟̙̹͖̘͔̭̩ͥ̇͐ͯ͆̆̃ͫ̃́͋͑̂͆ͨ̑̏ͩ.͍̻̱͇̳̳̺̖̻̹̟͎̰͔̭̗ͮ͑͐͐ͤ̈ͣ͑̌ 2 | 3 | #zalgo, he comes 4 | ## and burninates your website... 5 | ### ahhhhhhh! 6 | #### right now the library is in the basic proof of concept stage. i'll make this a valid CommonJS package, jQuery plugin, bookmarklet, browser demo, etc once zalgo releases me from his terrifying grip 7 | 8 | ### jQuery plugin added. 9 | --------------------------------------------------------------------------------