fs-finder-updated
Version:
File system recursive finder
84 lines (72 loc) • 2.33 kB
JavaScript
// Generated by CoffeeScript 2.7.0
(function() {
var Helpers, escape, path;
escape = require('escape-regexp');
path = require('path');
Helpers = (function() {
class Helpers {
static parseDirectory(_path) {
var asterisk, mask, regexp, splitter;
mask = null;
asterisk = _path.indexOf('*');
regexp = _path.indexOf('<');
if (asterisk !== -1 || regexp !== -1) {
if (asterisk === -1 || (asterisk !== -1 && regexp !== -1 && asterisk > regexp)) {
splitter = regexp;
} else if (regexp === -1 || (regexp !== -1 && asterisk !== -1 && asterisk <= regexp)) {
splitter = asterisk;
}
mask = _path.substr(splitter);
_path = _path.substr(0, splitter);
}
return {
directory: _path,
mask: mask
};
}
static normalizePattern(pattern) {
var i, j, len, part, parts, partsResult, replacement;
if (pattern === null) {
return null;
}
if (pattern === '*') {
return null;
}
pattern = pattern.replace(/\*/g, Helpers.ASTERISK_PATTERN);
parts = pattern.match(/<((?!(<|>)).)*>/g);
if (parts !== null) {
partsResult = {};
for (i = j = 0, len = parts.length; j < len; i = ++j) {
part = parts[i];
partsResult['__<<' + i + '>>__'] = part.replace(/^<(.*)>$/, '$1');
pattern = pattern.replace(part, '__<<' + i + '>>__');
}
pattern = escape(pattern);
for (replacement in partsResult) {
part = partsResult[replacement];
pattern = pattern.replace(replacement, part);
}
} else {
pattern = escape(pattern);
}
return pattern;
}
static expandPath(_path, isFile = false) {
var current, result;
if (isFile) {
_path = path.dirname(_path);
}
current = _path;
result = [current];
while (current !== '/') {
result.push(path.dirname(current));
current = path.dirname(current);
}
return result;
}
};
Helpers.ASTERISK_PATTERN = '<[0-9a-zA-Z/.-_ ]+>';
return Helpers;
}).call(this);
module.exports = Helpers;
}).call(this);