Son CV dans un terminal web en Javascript!
https://terminal-cv.gregandev.fr
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.
54 lines
2.1 KiB
54 lines
2.1 KiB
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
const utils = require("../../utils");
|
|
class EntryFilter {
|
|
constructor(_settings, _micromatchOptions) {
|
|
this._settings = _settings;
|
|
this._micromatchOptions = _micromatchOptions;
|
|
this.index = new Map();
|
|
}
|
|
getFilter(positive, negative) {
|
|
const positiveRe = utils.pattern.convertPatternsToRe(positive, this._micromatchOptions);
|
|
const negativeRe = utils.pattern.convertPatternsToRe(negative, this._micromatchOptions);
|
|
return (entry) => this._filter(entry, positiveRe, negativeRe);
|
|
}
|
|
_filter(entry, positiveRe, negativeRe) {
|
|
if (this._settings.unique) {
|
|
if (this._isDuplicateEntry(entry)) {
|
|
return false;
|
|
}
|
|
this._createIndexRecord(entry);
|
|
}
|
|
if (this._onlyFileFilter(entry) || this._onlyDirectoryFilter(entry)) {
|
|
return false;
|
|
}
|
|
if (this._isSkippedByAbsoluteNegativePatterns(entry, negativeRe)) {
|
|
return false;
|
|
}
|
|
const filepath = this._settings.baseNameMatch ? entry.name : entry.path;
|
|
return this._isMatchToPatterns(filepath, positiveRe) && !this._isMatchToPatterns(entry.path, negativeRe);
|
|
}
|
|
_isDuplicateEntry(entry) {
|
|
return this.index.has(entry.path);
|
|
}
|
|
_createIndexRecord(entry) {
|
|
this.index.set(entry.path, undefined);
|
|
}
|
|
_onlyFileFilter(entry) {
|
|
return this._settings.onlyFiles && !entry.dirent.isFile();
|
|
}
|
|
_onlyDirectoryFilter(entry) {
|
|
return this._settings.onlyDirectories && !entry.dirent.isDirectory();
|
|
}
|
|
_isSkippedByAbsoluteNegativePatterns(entry, negativeRe) {
|
|
if (!this._settings.absolute) {
|
|
return false;
|
|
}
|
|
const fullpath = utils.path.makeAbsolute(this._settings.cwd, entry.path);
|
|
return this._isMatchToPatterns(fullpath, negativeRe);
|
|
}
|
|
_isMatchToPatterns(filepath, patternsRe) {
|
|
return utils.pattern.matchAny(filepath, patternsRe);
|
|
}
|
|
}
|
|
exports.default = EntryFilter;
|
|
|