"""pptxgenjs が書かない東アジア用フォントと言語を補う。apply_theme の後に実行する。
テーマの ea フォントと Jpan スクリプトのフォントを游ゴシックにし、テキストの言語を ja-JP にする。"""
import re
import shutil
import sys
import tempfile
import zipfile

FONT = "Yu Gothic"


def fix(path: str) -> None:
    tmp = tempfile.mktemp(suffix=".pptx")
    with zipfile.ZipFile(path) as zin, zipfile.ZipFile(tmp, "w", zipfile.ZIP_DEFLATED) as zout:
        for item in zin.infolist():
            data = zin.read(item.filename)
            if item.filename.startswith("ppt/theme/") and item.filename.endswith(".xml"):
                s = data.decode("utf-8")
                s = s.replace('<a:ea typeface=""/>', f'<a:ea typeface="{FONT}"/>')
                s = re.sub(r'<a:font script="Jpan" typeface="[^"]*"/>', f'<a:font script="Jpan" typeface="{FONT}"/>', s)
                data = s.encode("utf-8")
            elif re.match(r"ppt/(slides|slideLayouts|slideMasters)/[^/]+\.xml$", item.filename):
                s = data.decode("utf-8")
                s = s.replace('lang="en-US"', 'lang="ja-JP" altLang="en-US"')
                data = s.encode("utf-8")
            zout.writestr(item, data)
    shutil.move(tmp, path)


if __name__ == "__main__":
    for p in sys.argv[1:]:
        fix(p)
