• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1function levenshteinD (s1, s2) {
2  var d = []
3  var i = 0
4
5  for (i = 0; i <= s1.length; i++) d[i] = [i]
6  for (i = 0; i <= s2.length; i++) d[0][i] = i
7
8  s2.split('').forEach(function (c2, j) {
9    s1.split('').forEach(function (c1, i) {
10      if (c1 === c2) {
11        d[i + 1][j + 1] = d[i][j]
12        return
13      }
14      d[i + 1][j + 1] = Math.min(
15        d[i][j + 1] + 1,
16        d[i + 1][j] + 1,
17        d[i][j] + 1
18      )
19    })
20  })
21
22  return d[s1.length][s2.length]
23}
24
25function meant (scmd, commands) {
26  var d = []
27  var bestSimilarity = []
28
29  commands.forEach(function (cmd, i) {
30    var item = {}
31    item[levenshteinD(scmd, cmd)] = i
32    d.push(item)
33  })
34
35  d.sort(function (a, b) {
36    return Number(Object.keys(a)[0]) - Number(Object.keys(b)[0])
37  })
38
39  d.forEach(function (item) {
40    var key = Number(Object.keys(item)[0])
41    if (scmd.length / 2 >= key) {
42      bestSimilarity.push(commands[item[key]])
43    }
44  })
45
46  return bestSimilarity
47}
48
49module.exports = meant
50