create redacted pdf version
This commit is contained in:
parent
f7ae8705d0
commit
f5e639f59c
2 changed files with 65 additions and 5 deletions
16
Makefile
16
Makefile
|
@ -21,7 +21,7 @@ pdfFilesInt := $(call suffixSubst,$(mdFiles),md,pdf,$(suffixInt))
|
||||||
texFilesInt := $(call suffixSubst,$(mdFiles),md,tex,$(suffixInt))
|
texFilesInt := $(call suffixSubst,$(mdFiles),md,tex,$(suffixInt))
|
||||||
|
|
||||||
.PHONY: all pdf pdfPub pdfInt tex texPub texInt
|
.PHONY: all pdf pdfPub pdfInt tex texPub texInt
|
||||||
all: pdfPub
|
all: pdf
|
||||||
|
|
||||||
pdf: pdfPub pdfInt
|
pdf: pdfPub pdfInt
|
||||||
pdfPub: $(pdfFilesPub)
|
pdfPub: $(pdfFilesPub)
|
||||||
|
@ -47,8 +47,14 @@ compile = pandoc \
|
||||||
--variable lang:de-DE \
|
--variable lang:de-DE \
|
||||||
--output $(2)
|
--output $(2)
|
||||||
|
|
||||||
%.pdf: %.md lenaisten-defs.sty
|
%$(suffixPub).pdf: %.md lenaisten-defs.sty
|
||||||
$(call compile,$<,$@)
|
python3 ./redact.py $< | $(call compile,-,$@)
|
||||||
|
|
||||||
%.tex: %.md lenaisten-defs.sty
|
%$(suffixPub).tex: %.md lenaisten-defs.sty
|
||||||
$(call compile,$<,$@)
|
python3 ./redact.py $< | $(call compile,-,$@)
|
||||||
|
|
||||||
|
%$(suffixInt).pdf: %.md lenaisten-defs.sty
|
||||||
|
python3 ./redact.py -i $< | $(call compile,-,$@)
|
||||||
|
|
||||||
|
%$(suffixInt).tex: %.md lenaisten-defs.sty
|
||||||
|
python3 ./redact.py -i $< | $(call compile,-,$@)
|
||||||
|
|
54
redact.py
Normal file
54
redact.py
Normal file
|
@ -0,0 +1,54 @@
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
# parse CLI arguments
|
||||||
|
import argparse
|
||||||
|
|
||||||
|
parser = argparse.ArgumentParser()
|
||||||
|
parser.add_argument("file", help="File to open")
|
||||||
|
parser.add_argument("-i", "--internal", help="Output internal version", action="store_true")
|
||||||
|
|
||||||
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
# read file
|
||||||
|
from pathlib import Path
|
||||||
|
txt = Path(args.file).read_text()
|
||||||
|
|
||||||
|
# redaction syntax
|
||||||
|
import re
|
||||||
|
inlinepat = re.compile(r"\(\(\((([^>]*?):::)?(.*?)\)\)\)", re.MULTILINE|re.DOTALL)
|
||||||
|
tokenpat = re.compile(r"\[redact(:::(.*?))?\](.*?)\[\/redact\]", re.MULTILINE|re.DOTALL)
|
||||||
|
|
||||||
|
# match handling
|
||||||
|
def subredact(match):
|
||||||
|
_, reason, content = match.groups()
|
||||||
|
|
||||||
|
if reason:
|
||||||
|
reason = reason.strip()
|
||||||
|
else:
|
||||||
|
reason = ""
|
||||||
|
|
||||||
|
if args.internal:
|
||||||
|
retval = content.lstrip(" ").rstrip()
|
||||||
|
# retval = re.sub(r"(\s*[+\-\*]\s+)?(.*)", r"\1*\2*", retval, re.MULTILINE)
|
||||||
|
|
||||||
|
retval = f"*{retval}*"
|
||||||
|
retval = re.sub(r"\n(\s*[+\-\*]\s+)?", r"*\n\1*", retval, re.MULTILINE)
|
||||||
|
|
||||||
|
else:
|
||||||
|
retval = reason + " [intern]"
|
||||||
|
|
||||||
|
# DEBUG output
|
||||||
|
# print("GROUPS", match.groups())
|
||||||
|
# print("REASON", reason.strip())
|
||||||
|
# print("CONTENT", content.strip())
|
||||||
|
# print("RET", retval)
|
||||||
|
# print("~~~~~~")
|
||||||
|
|
||||||
|
return retval
|
||||||
|
|
||||||
|
# matching
|
||||||
|
txt = tokenpat.sub(subredact, txt)
|
||||||
|
txt = inlinepat.sub(subredact, txt)
|
||||||
|
|
||||||
|
# pipe to stdout
|
||||||
|
print(txt)
|
Loading…
Reference in a new issue