// 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);