Skip to content

Commit 487640d

Browse files
committed
fix: anchors now always lowercase, header keeps original casing
1 parent c114288 commit 487640d

File tree

3 files changed

+21
-5
lines changed

3 files changed

+21
-5
lines changed

quartodoc/renderers/md_renderer.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -292,10 +292,11 @@ def render_header(self, el: layout.Doc) -> str:
292292

293293
@dispatch
294294
def render_header(self, el: ds.DocstringSection) -> str:
295-
title = _sanitize_title(el.title or el.kind.value)
296-
_classes = [".doc-section", ".doc-section-" + title.replace(" ", "-")]
295+
title = el.title or el.kind.value.title()
296+
anchor_part = _sanitize_title(title.lower())
297+
_classes = [".doc-section", f".doc-section-{anchor_part}"]
297298
_str_classes = " ".join(_classes)
298-
return f"{'#' * self.crnt_header_level} {title.title()} {{{_str_classes}}}"
299+
return f"{'#' * self.crnt_header_level} {title} {{{_str_classes}}}"
299300

300301
# render method -----------------------------------------------------------
301302

quartodoc/tests/__snapshots__/test_renderers.ambr

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -398,7 +398,7 @@
398398
| a | int | The a parameter. | _required_ |
399399
| b | str | The b parameter. | _required_ |
400400

401-
## Custom Admonition {.doc-section .doc-section-Custom-Admonition}
401+
## Custom Admonition {.doc-section .doc-section-custom-admonition}
402402

403403
Some text.
404404
'''
@@ -420,7 +420,7 @@
420420
| a | | The a parameter. | _required_ |
421421
| b | str | The b parameter. | _required_ |
422422

423-
## Custom Admonition {.doc-section .doc-section-Custom-Admonition}
423+
## Custom Admonition {.doc-section .doc-section-custom-admonition}
424424

425425
Some text.
426426
'''

quartodoc/tests/test_renderers.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,9 @@ def renderer():
1818
return MdRenderer()
1919

2020

21+
# Smaller parts ----------------------------------------------------------------
22+
23+
2124
def test_render_param_kwargs(renderer):
2225
f = get_object("quartodoc.tests.example_signature.no_annotations")
2326
res = renderer.render(f.parameters)
@@ -126,6 +129,18 @@ def test_render_doc_section_admonition(renderer):
126129
assert res == "quartodoc.tests.example: Method for doing a thing"
127130

128131

132+
def test_render_doc_section_header_anchor(renderer):
133+
section = ds.DocstringSection(title="a `chaotic` {.title}")
134+
135+
dst = "# a `chaotic` {.title} {.doc-section .doc-section-a-chaotic-title}"
136+
137+
assert renderer.render_header(section) == dst
138+
139+
140+
# Big pieces -------------------------------------------------------------------
141+
# These are mostly snapshots
142+
143+
129144
@pytest.mark.parametrize("children", ["embedded", "flat", "linked"])
130145
def test_render_doc_module(snapshot, renderer, children):
131146
bp = blueprint(Auto(name="quartodoc.tests.example", children=children))

0 commit comments

Comments
 (0)