Sha256: c946f386af629f9322b12c6860f2f1d6f8eb2cc7c8e8aa78c25a61f98eaf1b53
Contents?: true
Size: 1.28 KB
Versions: 16
Compression:
Stored size: 1.28 KB
Contents
/*! * regex-cache <https://github.com/jonschlinkert/regex-cache> * * Copyright (c) 2015 Jon Schlinkert. * Licensed under the MIT license. */ 'use strict'; var isPrimitive = require('is-primitive'); var equal = require('is-equal-shallow'); /** * 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()); } 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` */ var cache = module.exports.cache = {}; var basic = module.exports.basic = {};
Version data entries
16 entries across 16 versions & 3 rubygems