couple-repo/WorkTingting/28_10_2025-parents/fix_all_unwrapped.py
StillHammer ab94be513d Add Chinese learning plan + Projects documentation + Tingting work
- couple_backlog/28_octobre_2025.md: Multi-vector plan (Tandem exchange + Aissia)
- couple_backlog/25_octobre_2025.md: Previous backlog entry
- Projects/aissia.md: AISSIA project with LanguageLearningModule integration
- Projects/chinese_audio_tts_pipeline.md, groveengine_framework.md, social_network_manager.md
- Projects/LeBonCoup/: Reorganized into folder
- WorkTingting/28_10_2025-parents/: Parent meeting presentation materials
- ToRemember/Japan_Conducts.md: Cultural notes

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-13 19:36:03 +08:00

97 lines
3.7 KiB
Python

#!/usr/bin/env python3
import re
import os
slides_dir = 'slides'
# Règles : wrapper les textes dans divs qui ne sont pas déjà dans des balises
def wrap_text_in_divs(content):
# Pattern pour trouver du texte nu dans des divs
# Cherche : <div...>TEXTE</div> où TEXTE n'est pas déjà dans <p>, <h>, <ul>, etc.
lines = content.split('\n')
result = []
for line in lines:
# Si la ligne contient "date" avec emoji
if '📅' in line and '<div class="date">' in line:
line = line.replace('<div class="date">📅', '<div class="date"><p>📅')
line = line.replace('</div>', '</p></div>', 1)
# Si ligne contient role-title
if '<div class="role-title">' in line and not '<p>' in line:
match = re.search(r'<div class="role-title">([^<]+)</div>', line)
if match:
text = match.group(1)
line = line.replace(f'<div class="role-title">{text}</div>',
f'<div class="role-title"><p>{text}</p></div>')
# Arrows
if '<div class="arrow' in line and '' in line:
line = line.replace('>→<', '><p>→</p><')
if '<div class="arrow' in line and '' in line:
line = line.replace('>←<', '><p>←</p><')
if '<div class="arrow' in line and '' in line:
line = line.replace('>↓<', '><p>↓</p><')
# Success circle
if '<div class="success-circle">' in line:
# Next lines until </div>
in_circle = True
result.append(line)
continue
if 'success-circle' in ''.join(result[-3:]) and in_circle and '</div>' in line:
# Wrap content between
idx = len(result) - 1
while idx >= 0 and '<div class="success-circle">' not in result[idx]:
idx -= 1
if idx >= 0:
# Found start, wrap everything between
circle_content = []
for i in range(idx + 1, len(result)):
circle_content.append(result[i].strip())
result = result[:idx+1]
text = '<br/>'.join([c for c in circle_content if c])
result.append(f' <p>{text}</p>')
result.append(line)
in_circle = False
continue
result.append(line)
return '\n'.join(result)
# Simple fix: just wrap everything obvious
def simple_wrap(filepath):
with open(filepath, 'r', encoding='utf-8') as f:
content = f.read()
# Fix date
content = re.sub(r'<div class="date">📅([^<]+)</div>',
r'<div class="date"><p>📅\1</p></div>', content)
# Fix role-title
content = re.sub(r'<div class="role-title">([^<]+)</div>',
r'<div class="role-title"><p>\1</p></div>', content)
# Fix arrows
content = content.replace('<div class="arrow arrow-left">\n\n </div>',
'<div class="arrow arrow-left"><p>→</p></div>')
content = content.replace('<div class="arrow arrow-right">\n\n </div>',
'<div class="arrow arrow-right"><p>←</p></div>')
content = content.replace('<div class="arrow arrow-top">\n\n </div>',
'<div class="arrow arrow-top"><p>↓</p></div>')
# Fix success circle
content = re.sub(r'<div class="success-circle">\s*期中\s*<br/>\s*成功\s*</div>',
'<div class="success-circle"><p>期中<br/>成功</p></div>', content, flags=re.DOTALL)
with open(filepath, 'w', encoding='utf-8') as f:
f.write(content)
print(f"Fixed: {filepath}")
# Process slide7
simple_wrap('slides/slide7_midterm.html')
simple_wrap('slides/slide8_commitment.html')