feat(website): add slug and url to subcategory entries

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Vinta Chen
2026-05-03 00:05:02 +08:00
parent 7fadbaf6fe
commit 4005c2ea82
2 changed files with 38 additions and 2 deletions
+8 -2
View File
@@ -11,7 +11,7 @@ from pathlib import Path
from typing import Any
from jinja2 import Environment, FileSystemLoader
from readme_parser import ParsedGroup, ParsedSection, parse_readme, parse_sponsors
from readme_parser import ParsedGroup, ParsedSection, parse_readme, parse_sponsors, slugify
GITHUB_REPO_URL_RE = re.compile(r"^https?://github\.com/([^/]+/[^/]+?)(?:\.git)?/?$")
MARKDOWN_LINK_RE = re.compile(r"\[[^\]]+\]\(([^)\s]+)\)")
@@ -243,7 +243,13 @@ def extract_entries(
if subcat:
scoped = f"{cat['name']} > {subcat}"
if not any(s["value"] == scoped for s in existing["subcategories"]):
existing["subcategories"].append({"name": subcat, "value": scoped})
sub_slug = slugify(subcat)
existing["subcategories"].append({
"name": subcat,
"value": scoped,
"slug": sub_slug,
"url": f"/categories/{cat['slug']}/{sub_slug}/",
})
return entries
+30
View File
@@ -714,6 +714,36 @@ class TestExtractEntries:
entries = extract_entries(categories, groups)
assert entries[0]["source_type"] == "Built-in"
def test_subcategory_includes_slug_and_url(self):
readme = textwrap.dedent("""\
# T
---
**Tools**
## Web Frameworks
- Synchronous
- [django](https://example.com/django) - A framework.
# Contributing
Done.
""")
groups = parse_readme(readme)
categories = [c for g in groups for c in g["categories"]]
entries = extract_entries(categories, groups)
assert entries[0]["subcategories"] == [
{
"name": "Synchronous",
"value": "Web Frameworks > Synchronous",
"slug": "synchronous",
"url": "/categories/web-frameworks/synchronous/",
},
]
# ---------------------------------------------------------------------------
# annotate_entries_with_stars