/*! * preserve * * Copyright (c) 2014-2015, Jon Schlinkert. * Licensed under the MIT license. */ 'use strict'; /** * Replace tokens in `str` with a temporary, heuristic placeholder. * * ```js * tokens.before('{a\\,b}'); * //=> '{__ID1__}' * ``` * * @param {String} `str` * @return {String} String with placeholders. * @api public */ exports.before = function before(str, re) { return str.replace(re, function (match) { var id = randomize(); cache[id] = match; return '__ID' + id + '__'; }); }; /** * Replace placeholders in `str` with original tokens. * * ```js * tokens.after('{__ID1__}'); * //=> '{a\\,b}' * ``` * * @param {String} `str` String with placeholders * @return {String} `str` String with original tokens. * @api public */ exports.after = function after(str) { return str.replace(/__ID(.{5})__/g, function (_, id) { return cache[id]; }); }; function randomize() { return Math.random().toString().slice(2, 7); } var cache = {};