def __init__(self, data, numOld, numNew): if data: for case in switch(data[0]): if case('@'): self.numOld = '...' self.numNew = '...' self.set_type('chunk') break if case('-'): self.numOld = numOld self.numNew = '' self.set_type('old') break if case('+'): self.numOld = '' self.numNew = numNew self.set_type('new') break if case(): self.numNew = numNew self.numOld = numOld self.set_line(data) else: self.numNew = numNew self.numOld = numOld
def read_diff_lines(self, difflines): diffs = [] lineNumOld = 0 lineNumNew = 0 diff = None # self.logger.debug(difflines) for diffline in difflines: if diffline[0:4] == "diff": if diff: # self.logger.debug('ajout de diff dans diffs') diffs.append(diff) diff = GitDiff() # self.logger.debug('diffline : %s' % diffline) matches = re.search("^diff --[\S]+ a/?(.+) b/?", diffline) # matches = re.search('^diff[\s].*[\s].*[\s](?:.*\/)*(.*)', diffline) # self.logger.debug('matches %s' % matches.group(1)) if matches: diff.set_file(matches.group(1)) continue if diffline[0:5] == "index": diff.set_index(diffline) continue if diffline[0:3] == "---": diff.set_old(diffline) continue if diffline[0:3] == "+++": diff.set_new(diffline) continue if diffline[0:6] == "Binary": m = re.search("Binary files (.+) and (.+) differ") if m: diff.set_old(m.group(1)) diff.set_new(" {" + m.group(2) + "}") if len(diffline) > 0: for case in switch(diffline[0]): if case("@"): m2 = re.search("@@ -([0-9]+)", diffline) if m2: # self.logger.debug('m2 : %s' % m2.group(1)) lineNumOld = int(m2.group(1)) - 1 lineNumNew = int(m2.group(1)) - 1 break if case("-"): lineNumOld = lineNumOld + 1 break if case("+"): lineNumNew = lineNumNew + 1 break if case(): lineNumNew = lineNumNew + 1 lineNumOld = lineNumOld + 1 else: lineNumNew = lineNumNew + 1 lineNumOld = lineNumOld + 1 # self.logger.debug('ajout de ligne') diff.add_line(diffline, lineNumOld, lineNumNew) if diff: # self.logger.debug('ajout de diff dans diffs 2') diffs.append(diff) return diffs