Initial commit.

This commit is contained in:
raute 2024-04-12 16:47:49 +02:00
commit f918c09a35
2 changed files with 72 additions and 0 deletions

10
README.md Normal file
View File

@ -0,0 +1,10 @@
# llplenum
A simple script to convert the minutes of a plenum from Markdown to Dokuwiki (using Pandoc).
## Usage
Copy the Markdown code to clipboard and call this script. You'll the find the Dokuwiki code in your clipboard, ready to paste.
## Dependencies
- pandoc
- xclip

62
llplenum Executable file
View File

@ -0,0 +1,62 @@
#!/usr/bin/env python3
import datetime
import re
import subprocess
import sys
months = ["",
"Januar", "Februar", "März",
"April", "Mai", "Juni",
"Juli", "August", "September",
"Oktober", "November", "Dezember"]
clipboard = subprocess.check_output(["xclip", "-out", "-selection", "clipboard"]).decode()
m = re.match(
r"# ([0-9][0-9]+)\. Plenum .+ ([0-9]{1,2})\. (" + "|".join(months[1:]) + ") (20[0-9]{2})",
clipboard)
if not m:
print("Error: Überschrift nicht erkannt.", file=sys.stderr)
sys.exit(1)
num = int(m.group(1))
month_name = m.group(3)
year = int(m.group(4))
try:
month = months.index(month_name)
except ValueError:
print("Error: Ungültiger Monat.", file=sys.stderr)
sys.exit(2)
year_earlier = (datetime.date(year, month, 1) - datetime.timedelta(days=31)).year
year_later = (datetime.date(year, month, 1) + datetime.timedelta(days=31)).year
month_earlier = month - 1
if month_earlier == 0:
month_earlier = 12
month_later = month + 1
if month_later == 13:
month_later = 1
month_name = month_name.lower()
earlier = "verein:plenum:{}_{}_{}".format(str(num - 1).rjust(3, "0"),
months[month_earlier].lower(),
year_earlier)
later = "verein:plenum:{}_{}_{}".format(str(num + 1).rjust(3, "0"),
months[month_later].lower(),
year_later)
links = "[⇐ vorheriges Plenum]({}) | [nächstes Plenum ⇒]({})".format(earlier,
later)
markdown = "{}\n\n{}".format(links, clipboard)
pandoc_output = subprocess.check_output(["pandoc", "-f", "markdown", "-t", "dokuwiki"],
input=markdown.encode()).decode()
replaced = pandoc_output.replace("[x]",
"<fs x-large>☑</fs>").replace("[ ]",
"<fs x-large>☐</fs>")
subprocess.run(["xclip", "-in", "-selection", "clipboard"], input=replaced.encode())
print("Dokuwiki-Code kopiert.")