Diff export

This commit is contained in:
jaseg 2021-09-27 18:50:33 +02:00
parent 2219846a12
commit fffef5e794
3 changed files with 29 additions and 6 deletions

View file

@ -8,7 +8,7 @@ SHELL := bash
MAKEFLAGS += --warn-undefined-variables
MAKEFLAGS += --no-builtin-rules
DIFF_VERSION ?= v2.0
DIFF_VERSION ?= v3.0
main_tex ?= ihsm_paper
brief_tex ?= ihsm_tech_report

View file

@ -2,6 +2,7 @@
import re
import subprocess
import string
import click
@ -21,9 +22,11 @@ def generate_git_tex_diff(texfile, bibliography, revision):
bib_proc = subprocess.run(['git', 'diff', f'-U{bib_lines+1}', '--word-diff', '--color=always', revision, bibliography],
check=True, capture_output=True)
addition_re = re.compile('\033\\[32m\\{\\+(.*?)([^\\\\]%.*?)?\\+\\}\033\\[m')
deletion_re = re.compile('\033\\[31m\\[-(.*?)([^\\\\]%.*?)?\\-]\033\\[m')
ADDITION_RE_R = '\033\\[32m\\{\\+(.*?)([^\\\\]%.*?)?\\+\\}\033\\[m'
DELETION_RE_R = '\033\\[31m\\[-(.*?)([^\\\\]%.*?)?\\-]\033\\[m'
addition_re = re.compile(ADDITION_RE_R)
deletion_re = re.compile(DELETION_RE_R)
combined_re = re.compile(f'{DELETION_RE_R}{ADDITION_RE_R}')
csi_re = re.compile('\033\\[.*?m')
bibtex_entry_def_re = re.compile('@.*?{(.*?),')
@ -57,6 +60,26 @@ def generate_git_tex_diff(texfile, bibliography, revision):
line = line.rstrip()
if document_started: # diff results in preamble
def suppress_small_changes(match):
old, _1, new, _2 = match.groups()
new_chars = list(new)
for char in old:
if char not in string.ascii_letters:
continue
if char not in new_chars:
return match.group(0) # return original text
new_chars.remove(char)
if any(char in string.ascii_letters for char in new_chars):
return match.group(0) # return original text
return new
line = combined_re.sub(suppress_small_changes, line)
line = addition_re.sub(r' \\color{diffgreen}\1 \\color{black}', line)
line = deletion_re.sub(r' \\color{diffred}\1 \\color{black}', line)
@ -67,9 +90,8 @@ def generate_git_tex_diff(texfile, bibliography, revision):
print('\\definecolor{diffgreen}{HTML}{1e8449}')
print('\\definecolor{diffred}{HTML}{cb4335}')
line = addition_re.sub(r'\1', line)
line = deletion_re.sub(r'\1', line)
line = deletion_re.sub(r'', line)
line = csi_re.sub('', line)
print(line)

View file

@ -31,6 +31,7 @@
\usepackage{subcaption}
\usepackage{array}
\usepackage{hyperref}
\usepackage{xcolor}
\renewcommand{\floatpagefraction}{.8}
\newcommand{\degree}{\ensuremath{^\circ}}