629cd94469
it's no longer needed and if anything impedes further development of the tooling by its sheer undecipherability of reasoning alone. users of the docbook renderers can still pull nrd from 23.11 to get this support for the foreseeable future, but with everything we can remember having moved away from docbook-like toolchains already that seems unlikely to happen.
105 lines
6.3 KiB
Python
105 lines
6.3 KiB
Python
import nixos_render_docs as nrd
|
|
|
|
from markdown_it.token import Token
|
|
|
|
class Converter(nrd.md.Converter[nrd.html.HTMLRenderer]):
|
|
# actual renderer doesn't matter, we're just parsing.
|
|
def __init__(self, manpage_urls: dict[str, str]) -> None:
|
|
super().__init__()
|
|
self._renderer = nrd.html.HTMLRenderer(manpage_urls, {})
|
|
|
|
def test_heading_id_absent() -> None:
|
|
c = Converter({})
|
|
assert c._parse("# foo") == [
|
|
Token(type='heading_open', tag='h1', nesting=1, attrs={}, map=[0, 1], level=0, children=None,
|
|
content='', markup='#', info='', meta={}, block=True, hidden=False),
|
|
Token(type='inline', tag='', nesting=0, attrs={}, map=[0, 1], level=1,
|
|
children=[
|
|
Token(type='text', tag='', nesting=0, attrs={}, map=None, level=0, children=None,
|
|
content='foo', markup='', info='', meta={}, block=False, hidden=False)
|
|
],
|
|
content='foo', markup='', info='', meta={}, block=True, hidden=False),
|
|
Token(type='heading_close', tag='h1', nesting=-1, attrs={}, map=None, level=0, children=None,
|
|
content='', markup='#', info='', meta={}, block=True, hidden=False)
|
|
]
|
|
|
|
def test_heading_id_present() -> None:
|
|
c = Converter({})
|
|
assert c._parse("# foo {#foo}\n## bar { #bar}\n### bal { #bal} ") == [
|
|
Token(type='heading_open', tag='h1', nesting=1, attrs={'id': 'foo'}, map=[0, 1], level=0,
|
|
children=None, content='', markup='#', info='', meta={}, block=True, hidden=False),
|
|
Token(type='inline', tag='', nesting=0, attrs={}, map=[0, 1], level=1,
|
|
content='foo {#foo}', markup='', info='', meta={}, block=True, hidden=False,
|
|
children=[
|
|
Token(type='text', tag='', nesting=0, attrs={}, map=None, level=0, children=None,
|
|
content='foo', markup='', info='', meta={}, block=False, hidden=False)
|
|
]),
|
|
Token(type='heading_close', tag='h1', nesting=-1, attrs={}, map=None, level=0, children=None,
|
|
content='', markup='#', info='', meta={}, block=True, hidden=False),
|
|
Token(type='heading_open', tag='h2', nesting=1, attrs={'id': 'bar'}, map=[1, 2], level=0,
|
|
children=None, content='', markup='##', info='', meta={}, block=True, hidden=False),
|
|
Token(type='inline', tag='', nesting=0, attrs={}, map=[1, 2], level=1,
|
|
content='bar { #bar}', markup='', info='', meta={}, block=True, hidden=False,
|
|
children=[
|
|
Token(type='text', tag='', nesting=0, attrs={}, map=None, level=0, children=None,
|
|
content='bar', markup='', info='', meta={}, block=False, hidden=False)
|
|
]),
|
|
Token(type='heading_close', tag='h2', nesting=-1, attrs={}, map=None, level=0, children=None,
|
|
content='', markup='##', info='', meta={}, block=True, hidden=False),
|
|
Token(type='heading_open', tag='h3', nesting=1, attrs={'id': 'bal'}, map=[2, 3], level=0,
|
|
children=None, content='', markup='###', info='', meta={}, block=True, hidden=False),
|
|
Token(type='inline', tag='', nesting=0, attrs={}, map=[2, 3], level=1,
|
|
content='bal { #bal}', markup='', info='', meta={}, block=True, hidden=False,
|
|
children=[
|
|
Token(type='text', tag='', nesting=0, attrs={}, map=None, level=0, children=None,
|
|
content='bal', markup='', info='', meta={}, block=False, hidden=False)
|
|
]),
|
|
Token(type='heading_close', tag='h3', nesting=-1, attrs={}, map=None, level=0, children=None,
|
|
content='', markup='###', info='', meta={}, block=True, hidden=False)
|
|
]
|
|
|
|
def test_heading_id_incomplete() -> None:
|
|
c = Converter({})
|
|
assert c._parse("# foo {#}") == [
|
|
Token(type='heading_open', tag='h1', nesting=1, attrs={}, map=[0, 1], level=0, children=None,
|
|
content='', markup='#', info='', meta={}, block=True, hidden=False),
|
|
Token(type='inline', tag='', nesting=0, attrs={}, map=[0, 1], level=1,
|
|
content='foo {#}', markup='', info='', meta={}, block=True, hidden=False,
|
|
children=[
|
|
Token(type='text', tag='', nesting=0, attrs={}, map=None, level=0, children=None,
|
|
content='foo {#}', markup='', info='', meta={}, block=False, hidden=False)
|
|
]),
|
|
Token(type='heading_close', tag='h1', nesting=-1, attrs={}, map=None, level=0, children=None,
|
|
content='', markup='#', info='', meta={}, block=True, hidden=False)
|
|
]
|
|
|
|
def test_heading_id_double() -> None:
|
|
c = Converter({})
|
|
assert c._parse("# foo {#a} {#b}") == [
|
|
Token(type='heading_open', tag='h1', nesting=1, attrs={'id': 'b'}, map=[0, 1], level=0,
|
|
children=None, content='', markup='#', info='', meta={}, block=True, hidden=False),
|
|
Token(type='inline', tag='', nesting=0, attrs={}, map=[0, 1], level=1,
|
|
content='foo {#a} {#b}', markup='', info='', meta={}, block=True, hidden=False,
|
|
children=[
|
|
Token(type='text', tag='', nesting=0, attrs={}, map=None, level=0, children=None,
|
|
content='foo {#a}', markup='', info='', meta={}, block=False, hidden=False)
|
|
]),
|
|
Token(type='heading_close', tag='h1', nesting=-1, attrs={}, map=None, level=0, children=None,
|
|
content='', markup='#', info='', meta={}, block=True, hidden=False)
|
|
]
|
|
|
|
def test_heading_id_suffixed() -> None:
|
|
c = Converter({})
|
|
assert c._parse("# foo {#a} s") == [
|
|
Token(type='heading_open', tag='h1', nesting=1, attrs={}, map=[0, 1], level=0,
|
|
children=None, content='', markup='#', info='', meta={}, block=True, hidden=False),
|
|
Token(type='inline', tag='', nesting=0, attrs={}, map=[0, 1], level=1,
|
|
content='foo {#a} s', markup='', info='', meta={}, block=True, hidden=False,
|
|
children=[
|
|
Token(type='text', tag='', nesting=0, attrs={}, map=None, level=0, children=None,
|
|
content='foo {#a} s', markup='', info='', meta={}, block=False, hidden=False)
|
|
]),
|
|
Token(type='heading_close', tag='h1', nesting=-1, attrs={}, map=None, level=0, children=None,
|
|
content='', markup='#', info='', meta={}, block=True, hidden=False)
|
|
]
|