You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					55 lines
				
				1.5 KiB
			
		
		
			
		
	
	
					55 lines
				
				1.5 KiB
			| 
								 
											3 years ago
										 
									 | 
							
								// Generated by LiveScript 1.6.0
							 | 
						||
| 
								 | 
							
								(function(){
							 | 
						||
| 
								 | 
							
								  var prelude, map, sortBy, fl, closestString, nameToRaw, dasherize, naturalJoin;
							 | 
						||
| 
								 | 
							
								  prelude = require('prelude-ls'), map = prelude.map, sortBy = prelude.sortBy;
							 | 
						||
| 
								 | 
							
								  fl = require('fast-levenshtein');
							 | 
						||
| 
								 | 
							
								  closestString = function(possibilities, input){
							 | 
						||
| 
								 | 
							
								    var distances, ref$, string, distance;
							 | 
						||
| 
								 | 
							
								    if (!possibilities.length) {
							 | 
						||
| 
								 | 
							
								      return;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    distances = map(function(it){
							 | 
						||
| 
								 | 
							
								      var ref$, longer, shorter;
							 | 
						||
| 
								 | 
							
								      ref$ = input.length > it.length
							 | 
						||
| 
								 | 
							
								        ? [input, it]
							 | 
						||
| 
								 | 
							
								        : [it, input], longer = ref$[0], shorter = ref$[1];
							 | 
						||
| 
								 | 
							
								      return {
							 | 
						||
| 
								 | 
							
								        string: it,
							 | 
						||
| 
								 | 
							
								        distance: fl.get(longer, shorter)
							 | 
						||
| 
								 | 
							
								      };
							 | 
						||
| 
								 | 
							
								    })(
							 | 
						||
| 
								 | 
							
								    possibilities);
							 | 
						||
| 
								 | 
							
								    ref$ = sortBy(function(it){
							 | 
						||
| 
								 | 
							
								      return it.distance;
							 | 
						||
| 
								 | 
							
								    }, distances)[0], string = ref$.string, distance = ref$.distance;
							 | 
						||
| 
								 | 
							
								    return string;
							 | 
						||
| 
								 | 
							
								  };
							 | 
						||
| 
								 | 
							
								  nameToRaw = function(name){
							 | 
						||
| 
								 | 
							
								    if (name.length === 1 || name === 'NUM') {
							 | 
						||
| 
								 | 
							
								      return "-" + name;
							 | 
						||
| 
								 | 
							
								    } else {
							 | 
						||
| 
								 | 
							
								      return "--" + name;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  };
							 | 
						||
| 
								 | 
							
								  dasherize = function(string){
							 | 
						||
| 
								 | 
							
								    if (/^[A-Z]/.test(string)) {
							 | 
						||
| 
								 | 
							
								      return string;
							 | 
						||
| 
								 | 
							
								    } else {
							 | 
						||
| 
								 | 
							
								      return prelude.dasherize(string);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  };
							 | 
						||
| 
								 | 
							
								  naturalJoin = function(array){
							 | 
						||
| 
								 | 
							
								    if (array.length < 3) {
							 | 
						||
| 
								 | 
							
								      return array.join(' or ');
							 | 
						||
| 
								 | 
							
								    } else {
							 | 
						||
| 
								 | 
							
								      return array.slice(0, -1).join(', ') + ", or " + array[array.length - 1];
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  };
							 | 
						||
| 
								 | 
							
								  module.exports = {
							 | 
						||
| 
								 | 
							
								    closestString: closestString,
							 | 
						||
| 
								 | 
							
								    nameToRaw: nameToRaw,
							 | 
						||
| 
								 | 
							
								    dasherize: dasherize,
							 | 
						||
| 
								 | 
							
								    naturalJoin: naturalJoin
							 | 
						||
| 
								 | 
							
								  };
							 | 
						||
| 
								 | 
							
								}).call(this);
							 |