UNPKG

foop

Version:

interfaces that describe their intentions.

44 lines (39 loc) 3.85 kB
var keys = require('../util/keysObjOrArray') var curry = require('./curry') var pipe = require('./pipe') var replace = require('./replace') /** * @desc replace an array of patterns, or an object with {pattern: replacement} * @since v5.0.0 * @memberOf fp * @category String * * @param {RegExp|String} pattern A regular expression or a substring to match. * @param {String} replacement The string to replace the matches with. * @param {String} str The String to do the search and replacement in. * @return {String} The result. * * @curried * @func * @name replaceWith * * @TODO could use `toTester`/`toMatcher` on keys * @TODO might also be using a map * @TODO need to finish the mapping ones, * @TODO need to externalize some functionality as needed point where * @TODO need to tighten up the .method stuff, fully test * * @example * * const stripEh = replaceWith({'eh': ''}) * stripEh('ehs') //=> 's' * */ var replaceWith = function (map, str, castToMatcher) { if ( castToMatcher === void 0 ) castToMatcher = false; var replacements = keys(map) .map(function (key) { return replace(key, map[key]); }) return pipe.apply(null, replacements)(str) } module.exports = curry(2, replaceWith) //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwbGFjZVdpdGguanMiLCJzb3VyY2VzIjpbInJlcGxhY2VXaXRoLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGtleXMgPSByZXF1aXJlKCcuLi91dGlsL2tleXNPYmpPckFycmF5JylcbmNvbnN0IGN1cnJ5ID0gcmVxdWlyZSgnLi9jdXJyeScpXG5jb25zdCBwaXBlID0gcmVxdWlyZSgnLi9waXBlJylcbmNvbnN0IHJlcGxhY2UgPSByZXF1aXJlKCcuL3JlcGxhY2UnKVxuXG4vKipcbiAqIEBkZXNjIHJlcGxhY2UgYW4gYXJyYXkgb2YgcGF0dGVybnMsIG9yIGFuIG9iamVjdCB3aXRoIHtwYXR0ZXJuOiByZXBsYWNlbWVudH1cbiAqIEBzaW5jZSB2NS4wLjBcbiAqIEBtZW1iZXJPZiBmcFxuICogQGNhdGVnb3J5IFN0cmluZ1xuICpcbiAqIEBwYXJhbSB7UmVnRXhwfFN0cmluZ30gcGF0dGVybiBBIHJlZ3VsYXIgZXhwcmVzc2lvbiBvciBhIHN1YnN0cmluZyB0byBtYXRjaC5cbiAqIEBwYXJhbSB7U3RyaW5nfSByZXBsYWNlbWVudCBUaGUgc3RyaW5nIHRvIHJlcGxhY2UgdGhlIG1hdGNoZXMgd2l0aC5cbiAqIEBwYXJhbSB7U3RyaW5nfSBzdHIgVGhlIFN0cmluZyB0byBkbyB0aGUgc2VhcmNoIGFuZCByZXBsYWNlbWVudCBpbi5cbiAqIEByZXR1cm4ge1N0cmluZ30gVGhlIHJlc3VsdC5cbiAqXG4gKiBAY3VycmllZFxuICogQGZ1bmNcbiAqIEBuYW1lIHJlcGxhY2VXaXRoXG4gKlxuICogQFRPRE8gY291bGQgdXNlIGB0b1Rlc3RlcmAvYHRvTWF0Y2hlcmAgb24ga2V5c1xuICogQFRPRE8gbWlnaHQgYWxzbyBiZSB1c2luZyBhIG1hcFxuICogQFRPRE8gbmVlZCB0byBmaW5pc2ggdGhlIG1hcHBpbmcgb25lcyxcbiAqIEBUT0RPIG5lZWQgdG8gZXh0ZXJuYWxpemUgc29tZSBmdW5jdGlvbmFsaXR5IGFzIG5lZWRlZCBwb2ludCB3aGVyZVxuICogQFRPRE8gbmVlZCB0byB0aWdodGVuIHVwIHRoZSAubWV0aG9kIHN0dWZmLCBmdWxseSB0ZXN0XG4gKlxuICogQGV4YW1wbGVcbiAqXG4gKiAgIGNvbnN0IHN0cmlwRWggPSByZXBsYWNlV2l0aCh7J2VoJzogJyd9KVxuICogICBzdHJpcEVoKCdlaHMnKSAvLz0+ICdzJ1xuICpcbiAqL1xuY29uc3QgcmVwbGFjZVdpdGggPSAobWFwLCBzdHIsIGNhc3RUb01hdGNoZXIgPSBmYWxzZSkgPT4ge1xuICBjb25zdCByZXBsYWNlbWVudHMgPSBrZXlzKG1hcClcbiAgICAubWFwKGtleSA9PiByZXBsYWNlKGtleSwgbWFwW2tleV0pKVxuXG4gIHJldHVybiBwaXBlLmFwcGx5KG51bGwsIHJlcGxhY2VtZW50cykoc3RyKVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGN1cnJ5KDIsIHJlcGxhY2VXaXRoKVxuIl0sIm5hbWVzIjpbImNvbnN0Il0sIm1hcHBpbmdzIjoiQUFBQUEsR0FBSyxDQUFDLElBQUksR0FBRyxPQUFPLENBQUMsd0JBQXdCLENBQUM7QUFDOUNBLEdBQUssQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQztBQUNoQ0EsR0FBSyxDQUFDLElBQUksR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDO0FBQzlCQSxHQUFLLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBNkJwQ0EsR0FBSyxDQUFDLFdBQVcsR0FBRyxTQUFBLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxhQUFxQixFQUFFLEFBQUcsQ0FBYjsrQ0FBQSxHQUFHLEtBQUs7QUFBTTtFQUN4REEsR0FBSyxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDO0tBQzNCLEdBQUcsQ0FBQyxVQUFBLEdBQUcsQ0FBQSxDQUFDLEFBQUcsU0FBQSxPQUFPLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFBLENBQUM7O0VBRXJDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsWUFBWSxDQUFDLENBQUMsR0FBRyxDQUFDO0NBQzNDOztBQUVELE1BQU0sQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLENBQUMsRUFBRSxXQUFXLENBQUM7In0=