diff options
Diffstat (limited to 'node_modules/locutus/php/strings/str_replace.js')
-rw-r--r-- | node_modules/locutus/php/strings/str_replace.js | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/node_modules/locutus/php/strings/str_replace.js b/node_modules/locutus/php/strings/str_replace.js new file mode 100644 index 0000000..2ced641 --- /dev/null +++ b/node_modules/locutus/php/strings/str_replace.js @@ -0,0 +1,85 @@ +'use strict'; + +var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; + +module.exports = function str_replace(search, replace, subject, countObj) { + // eslint-disable-line camelcase + // discuss at: http://locutus.io/php/str_replace/ + // original by: Kevin van Zonneveld (http://kvz.io) + // improved by: Gabriel Paderni + // improved by: Philip Peterson + // improved by: Simon Willison (http://simonwillison.net) + // improved by: Kevin van Zonneveld (http://kvz.io) + // improved by: Onno Marsman (https://twitter.com/onnomarsman) + // improved by: Brett Zamir (http://brett-zamir.me) + // revised by: Jonas Raoni Soares Silva (http://www.jsfromhell.com) + // bugfixed by: Anton Ongson + // bugfixed by: Kevin van Zonneveld (http://kvz.io) + // bugfixed by: Oleg Eremeev + // bugfixed by: Glen Arason (http://CanadianDomainRegistry.ca) + // bugfixed by: Glen Arason (http://CanadianDomainRegistry.ca) + // input by: Onno Marsman (https://twitter.com/onnomarsman) + // input by: Brett Zamir (http://brett-zamir.me) + // input by: Oleg Eremeev + // note 1: The countObj parameter (optional) if used must be passed in as a + // note 1: object. The count will then be written by reference into it's `value` property + // example 1: str_replace(' ', '.', 'Kevin van Zonneveld') + // returns 1: 'Kevin.van.Zonneveld' + // example 2: str_replace(['{name}', 'l'], ['hello', 'm'], '{name}, lars') + // returns 2: 'hemmo, mars' + // example 3: str_replace(Array('S','F'),'x','ASDFASDF') + // returns 3: 'AxDxAxDx' + // example 4: var countObj = {} + // example 4: str_replace(['A','D'], ['x','y'] , 'ASDFASDF' , countObj) + // example 4: var $result = countObj.value + // returns 4: 4 + + var i = 0; + var j = 0; + var temp = ''; + var repl = ''; + var sl = 0; + var fl = 0; + var f = [].concat(search); + var r = [].concat(replace); + var s = subject; + var ra = Object.prototype.toString.call(r) === '[object Array]'; + var sa = Object.prototype.toString.call(s) === '[object Array]'; + s = [].concat(s); + + var $global = typeof window !== 'undefined' ? window : global; + $global.$locutus = $global.$locutus || {}; + var $locutus = $global.$locutus; + $locutus.php = $locutus.php || {}; + + if ((typeof search === 'undefined' ? 'undefined' : _typeof(search)) === 'object' && typeof replace === 'string') { + temp = replace; + replace = []; + for (i = 0; i < search.length; i += 1) { + replace[i] = temp; + } + temp = ''; + r = [].concat(replace); + ra = Object.prototype.toString.call(r) === '[object Array]'; + } + + if (typeof countObj !== 'undefined') { + countObj.value = 0; + } + + for (i = 0, sl = s.length; i < sl; i++) { + if (s[i] === '') { + continue; + } + for (j = 0, fl = f.length; j < fl; j++) { + temp = s[i] + ''; + repl = ra ? r[j] !== undefined ? r[j] : '' : r[0]; + s[i] = temp.split(f[j]).join(repl); + if (typeof countObj !== 'undefined') { + countObj.value += temp.split(f[j]).length - 1; + } + } + } + return sa ? s : s[0]; +}; +//# sourceMappingURL=str_replace.js.map
\ No newline at end of file |