util.js
1 // Generated by LiveScript 1.6.0 2 (function(){ 3 var prelude, map, sortBy, fl, closestString, nameToRaw, dasherize, naturalJoin; 4 prelude = require('prelude-ls'), map = prelude.map, sortBy = prelude.sortBy; 5 fl = require('fast-levenshtein'); 6 closestString = function(possibilities, input){ 7 var distances, ref$, string, distance; 8 if (!possibilities.length) { 9 return; 10 } 11 distances = map(function(it){ 12 var ref$, longer, shorter; 13 ref$ = input.length > it.length 14 ? [input, it] 15 : [it, input], longer = ref$[0], shorter = ref$[1]; 16 return { 17 string: it, 18 distance: fl.get(longer, shorter) 19 }; 20 })( 21 possibilities); 22 ref$ = sortBy(function(it){ 23 return it.distance; 24 }, distances)[0], string = ref$.string, distance = ref$.distance; 25 return string; 26 }; 27 nameToRaw = function(name){ 28 if (name.length === 1 || name === 'NUM') { 29 return "-" + name; 30 } else { 31 return "--" + name; 32 } 33 }; 34 dasherize = function(string){ 35 if (/^[A-Z]/.test(string)) { 36 return string; 37 } else { 38 return prelude.dasherize(string); 39 } 40 }; 41 naturalJoin = function(array){ 42 if (array.length < 3) { 43 return array.join(' or '); 44 } else { 45 return array.slice(0, -1).join(', ') + ", or " + array[array.length - 1]; 46 } 47 }; 48 module.exports = { 49 closestString: closestString, 50 nameToRaw: nameToRaw, 51 dasherize: dasherize, 52 naturalJoin: naturalJoin 53 }; 54 }).call(this);