replace

import _curry3 from '../_internals/_curry3.js'

/**
 * @name replace
 * @function
 * @since v0.10.0
 * @category String
 * @sig RegExp|String -> String -> String -> String
 * @description Replaces a substring or regex match in a string and then replaces it with the provided value
 * @param {String|RegExp} a The String or RegExp we want to find and replace
 * @param {String} b The value we want to replace it with
 * @param {String} str The String to search through
 * @return {String} The resulting string
 * @example
 * import { replace } from 'kyanite'
 *
 * replace('foo', 'bar', 'foofoo') // => 'barfoo'
 * replace(/foo/g, 'bar', 'foofoo') // => 'barbar'
 *
 * // It's also curried
 * const rep = replace('foo')
 * const with = rep('bar')
 *
 * rep('baz', 'foofoo') // => 'bazfoo'
 * with('foofoo') // => 'barfoo'
 */
const replace = (a, b, str) => str.replace(a, b)

export default _curry3(replace)