1'use strict';
2
3const stringReplaceAll = (string, substring, replacer) => {
4	let index = string.indexOf(substring);
5	if (index === -1) {
6		return string;
7	}
8
9	const substringLength = substring.length;
10	let endIndex = 0;
11	let returnValue = '';
12	do {
13		returnValue += string.substr(endIndex, index - endIndex) + substring + replacer;
14		endIndex = index + substringLength;
15		index = string.indexOf(substring, endIndex);
16	} while (index !== -1);
17
18	returnValue += string.substr(endIndex);
19	return returnValue;
20};
21
22const stringEncaseCRLFWithFirstIndex = (string, prefix, postfix, index) => {
23	let endIndex = 0;
24	let returnValue = '';
25	do {
26		const gotCR = string[index - 1] === '\r';
27		returnValue += string.substr(endIndex, (gotCR ? index - 1 : index) - endIndex) + prefix + (gotCR ? '\r\n' : '\n') + postfix;
28		endIndex = index + 1;
29		index = string.indexOf('\n', endIndex);
30	} while (index !== -1);
31
32	returnValue += string.substr(endIndex);
33	return returnValue;
34};
35
36module.exports = {
37	stringReplaceAll,
38	stringEncaseCRLFWithFirstIndex
39};
40