"""公立学校版のSVGから、下部の【課題・論点】を省いた「簡易版」を作る。 - 課題欄(枠・見出し・12項目)と、フロー上の赤い「課題N」バッジを削除 - 「課題N」を説明していた ※6 の注記も削除 - 課題欄より下の要素(参考欄・注記・下部バー)を上へ寄せ、SVGの高さを縮める - 課題欄があった位置に、課題はこのサイトに載っている旨の注記を入れる このスクリプトは make-flow-pdfs.py より先に実行すること(PDFはSVGから作るため)。 使い方: python scripts/make-flow-simple.py """ import re import subprocess import sys from pathlib import Path sys.stdout.reconfigure(encoding="utf-8") SRC = Path("public/ijime-judai-jitai/images/ijime-judai-flow.svg") DST = Path("public/ijime-judai-jitai/images/ijime-judai-flow-simple.svg") FF = "'Noto Sans JP','Yu Gothic','Hiragino Kaku Gothic ProN',Meiryo,sans-serif" SHIFT = 525 # 課題欄を外したぶん、下の要素を上へ GAP_Y = 2941 # ここより下の y をずらす # 「最終更新」の日付を先に更新する(簡易版は公立版SVGから作るため) subprocess.run([sys.executable, "scripts/stamp-flow-version.py"], check=True) text = SRC.read_text(encoding="utf-8") # 1) 課題欄(枠・見出し・注記・12項目)を削除 start = text.index('.*?\n', "", text, flags=re.S) # 3) 「課題N」の説明(※6)を削除 text, n_note = re.subn(r']*>※6[^<]*\n', "", text) # 4) 出典の行から「課題欄」の語を外す # 簡易版には課題欄がないので、ライセンス行の但し書きも外す text = text.replace("課題欄のリンク先:yasutakeyohei.com", "各課題の詳細:yasutakeyohei.com/ijime-judai-jitai/flow/") text = text.replace("内容を変えず(課題欄の省略・一部の切り取りは可)、", "内容を変えず(一部の切り取りは可)、") # 5) 課題欄より下の要素を上へ寄せる def _shift(m): v = float(m.group(2)) v = v - SHIFT if v >= GAP_Y else v return f'{m.group(1)}="{int(v) if v == int(v) else v:g}"' text = re.sub(r'\b(y|y1|y2)="([0-9.]+)"', _shift, text) # 6) SVGの高さを縮める text = text.replace('height="3954"', f'height="{3954 - SHIFT}"') text = text.replace('width="1820" height="4164" viewBox="0 0 1820 4164"', f'width="1820" height="{4164 - SHIFT}" viewBox="0 0 1820 {4164 - SHIFT}"') # 7) タイトルに簡易版と分かるようにする text = text.replace(">いじめの重大事態の対応フロー(ロール別)<", ">いじめの重大事態の対応フロー(ロール別)簡易版<") # 8) 課題欄があった位置に、課題はこのサイトにある旨の注記を入れる note = ( f'\n' f'' f'※この図は、下部の【課題・論点】を省いた簡易版です。各課題の内容は、' f'この図の解説ページ(yasutakeyohei.com/ijime-judai-jitai/flow/)に掲載しています。\n' ) text = text.replace('