sa6anw.se/clean_language_blocks.py

50 lines
1.6 KiB
Python

import os
import re
import shutil
SOURCE_DIR = "docs"
ENGLISH_DIR = os.path.join(SOURCE_DIR, "en")
# Kopiera alla filer från docs/ till docs/en/
if os.path.exists(ENGLISH_DIR):
shutil.rmtree(ENGLISH_DIR)
shutil.copytree(SOURCE_DIR, ENGLISH_DIR)
def clean_file(path, keep_lang):
with open(path, "r", encoding="utf-8") as f:
content = f.read()
# Ta bort språkblock som inte ska behållas
if keep_lang == "sv":
content = re.sub(r":::\s*en\s*\n(.*?)\n:::", "", content, flags=re.DOTALL)
elif keep_lang == "en":
content = re.sub(r":::\s*sv\s*\n(.*?)\n:::", "", content, flags=re.DOTALL)
# Ta bort språkblock-taggar för det språk vi behåller
content = re.sub(r":::\s*(sv|en)", "", content)
content = re.sub(r":::", "", content)
# Hantera inline-översättningar: [:sv]Text[:], [:en]Text[:]
def inline_replacer(match):
lang = match.group(1)
text = match.group(2)
return text if lang == keep_lang else ""
# Använd re.DOTALL för att hantera radbrytningar i inline-taggar
content = re.sub(r"\[:(sv|en)](.*?)\[:\]", inline_replacer, content, flags=re.DOTALL)
with open(path, "w", encoding="utf-8") as f:
f.write(content.strip() + "\n")
# Rensa svenska filer i docs/
for filename in os.listdir(SOURCE_DIR):
path = os.path.join(SOURCE_DIR, filename)
if os.path.isfile(path) and filename.endswith(".md"):
clean_file(path, keep_lang="sv")
# Rensa engelska filer i docs/en/
for filename in os.listdir(ENGLISH_DIR):
path = os.path.join(ENGLISH_DIR, filename)
if os.path.isfile(path) and filename.endswith(".md"):
clean_file(path, keep_lang="en")