(line: string, linePrefix?: string, extraPrefix?: string)
| 20 | |
| 21 | const baseDiffFilenamePrefixes = ['a/', 'b/', 'i/', 'w/', 'c/', 'o/']; |
| 22 | function getFilename(line: string, linePrefix?: string, extraPrefix?: string): string { |
| 23 | const prefixes = extraPrefix !== undefined ? [...baseDiffFilenamePrefixes, extraPrefix] : baseDiffFilenamePrefixes; |
| 24 | |
| 25 | const FilenameRegExp = linePrefix |
| 26 | ? new RegExp(`^${escapeForRegExp(linePrefix)} "?(.+?)"?$`) |
| 27 | : new RegExp('^"?(.+?)"?$'); |
| 28 | |
| 29 | const [, filename = ''] = FilenameRegExp.exec(line) || []; |
| 30 | const matchingPrefix = prefixes.find(p => filename.indexOf(p) === 0); |
| 31 | const fnameWithoutPrefix = matchingPrefix ? filename.slice(matchingPrefix.length) : filename; |
| 32 | |
| 33 | // Cleanup timestamps generated by the unified diff (diff command) as specified in |
| 34 | // https://www.gnu.org/software/diffutils/manual/html_node/Detailed-Unified.html |
| 35 | // Ie: 2016-10-25 11:37:14.000000000 +0200 |
| 36 | return fnameWithoutPrefix.replace(/\s+\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}(?:\.\d+)? [+-]\d{4}.*$/, ''); |
| 37 | } |
| 38 | |
| 39 | function getSrcFilename(line: string, srcPrefix?: string): string | undefined { |
| 40 | return getFilename(line, '---', srcPrefix); |
no test coverage detected
searching dependent graphs…