Build latest book artifacts / build (push) Canceled after 0s
dependency resolution / resolve (3.11) (push) Canceled after 0s
dependency resolution / resolve (3.13) (push) Canceled after 0s
deploy-pages / build (push) Canceled after 0s
deploy-pages / deploy (push) Canceled after 0s
i18n consistency check / check (push) Canceled after 0s
provider adoption tests / test (chapter2/context-compression) (push) Canceled after 0s
provider adoption tests / test (chapter2/prompt-injection) (push) Canceled after 0s
provider adoption tests / test (chapter2/system-hint) (push) Canceled after 0s
provider adoption tests / test (chapter3/log-sanitization) (push) Canceled after 0s
web-search-agent tests / test (push) Canceled after 0s
web-search-agent tests / agentbook (push) Canceled after 0s
18 lines
733 B
Python
18 lines
733 B
Python
#!/usr/bin/env python3
|
|
"""Post-process deck: remove duplicate mid-paragraph <a:pPr> elements that
|
|
pptxgenjs emits when list items contain multiple inline-formatting runs.
|
|
The duplicate (later) pPr carries buNone, which makes LibreOffice drop the
|
|
bullet glyph. Keeping only the first pPr per <a:p> restores uniform bullets."""
|
|
import re, glob, sys
|
|
|
|
pattern = re.compile(r'(</a:r>)\s*<a:pPr\b.*?</a:pPr>', re.S)
|
|
total = 0
|
|
for path in glob.glob('deckbuild/ppt/slides/slide*.xml'):
|
|
xml = open(path, encoding='utf-8').read()
|
|
fixed, n = pattern.subn(r'\1', xml)
|
|
if n:
|
|
open(path, 'w', encoding='utf-8').write(fixed)
|
|
total += n
|
|
print(f'{path}: removed {n} duplicate pPr')
|
|
print(f'total removed: {total}')
|