UNPKG

react-router-ga

Version:

[![Downloads](https://img.shields.io/npm/dm/react-router-ga)](https://npm.im/react-router-ga) [![Version](https://img.shields.io/npm/v/react-router-ga)](https://npm.im/react-router-ga) [![License](https://img.shields.io/npm/l/react-router-ga)](https://ope

70 lines (55 loc) 1.27 kB
'use strict'; var regex = require('regex-not'); var Cache = require('fragment-cache'); /** * Utils */ var utils = module.exports; var cache = utils.cache = new Cache(); /** * Cast `val` to an array * @return {Array} */ utils.arrayify = function(val) { if (!Array.isArray(val)) { return [val]; } return val; }; /** * Memoize a generated regex or function */ utils.memoize = function(type, pattern, options, fn) { var key = utils.createKey(type + pattern, options); if (cache.has(type, key)) { return cache.get(type, key); } var val = fn(pattern, options); if (options && options.cache === false) { return val; } cache.set(type, key, val); return val; }; /** * Create the key to use for memoization. The key is generated * by iterating over the options and concatenating key-value pairs * to the pattern string. */ utils.createKey = function(pattern, options) { var key = pattern; if (typeof options === 'undefined') { return key; } for (var prop in options) { key += ';' + prop + '=' + String(options[prop]); } return key; }; /** * Create the regex to use for matching text */ utils.createRegex = function(str) { var opts = {contains: true, strictClose: false}; return regex(str, opts); };