0
我想在Javascript中构建一个文件比较脚本,它需要两个版本的文件并输出类似Github的东西来显示添加和删除。尽管如此,我仍然遇到了算法的逻辑问题。以下是我过程中的伪代码:文件比较脚本的逻辑
var j = 0;
// check current file line by line
for(i=0; i < currentFileArr.length; i++){
// see if the current line is different
if(currentFileArr[i] !== previousFileArr[j]){
if(previousFile.contains(currentFileArr[i])){
// line is a deletion. find next line that wasn't deleted
while(currentFileArr[i] !== previousFileArr[j]){
j++;
}
} else {
// line is an addition
}
} else { // lines are the same
j++;
}
}
主要问题是对于不是唯一的行。就像只有一个花括号的新线条或线条一样。
或者如果我添加重复行?或删除重复的行?或重新缩进整个代码而不改变任何东西?对于一个简单的项目来说,这是一座桥梁我不久前尝试了一些非常接近你的东西......不要重新发明轮子;花时间定制https://code.google.com/p/google-diff-match-patch/以适应您的项目需求。如果你必须坚持你的代码,至少在比较前修剪()行以忽略空白和缩进变化... – dandavis