# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. # SPDX-License-Identifier: OpenMDW-1.1 """Preserve explicit chart subtitles in their existing table-caption context.""" import re from bs4 import BeautifulSoup, NavigableString TABLE = re.compile(r"]*>.*?", re.S | re.I) CHART = re.compile(r"(]*>)(.*?)()", re.S | re.I) def add_native_subtitles(text): def chart(match): body = match[2] labels = [ m[1].strip() for m in re.finditer(r"(?m)^subtitle:[ \t]*([^\n]*)", body) if m[1].strip() ] if not labels: return match[0] def table(m): soup = BeautifulSoup(m[0], "html.parser") node = soup.find("table") cap = node.find("caption", recursive=False) if not cap: return m[0] existing = cap.get_text(" ", strip=True) added = [] for value in labels: if value not in existing and value not in added: added.append(value) if not added: return m[0] cap.append(NavigableString(" — " + " — ".join(added))) return str(node) return match[1] + TABLE.sub(table, body) + match[3] return CHART.sub(chart, text)