From 92936964b666bbba7dc03505b4f200f68307614e Mon Sep 17 00:00:00 2001 From: Vinta Chen Date: Sun, 19 Apr 2026 22:06:41 +0800 Subject: [PATCH] refactor(readme_parser): fuse _parse_sponsor_item into single pass Eliminate the redundant _find_link_deep precheck by merging the two walks over inline.children into one loop that simultaneously locates the link and records its top-level index. Co-Authored-By: Claude --- website/readme_parser.py | 27 +++++++++++---------------- 1 file changed, 11 insertions(+), 16 deletions(-) diff --git a/website/readme_parser.py b/website/readme_parser.py index cbbc30a2..10d26886 100644 --- a/website/readme_parser.py +++ b/website/readme_parser.py @@ -360,22 +360,17 @@ def _find_link_deep(node: SyntaxTreeNode) -> SyntaxTreeNode | None: def _parse_sponsor_item(inline: SyntaxTreeNode) -> ParsedSponsor | None: """Parse `**[name](url)**: description` (or `[name](url) - description`).""" - link = _find_link_deep(inline) - if link is None: - return None - name = render_inline_text(link.children) - url = _href(link) - - split_idx = None - for i, child in enumerate(inline.children): - if child is link or _find_link_deep(child) is link: - split_idx = i - break - if split_idx is None: - return None - desc_html = render_inline_html(inline.children[split_idx + 1 :]) - desc_html = _SPONSOR_SEP_RE.sub("", desc_html) - return ParsedSponsor(name=name, url=url, description=desc_html) + for split_idx, child in enumerate(inline.children): + link = child if child.type == "link" else _find_link_deep(child) + if link is None: + continue + desc_html = render_inline_html(inline.children[split_idx + 1 :]) + return ParsedSponsor( + name=render_inline_text(link.children), + url=_href(link), + description=_SPONSOR_SEP_RE.sub("", desc_html), + ) + return None def parse_sponsors(text: str) -> list[ParsedSponsor]: