foop
Version:
interfaces that describe their intentions.
44 lines (39 loc) • 3.85 kB
JavaScript
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=