Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
@skava/modules / ___dist / chain-able / src / deps / fp / replaceWith.js
Size: Mime:
"use strict";

const keys = require("../util/keysObjOrArray");

const curry = require("./curry");

const pipe = require("./pipe");

const 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'
 *
 */


const replaceWith = (map, str, castToMatcher = false) => {
  const replacements = keys(map).map(key => replace(key, map[key]));
  return pipe.apply(null, replacements)(str);
};

module.exports = curry(2, replaceWith);