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