From 9205e5e0a1194a6702754e78e4026776c7f69968 Mon Sep 17 00:00:00 2001 From: Rodrigo Fernandes Date: Tue, 23 Feb 2016 21:40:56 +0000 Subject: [PATCH] Fix filename parsing on filenames with tabs * Why would someone create files with tabs? --- bower.json | 2 +- package.json | 2 +- src/diff-parser.js | 24 ++++++++++++++++++------ 3 files changed, 20 insertions(+), 8 deletions(-) diff --git a/bower.json b/bower.json index 40a0e46..f231f38 100644 --- a/bower.json +++ b/bower.json @@ -1,6 +1,6 @@ { "name": "diff2html", - "version": "2.0.0-beta2", + "version": "2.0.0-beta3", "homepage": "http://rtfpessoa.github.io/diff2html/", "description": "Fast Diff to colorized HTML", "keywords": [ diff --git a/package.json b/package.json index 3d3db24..3ac2e0e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "diff2html", - "version": "2.0.0-beta2", + "version": "2.0.0-beta3", "homepage": "http://rtfpessoa.github.io/diff2html/", "description": "Fast Diff to colorized HTML", "keywords": [ diff --git a/src/diff-parser.js b/src/diff-parser.js index 52c6984..b34ff04 100644 --- a/src/diff-parser.js +++ b/src/diff-parser.js @@ -161,10 +161,10 @@ if (utils.startsWith(line, 'diff')) { startFile(); } else if (currentFile && !currentFile.oldName && (values = getSrcFilename(line, config))) { - currentFile.oldName = values[1]; + currentFile.oldName = values; currentFile.language = getExtension(currentFile.oldName, currentFile.language); } else if (currentFile && !currentFile.newName && (values = getDstFilename(line, config))) { - currentFile.newName = values[1]; + currentFile.newName = values; currentFile.language = getExtension(currentFile.newName, currentFile.language); } else if (currentFile && utils.startsWith(line, '@@')) { startBlock(line); @@ -227,7 +227,7 @@ } function getSrcFilename(line, cfg) { - var prefixes = ["a\\/", "i\\/", "w\\/", "c\\/", "o\\/"]; + var prefixes = ["a/", "i/", "w/", "c/", "o/"]; if (cfg.srcPrefix) prefixes.push(cfg.srcPrefix); @@ -235,7 +235,7 @@ } function getDstFilename(line, cfg) { - var prefixes = ["b\\/", "i\\/", "w\\/", "c\\/", "o\\/"]; + var prefixes = ["b/", "i/", "w/", "c/", "o/"]; if (cfg.dstPrefix) prefixes.push(cfg.dstPrefix); @@ -243,8 +243,20 @@ } function _getFilename(linePrefix, line, prefixes) { - var prefixesStr = prefixes.join("|"); - return new RegExp('^' + linePrefix + ' "?(?:' + prefixesStr + ')(.+?)"?$').exec(line); + var FilenameRegExp = new RegExp('^' + linePrefix + ' "?(.+?)"?$'); + + var filename; + var values = FilenameRegExp.exec(line); + if (values && values[1]) { + filename = values[1]; + var prefix = prefixes.find(function(prefix) { + return filename.startsWith(prefix); + }); + + if (prefix) filename = filename.slice(prefix.length); // remove prefix if exists + } + + return filename; } module.exports.DiffParser = new DiffParser();