Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 | 33x 33x 17x 16x 19x 19x 19x 16x 3x | // runtime polyfills
import 'core-js/es/string/match-all';
/**
* @returns [`true`, modifiedContent: string] if replacement is successful, [`false`, originalContent] otherwise.
*/
export function replace(
content: string,
{ replaceContent, replacePattern }: { replaceContent: string; replacePattern: string | RegExp }
): [boolean, string] {
const replacePatternOccurrence = content.search(replacePattern);
if (replacePatternOccurrence !== -1) {
return [true, content.replace(replacePattern, replaceContent)];
}
return [false, content];
}
/**
* Inserts content just before first occurrence of provided pattern.
* @returns [`true`, modifiedContent: string] if insertion is successful, [`false`, originalContent] otherwise.
*/
export function insert(
content: string,
{ insertContent, insertPattern }: { insertContent: string; insertPattern: RegExp | string },
insertBeforeLastOccurrence: boolean = false
): [boolean, string] {
Iif (insertBeforeLastOccurrence) {
return insertBeforeLastOccurrenceFun(content, { insertContent, insertPattern });
}
const insertPatternOccurrence = content.search(insertPattern);
if (insertPatternOccurrence !== -1) {
return [
true,
`${content.slice(0, insertPatternOccurrence)}${insertContent}${content.slice(
insertPatternOccurrence
)}`,
];
}
return [false, content];
}
/**
* Finds last occurrence of provided pattern and inserts content just before it.
*@returns [`true`, modifiedContent: string] if insertion is successful, [`false`, originalContent] otherwise.
*/
function insertBeforeLastOccurrenceFun(
content: string,
{ insertContent, insertPattern }: { insertContent: string; insertPattern: RegExp | string }
): [boolean, string] {
const results = [...content.matchAll(new RegExp(insertPattern, 'gm'))];
const patternLastOccurrence = results[results.length - 1];
if (!patternLastOccurrence) {
return [false, content];
}
return [
true,
`${content.slice(0, patternLastOccurrence.index)}${insertContent}${content.slice(
patternLastOccurrence.index
)}`,
];
}
|