1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- (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);
|