From 39d4b3db4b7c66f2d95a984571a912c84fe0df02 Mon Sep 17 00:00:00 2001 From: Vinta Chen Date: Sun, 3 May 2026 00:08:04 +0800 Subject: [PATCH] feat(website): add subcategory_path and subcategory_public_url helpers Co-Authored-By: Claude --- website/build.py | 8 ++++++++ website/tests/test_build.py | 9 +++++++++ 2 files changed, 17 insertions(+) diff --git a/website/build.py b/website/build.py index e2040f07..e030da37 100644 --- a/website/build.py +++ b/website/build.py @@ -92,6 +92,14 @@ def category_public_url(category: ParsedSection) -> str: return f"{SITE_URL}categories/{category['slug']}/" +def subcategory_path(category_slug: str, subcategory_slug: str) -> str: + return f"/categories/{category_slug}/{subcategory_slug}/" + + +def subcategory_public_url(category_slug: str, subcategory_slug: str) -> str: + return f"{SITE_URL}categories/{category_slug}/{subcategory_slug}/" + + def write_sitemap_xml(path: Path, urls: Sequence[tuple[str, str]]) -> None: ET.register_namespace("", SITEMAP_NS) urlset = ET.Element(f"{{{SITEMAP_NS}}}urlset") diff --git a/website/tests/test_build.py b/website/tests/test_build.py index 1e52115c..0f666fb4 100644 --- a/website/tests/test_build.py +++ b/website/tests/test_build.py @@ -16,6 +16,7 @@ from build import ( extract_github_repo, load_stars, sort_entries, + subcategory_path, ) from readme_parser import parse_readme, slugify @@ -81,6 +82,14 @@ class TestSlugify: assert slugify(" Date and Time ") == "date-and-time" +class TestSubcategoryPath: + def test_builds_path(self): + assert subcategory_path("web-frameworks", "synchronous") == "/categories/web-frameworks/synchronous/" + + def test_trailing_slash(self): + assert subcategory_path("a", "b").endswith("/") + + # --------------------------------------------------------------------------- # build (integration) # ---------------------------------------------------------------------------