47 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			47 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| /*jshint -W054 */
 | |
| ;(function (exports) {
 | |
|   'use strict';
 | |
| 
 | |
|   var lists = exports.humanReadableIds || require('./lists')
 | |
|     , shuffle = exports.knuthShuffle || require('knuth-shuffle').knuthShuffle
 | |
|     , animals = []
 | |
|     , adjectives = []
 | |
|     , numbers = []
 | |
|     ;
 | |
| 
 | |
|   function genNumbers() {
 | |
|     var i = 2
 | |
|       ;
 | |
| 
 | |
|     numbers = [];
 | |
|     numbers.push(0);
 | |
|     // 1 is not plural, so we skip it
 | |
|     for (i = 2; i <= 100; i += 1) {
 | |
|       numbers.push(i);
 | |
|     }
 | |
| 
 | |
|     return shuffle(numbers);
 | |
|   }
 | |
| 
 | |
|   function random() {
 | |
|     if (!adjectives.length) {
 | |
|       adjectives = shuffle(lists.adjectives.slice(0));
 | |
|     }
 | |
|     if (!animals.length) {
 | |
|       animals = shuffle(lists.animals.slice(0));
 | |
|     }
 | |
|     if (!numbers.length) {
 | |
|       numbers = shuffle(genNumbers());
 | |
|     }
 | |
| 
 | |
|     return adjectives.pop()
 | |
|       + '-' + animals.pop()
 | |
|       + '-' + numbers.pop()
 | |
|       ;
 | |
|   }
 | |
| 
 | |
|   exports.humanReadableIds = { random: random };
 | |
|   exports.hri = exports.humanReadableIds;
 | |
| 
 | |
| }('undefined' !== typeof exports && exports || new Function('return this')()));
 |