(text: string)
| 90 | } |
| 91 | |
| 92 | function extractURLsFromSiteFixesConfig(text: string): {urls: string[][]; offsets: Array<[number, number]>} { |
| 93 | const urls: string[][] = []; |
| 94 | // Array of tuples, where first number is an offset of record start and second number is record length. |
| 95 | const offsets: Array<[number, number]> = []; |
| 96 | |
| 97 | let recordStart = 0; |
| 98 | // Delimiter between two blocks |
| 99 | const delimiterRegex = /^\s*={2,}\s*$/gm; |
| 100 | let delimiter: RegExpMatchArray | null; |
| 101 | while ((delimiter = delimiterRegex.exec(text))) { |
| 102 | const nextDelimiterStart = delimiter.index!; |
| 103 | const nextDelimiterEnd = delimiter.index! + delimiter[0].length; |
| 104 | processSiteFixesConfigBlock(text, offsets, recordStart, nextDelimiterStart, urls); |
| 105 | recordStart = nextDelimiterEnd; |
| 106 | } |
| 107 | processSiteFixesConfigBlock(text, offsets, recordStart, text.length, urls); |
| 108 | |
| 109 | return {urls, offsets}; |
| 110 | } |
| 111 | |
| 112 | export function indexSitesFixesConfig(text: string): SiteFixesIndex { |
| 113 | const {urls, offsets: offsetsGrouped} = extractURLsFromSiteFixesConfig(text); |
no test coverage detected