Skip to content

Commit 70a8255

Browse files
vintaclaude
andcommitted
feat(website): add /categories/built-in/ page for Built-in tag filter
Register Built-in as a navigable filter path alongside regular category and group slugs, emit the page during build, add it to the sitemap, and wire the Built-in tag buttons in index.html and category.html to navigate there via data-url. Co-Authored-By: Claude <noreply@anthropic.com>
1 parent d64b47b commit 70a8255

3 files changed

Lines changed: 44 additions & 3 deletions

File tree

website/build.py

Lines changed: 34 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,11 @@
2020
SITEMAP_URL = f"{SITE_URL}sitemap.xml"
2121
SITEMAP_NS = "http://www.sitemaps.org/schemas/sitemap/0.9"
2222

23+
BUILTIN_FILTER = "Built-in"
24+
BUILTIN_SLUG = "built-in"
25+
BUILTIN_PATH = f"/categories/{BUILTIN_SLUG}/"
26+
BUILTIN_PUBLIC_URL = f"{SITE_URL}categories/{BUILTIN_SLUG}/"
27+
2328
SOURCE_TYPE_DOMAINS = {
2429
"docs.python.org": "Built-in",
2530
"gitlab.com": "GitLab",
@@ -287,7 +292,7 @@ def build(repo_root: Path) -> None:
287292
categories = [cat for g in parsed_groups for cat in g["categories"]]
288293
cat_slugs = [cat["slug"] for cat in categories]
289294
group_slugs = [g["slug"] for g in parsed_groups]
290-
all_top_level_slugs = cat_slugs + group_slugs
295+
all_top_level_slugs = cat_slugs + group_slugs + [BUILTIN_SLUG]
291296
duplicates = {s for s in all_top_level_slugs if all_top_level_slugs.count(s) > 1}
292297
if duplicates:
293298
raise ValueError(
@@ -325,6 +330,9 @@ def build(repo_root: Path) -> None:
325330
for entry in entries:
326331
for sub in entry.get("subcategories", []):
327332
filter_urls[sub["value"]] = sub["url"]
333+
builtin_entries = [e for e in entries if e.get("source_type") == BUILTIN_FILTER]
334+
if builtin_entries:
335+
filter_urls[BUILTIN_FILTER] = BUILTIN_PATH
328336

329337
env = Environment(
330338
loader=FileSystemLoader(website / "templates"),
@@ -402,6 +410,29 @@ def build(repo_root: Path) -> None:
402410
encoding="utf-8",
403411
)
404412

413+
if builtin_entries:
414+
page_dir = categories_dir / BUILTIN_SLUG
415+
page_dir.mkdir(parents=True, exist_ok=True)
416+
synthetic = {
417+
"name": BUILTIN_FILTER,
418+
"slug": BUILTIN_SLUG,
419+
"description": "",
420+
"description_html": "",
421+
}
422+
(page_dir / "index.html").write_text(
423+
tpl_category.render(
424+
category=synthetic,
425+
category_url=BUILTIN_PUBLIC_URL,
426+
entries=builtin_entries,
427+
total_categories=len(categories),
428+
page_kind="built-in",
429+
category_urls=category_urls,
430+
current_path=BUILTIN_PATH,
431+
filter_urls_json=filter_urls_json,
432+
),
433+
encoding="utf-8",
434+
)
435+
405436
seen_subcats: set[tuple[str, str]] = set()
406437
for category in categories:
407438
cat_url_prefix = f"/categories/{category['slug']}/"
@@ -455,6 +486,8 @@ def build(repo_root: Path) -> None:
455486
sitemap_urls = [(SITE_URL, sitemap_date)]
456487
sitemap_urls.extend((category_public_url(c), sitemap_date) for c in categories)
457488
sitemap_urls.extend((group_public_url(g["slug"]), sitemap_date) for g in parsed_groups)
489+
if builtin_entries:
490+
sitemap_urls.append((BUILTIN_PUBLIC_URL, sitemap_date))
458491
for cat_slug, sub_slug in sorted(seen_subcats):
459492
sitemap_urls.append((subcategory_public_url(cat_slug, sub_slug), sitemap_date))
460493
write_sitemap_xml(site_dir / "sitemap.xml", sitemap_urls)

website/templates/category.html

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,11 @@ <h2 class="sr-only">Results</h2>
176176
</button>
177177
{% endif %}
178178
{% if entry.source_type == 'Built-in' %}
179-
<button class="tag tag-source" data-value="Built-in">
179+
<button
180+
class="tag tag-source{% if '/categories/built-in/' == current_path %} active{% endif %}"
181+
data-value="Built-in"
182+
data-url="/categories/built-in/"
183+
>
180184
Built-in
181185
</button>
182186
{% endif %}

website/templates/index.html

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -247,7 +247,11 @@ <h2 class="sr-only">Results</h2>
247247
{{ entry.groups[0] }}
248248
</button>
249249
{% if entry.source_type == 'Built-in' %}
250-
<button class="tag tag-source" data-value="Built-in">
250+
<button
251+
class="tag tag-source"
252+
data-value="Built-in"
253+
data-url="/categories/built-in/"
254+
>
251255
Built-in
252256
</button>
253257
{% endif %}

0 commit comments

Comments
 (0)