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.

util.js 1.5KB

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