Blame view

node_modules/optionator/lib/util.js 1.48 KB
ce4c83ff   wxy   初始提交
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
  // 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);