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:
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)