UNPKG

amatch

Version:
129 lines (109 loc) 7.15 kB
/** * Simple matcher * @function amatch * @param {string} patterns * @returns {function} */ 'use strict'; /** @lends amatch */ var _assign = require('babel-runtime/core-js/object/assign'); var _assign2 = _interopRequireDefault(_assign); var _getIterator2 = require('babel-runtime/core-js/get-iterator'); var _getIterator3 = _interopRequireDefault(_getIterator2); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function amatch() { var patterns = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; var _amatch$parse = amatch.parse(patterns), rejects = _amatch$parse.rejects, accepts = _amatch$parse.accepts; return function matches(value) { var _iteratorNormalCompletion = true; var _didIteratorError = false; var _iteratorError = undefined; try { for (var _iterator = (0, _getIterator3.default)(rejects), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { var reject = _step.value; if (reject.test(value)) { return false; } } } catch (err) { _didIteratorError = true; _iteratorError = err; } finally { try { if (!_iteratorNormalCompletion && _iterator.return) { _iterator.return(); } } finally { if (_didIteratorError) { throw _iteratorError; } } } var _iteratorNormalCompletion2 = true; var _didIteratorError2 = false; var _iteratorError2 = undefined; try { for (var _iterator2 = (0, _getIterator3.default)(accepts), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { var accept = _step2.value; if (accept.test(value)) { return true; } } } catch (err) { _didIteratorError2 = true; _iteratorError2 = err; } finally { try { if (!_iteratorNormalCompletion2 && _iterator2.return) { _iterator2.return(); } } finally { if (_didIteratorError2) { throw _iteratorError2; } } } return false; }; } (0, _assign2.default)(amatch, { parse: function parse(patterns) { var rejects = []; var accepts = []; var _iteratorNormalCompletion3 = true; var _didIteratorError3 = false; var _iteratorError3 = undefined; try { for (var _iterator3 = (0, _getIterator3.default)(patterns.split(/[\s,]+/)), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) { var pattern = _step3.value; if (!pattern) { continue; } var converted = pattern.replace(/[\\^$+?.()|[\]{}]/g, '\\$&').replace(/\*/g, '.*?'); if (converted[0] === '-') { rejects.push(new RegExp('^' + converted.substr(1) + '$')); } else { accepts.push(new RegExp('^' + converted + '$')); } } } catch (err) { _didIteratorError3 = true; _iteratorError3 = err; } finally { try { if (!_iteratorNormalCompletion3 && _iterator3.return) { _iterator3.return(); } } finally { if (_didIteratorError3) { throw _iteratorError3; } } } return { rejects: rejects, accepts: accepts }; } }); module.exports = amatch; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFtYXRjaC5qcyJdLCJuYW1lcyI6WyJhbWF0Y2giLCJwYXR0ZXJucyIsInBhcnNlIiwicmVqZWN0cyIsImFjY2VwdHMiLCJtYXRjaGVzIiwidmFsdWUiLCJyZWplY3QiLCJ0ZXN0IiwiYWNjZXB0Iiwic3BsaXQiLCJwYXR0ZXJuIiwiY29udmVydGVkIiwicmVwbGFjZSIsInB1c2giLCJSZWdFeHAiLCJzdWJzdHIiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0FBTUE7O0FBRUE7Ozs7Ozs7Ozs7OztBQUNBLFNBQVNBLE1BQVQsR0FBZ0M7QUFBQSxNQUFmQyxRQUFlLHVFQUFKLEVBQUk7O0FBQUEsc0JBQ0hELE9BQU9FLEtBQVAsQ0FBYUQsUUFBYixDQURHO0FBQUEsTUFDeEJFLE9BRHdCLGlCQUN4QkEsT0FEd0I7QUFBQSxNQUNmQyxPQURlLGlCQUNmQSxPQURlOztBQUU5QixTQUFPLFNBQVNDLE9BQVQsQ0FBa0JDLEtBQWxCLEVBQXlCO0FBQUE7QUFBQTtBQUFBOztBQUFBO0FBQzlCLHNEQUFtQkgsT0FBbkIsNEdBQTRCO0FBQUEsWUFBbkJJLE1BQW1COztBQUMxQixZQUFJQSxPQUFPQyxJQUFQLENBQVlGLEtBQVosQ0FBSixFQUF3QjtBQUN0QixpQkFBTyxLQUFQO0FBQ0Q7QUFDRjtBQUw2QjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUFBO0FBQUE7QUFBQTs7QUFBQTtBQU05Qix1REFBbUJGLE9BQW5CLGlIQUE0QjtBQUFBLFlBQW5CSyxNQUFtQjs7QUFDMUIsWUFBSUEsT0FBT0QsSUFBUCxDQUFZRixLQUFaLENBQUosRUFBd0I7QUFDdEIsaUJBQU8sSUFBUDtBQUNEO0FBQ0Y7QUFWNkI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTs7QUFXOUIsV0FBTyxLQUFQO0FBQ0QsR0FaRDtBQWFEOztBQUVELHNCQUFjTixNQUFkLEVBQXNCO0FBQ3BCRSxPQURvQixpQkFDYkQsUUFEYSxFQUNIO0FBQ2YsUUFBSUUsVUFBVSxFQUFkO0FBQ0EsUUFBSUMsVUFBVSxFQUFkO0FBRmU7QUFBQTtBQUFBOztBQUFBO0FBR2YsdURBQW9CSCxTQUFTUyxLQUFULENBQWUsUUFBZixDQUFwQixpSEFBOEM7QUFBQSxZQUFyQ0MsT0FBcUM7O0FBQzVDLFlBQUksQ0FBQ0EsT0FBTCxFQUFjO0FBQ1o7QUFDRDtBQUNELFlBQUlDLFlBQVlELFFBQVFFLE9BQVIsQ0FBZ0Isb0JBQWhCLEVBQXNDLE1BQXRDLEVBQThDQSxPQUE5QyxDQUFzRCxLQUF0RCxFQUE2RCxLQUE3RCxDQUFoQjtBQUNBLFlBQUlELFVBQVcsQ0FBWCxNQUFtQixHQUF2QixFQUE0QjtBQUMxQlQsa0JBQVFXLElBQVIsQ0FBYSxJQUFJQyxNQUFKLENBQVcsTUFBTUgsVUFBVUksTUFBVixDQUFpQixDQUFqQixDQUFOLEdBQTRCLEdBQXZDLENBQWI7QUFDRCxTQUZELE1BRU87QUFDTFosa0JBQVFVLElBQVIsQ0FBYSxJQUFJQyxNQUFKLENBQVcsTUFBTUgsU0FBTixHQUFrQixHQUE3QixDQUFiO0FBQ0Q7QUFDRjtBQWJjO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBY2YsV0FBTyxFQUFFVCxnQkFBRixFQUFXQyxnQkFBWCxFQUFQO0FBQ0Q7QUFoQm1CLENBQXRCOztBQW1CQWEsT0FBT0MsT0FBUCxHQUFpQmxCLE1BQWpCIiwiZmlsZSI6ImFtYXRjaC5qcyIsInNvdXJjZVJvb3QiOiJsaWIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFNpbXBsZSBtYXRjaGVyXG4gKiBAZnVuY3Rpb24gYW1hdGNoXG4gKiBAcGFyYW0ge3N0cmluZ30gcGF0dGVybnNcbiAqIEByZXR1cm5zIHtmdW5jdGlvbn1cbiAqL1xuJ3VzZSBzdHJpY3QnXG5cbi8qKiBAbGVuZHMgYW1hdGNoICovXG5mdW5jdGlvbiBhbWF0Y2ggKHBhdHRlcm5zID0gJycpIHtcbiAgbGV0IHsgcmVqZWN0cywgYWNjZXB0cyB9ID0gYW1hdGNoLnBhcnNlKHBhdHRlcm5zKVxuICByZXR1cm4gZnVuY3Rpb24gbWF0Y2hlcyAodmFsdWUpIHtcbiAgICBmb3IgKGxldCByZWplY3Qgb2YgcmVqZWN0cykge1xuICAgICAgaWYgKHJlamVjdC50ZXN0KHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICB9XG4gICAgZm9yIChsZXQgYWNjZXB0IG9mIGFjY2VwdHMpIHtcbiAgICAgIGlmIChhY2NlcHQudGVzdCh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbn1cblxuT2JqZWN0LmFzc2lnbihhbWF0Y2gsIHtcbiAgcGFyc2UgKHBhdHRlcm5zKSB7XG4gICAgbGV0IHJlamVjdHMgPSBbXVxuICAgIGxldCBhY2NlcHRzID0gW11cbiAgICBmb3IgKGxldCBwYXR0ZXJuIG9mIHBhdHRlcm5zLnNwbGl0KC9bXFxzLF0rLykpIHtcbiAgICAgIGlmICghcGF0dGVybikge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgbGV0IGNvbnZlcnRlZCA9IHBhdHRlcm4ucmVwbGFjZSgvW1xcXFxeJCs/LigpfFtcXF17fV0vZywgJ1xcXFwkJicpLnJlcGxhY2UoL1xcKi9nLCAnLio/JylcbiAgICAgIGlmIChjb252ZXJ0ZWRbIDAgXSA9PT0gJy0nKSB7XG4gICAgICAgIHJlamVjdHMucHVzaChuZXcgUmVnRXhwKCdeJyArIGNvbnZlcnRlZC5zdWJzdHIoMSkgKyAnJCcpKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYWNjZXB0cy5wdXNoKG5ldyBSZWdFeHAoJ14nICsgY29udmVydGVkICsgJyQnKSlcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHsgcmVqZWN0cywgYWNjZXB0cyB9XG4gIH1cbn0pXG5cbm1vZHVsZS5leHBvcnRzID0gYW1hdGNoXG5cblxuIl19