33 lines
		
	
	
		
			772 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			33 lines
		
	
	
		
			772 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| const MAX_SUGGESTIONS = 5;
 | |
| /**
 | |
|  * Given [ A, B, C ] return ' Did you mean A, B, or C?'.
 | |
|  */
 | |
| 
 | |
| export function didYouMean(firstArg, secondArg) {
 | |
|   const [subMessage, suggestionsArg] = secondArg
 | |
|     ? [firstArg, secondArg]
 | |
|     : [undefined, firstArg];
 | |
|   let message = ' Did you mean ';
 | |
| 
 | |
|   if (subMessage) {
 | |
|     message += subMessage + ' ';
 | |
|   }
 | |
| 
 | |
|   const suggestions = suggestionsArg.map((x) => `"${x}"`);
 | |
| 
 | |
|   switch (suggestions.length) {
 | |
|     case 0:
 | |
|       return '';
 | |
| 
 | |
|     case 1:
 | |
|       return message + suggestions[0] + '?';
 | |
| 
 | |
|     case 2:
 | |
|       return message + suggestions[0] + ' or ' + suggestions[1] + '?';
 | |
|   }
 | |
| 
 | |
|   const selected = suggestions.slice(0, MAX_SUGGESTIONS);
 | |
|   const lastItem = selected.pop();
 | |
|   return message + selected.join(', ') + ', or ' + lastItem + '?';
 | |
| }
 |