| // Generated by LiveScript 1.5.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, this$ = this; |
| 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); |