| 
									
										
										
										
											2014-09-30 22:41:24 +02:00
										 |  |  | // please no
 | 
					
						
							| 
									
										
										
										
											2014-10-01 13:00:33 +02:00
										 |  |  | module['exports'] = function zalgo(text, options) { | 
					
						
							|  |  |  |   text = text || "   he is here   "; | 
					
						
							| 
									
										
										
										
											2014-09-30 22:41:24 +02:00
										 |  |  |   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 || {}; | 
					
						
							| 
									
										
										
										
											2014-12-30 20:24:24 -08:00
										 |  |  |     options["up"] =   typeof options["up"]   !== 'undefined' ? options["up"]   : true; | 
					
						
							|  |  |  |     options["mid"] =  typeof options["mid"]  !== 'undefined' ? options["mid"]  : true; | 
					
						
							|  |  |  |     options["down"] = typeof options["down"] !== 'undefined' ? options["down"] : true; | 
					
						
							|  |  |  |     options["size"] = typeof options["size"] !== 'undefined' ? options["size"] : "maxi"; | 
					
						
							| 
									
										
										
										
											2014-09-30 22:41:24 +02:00
										 |  |  |     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); | 
					
						
							| 
									
										
										
										
											2014-12-30 20:24:24 -08:00
										 |  |  |         counts.mid = randomNumber(2); | 
					
						
							| 
									
										
										
										
											2014-09-30 22:41:24 +02:00
										 |  |  |         counts.down = randomNumber(8); | 
					
						
							|  |  |  |         break; | 
					
						
							|  |  |  |       case 'maxi': | 
					
						
							|  |  |  |         counts.up = randomNumber(16) + 3; | 
					
						
							| 
									
										
										
										
											2014-12-30 20:24:24 -08:00
										 |  |  |         counts.mid = randomNumber(4) + 1; | 
					
						
							| 
									
										
										
										
											2014-09-30 22:41:24 +02:00
										 |  |  |         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
 | 
					
						
							| 
									
										
										
										
											2014-12-30 14:57:02 -08:00
										 |  |  |   return heComes(text, options); | 
					
						
							| 
									
										
										
										
											2014-09-30 22:41:24 +02:00
										 |  |  | } |