Sha256: 5b78a48c97386c2ae446d77db6967dd8c31ff056cd730baff499ff6a579316d6
Contents?: true
Size: 1.26 KB
Versions: 23
Compression:
Stored size: 1.26 KB
Contents
/*! * regex-cache <https://github.com/jonschlinkert/regex-cache> * * Copyright (c) 2015-2017, Jon Schlinkert. * Released under the MIT License. */ 'use strict'; var equal = require('is-equal-shallow'); var basic = {}; var cache = {}; /** * Expose `regexCache` */ module.exports = regexCache; /** * Memoize the results of a call to the new RegExp constructor. * * @param {Function} fn [description] * @param {String} str [description] * @param {Options} options [description] * @param {Boolean} nocompare [description] * @return {RegExp} */ function regexCache(fn, str, opts) { var key = '_default_', regex, cached; if (!str && !opts) { if (typeof fn !== 'function') { return fn; } return basic[key] || (basic[key] = fn(str)); } var isString = typeof str === 'string'; if (isString) { if (!opts) { return basic[str] || (basic[str] = fn(str)); } key = str; } else { opts = str; } cached = cache[key]; if (cached && equal(cached.opts, opts)) { return cached.regex; } memo(key, opts, (regex = fn(str, opts))); return regex; } function memo(key, opts, regex) { cache[key] = {regex: regex, opts: opts}; } /** * Expose `cache` */ module.exports.cache = cache; module.exports.basic = basic;
Version data entries
23 entries across 23 versions & 10 rubygems