initial commit
This commit is contained in:
80
node_modules/fuzzaldrin/lib/fuzzaldrin.js
generated
vendored
Normal file
80
node_modules/fuzzaldrin/lib/fuzzaldrin.js
generated
vendored
Normal file
@@ -0,0 +1,80 @@
|
||||
(function() {
|
||||
var PathSeparator, SpaceRegex, filter, matcher, scorer;
|
||||
|
||||
scorer = require('./scorer');
|
||||
|
||||
filter = require('./filter');
|
||||
|
||||
matcher = require('./matcher');
|
||||
|
||||
PathSeparator = require('path').sep;
|
||||
|
||||
SpaceRegex = /\ /g;
|
||||
|
||||
module.exports = {
|
||||
filter: function(candidates, query, options) {
|
||||
var queryHasSlashes;
|
||||
if (query) {
|
||||
queryHasSlashes = query.indexOf(PathSeparator) !== -1;
|
||||
query = query.replace(SpaceRegex, '');
|
||||
}
|
||||
return filter(candidates, query, queryHasSlashes, options);
|
||||
},
|
||||
score: function(string, query) {
|
||||
var queryHasSlashes, score;
|
||||
if (!string) {
|
||||
return 0;
|
||||
}
|
||||
if (!query) {
|
||||
return 0;
|
||||
}
|
||||
if (string === query) {
|
||||
return 2;
|
||||
}
|
||||
queryHasSlashes = query.indexOf(PathSeparator) !== -1;
|
||||
query = query.replace(SpaceRegex, '');
|
||||
score = scorer.score(string, query);
|
||||
if (!queryHasSlashes) {
|
||||
score = scorer.basenameScore(string, query, score);
|
||||
}
|
||||
return score;
|
||||
},
|
||||
match: function(string, query) {
|
||||
var baseMatches, index, matches, queryHasSlashes, seen, _i, _ref, _results;
|
||||
if (!string) {
|
||||
return [];
|
||||
}
|
||||
if (!query) {
|
||||
return [];
|
||||
}
|
||||
if (string === query) {
|
||||
return (function() {
|
||||
_results = [];
|
||||
for (var _i = 0, _ref = string.length; 0 <= _ref ? _i < _ref : _i > _ref; 0 <= _ref ? _i++ : _i--){ _results.push(_i); }
|
||||
return _results;
|
||||
}).apply(this);
|
||||
}
|
||||
queryHasSlashes = query.indexOf(PathSeparator) !== -1;
|
||||
query = query.replace(SpaceRegex, '');
|
||||
matches = matcher.match(string, query);
|
||||
if (!queryHasSlashes) {
|
||||
baseMatches = matcher.basenameMatch(string, query);
|
||||
matches = matches.concat(baseMatches).sort(function(a, b) {
|
||||
return a - b;
|
||||
});
|
||||
seen = null;
|
||||
index = 0;
|
||||
while (index < matches.length) {
|
||||
if (index && seen === matches[index]) {
|
||||
matches.splice(index, 1);
|
||||
} else {
|
||||
seen = matches[index];
|
||||
index++;
|
||||
}
|
||||
}
|
||||
}
|
||||
return matches;
|
||||
}
|
||||
};
|
||||
|
||||
}).call(this);
|
||||
Reference in New Issue
Block a user