doc: Cross-reference roles syntax doc & implementation
reasoning: - (doc -> code) make it easier to find where those are implemented - to get easier insight if/what a specific renderer does with it - in case one wants to improve them, which seems likely as they are rather Nix/NixOS-specific - (took me too long to find their implementation) - (code -> doc) ensure changes to the code can be reflected in the doc - code authors might not know about the reference documentation or how to find it
This commit is contained in:
parent
42679b9df7
commit
3c20746f99
@ -108,6 +108,7 @@ A few markups for other kinds of literals are also available:
|
|||||||
These literal kinds are used mostly in NixOS option documentation.
|
These literal kinds are used mostly in NixOS option documentation.
|
||||||
|
|
||||||
This syntax is taken from [MyST](https://myst-parser.readthedocs.io/en/latest/syntax/syntax.html#roles-an-in-line-extension-point). Though, the feature originates from [reStructuredText](https://www.sphinx-doc.org/en/master/usage/restructuredtext/roles.html#role-manpage) with slightly different syntax.
|
This syntax is taken from [MyST](https://myst-parser.readthedocs.io/en/latest/syntax/syntax.html#roles-an-in-line-extension-point). Though, the feature originates from [reStructuredText](https://www.sphinx-doc.org/en/master/usage/restructuredtext/roles.html#role-manpage) with slightly different syntax.
|
||||||
|
They are handled by `myst_role` defined per renderer. <!-- reverse references in code -->
|
||||||
|
|
||||||
#### Admonitions
|
#### Admonitions
|
||||||
|
|
||||||
|
@ -182,6 +182,7 @@ class AsciiDocRenderer(Renderer):
|
|||||||
self._leave_block()
|
self._leave_block()
|
||||||
return "\n"
|
return "\n"
|
||||||
def myst_role(self, token: Token, tokens: Sequence[Token], i: int) -> str:
|
def myst_role(self, token: Token, tokens: Sequence[Token], i: int) -> str:
|
||||||
|
# NixOS-specific roles are documented at <nixpkgs>/doc/README.md (with reverse reference)
|
||||||
self._parstack[-1].continuing = True
|
self._parstack[-1].continuing = True
|
||||||
content = asciidoc_escape(token.content)
|
content = asciidoc_escape(token.content)
|
||||||
if token.meta['name'] == 'manpage' and (url := self._manpage_urls.get(token.content)):
|
if token.meta['name'] == 'manpage' and (url := self._manpage_urls.get(token.content)):
|
||||||
|
@ -159,6 +159,7 @@ class CommonMarkRenderer(Renderer):
|
|||||||
self._leave_block()
|
self._leave_block()
|
||||||
return ""
|
return ""
|
||||||
def myst_role(self, token: Token, tokens: Sequence[Token], i: int) -> str:
|
def myst_role(self, token: Token, tokens: Sequence[Token], i: int) -> str:
|
||||||
|
# NixOS-specific roles are documented at <nixpkgs>/doc/README.md (with reverse reference)
|
||||||
self._parstack[-1].continuing = True
|
self._parstack[-1].continuing = True
|
||||||
content = md_make_code(token.content)
|
content = md_make_code(token.content)
|
||||||
if token.meta['name'] == 'manpage' and (url := self._manpage_urls.get(token.content)):
|
if token.meta['name'] == 'manpage' and (url := self._manpage_urls.get(token.content)):
|
||||||
|
@ -136,6 +136,7 @@ class HTMLRenderer(Renderer):
|
|||||||
def dd_close(self, token: Token, tokens: Sequence[Token], i: int) -> str:
|
def dd_close(self, token: Token, tokens: Sequence[Token], i: int) -> str:
|
||||||
return "</dd>"
|
return "</dd>"
|
||||||
def myst_role(self, token: Token, tokens: Sequence[Token], i: int) -> str:
|
def myst_role(self, token: Token, tokens: Sequence[Token], i: int) -> str:
|
||||||
|
# NixOS-specific roles are documented at <nixpkgs>/doc/README.md (with reverse reference)
|
||||||
if token.meta['name'] == 'command':
|
if token.meta['name'] == 'command':
|
||||||
return f'<span class="command"><strong>{escape(token.content)}</strong></span>'
|
return f'<span class="command"><strong>{escape(token.content)}</strong></span>'
|
||||||
if token.meta['name'] == 'file':
|
if token.meta['name'] == 'file':
|
||||||
|
@ -253,6 +253,7 @@ class ManpageRenderer(Renderer):
|
|||||||
self._leave_block()
|
self._leave_block()
|
||||||
return ".RE"
|
return ".RE"
|
||||||
def myst_role(self, token: Token, tokens: Sequence[Token], i: int) -> str:
|
def myst_role(self, token: Token, tokens: Sequence[Token], i: int) -> str:
|
||||||
|
# NixOS-specific roles are documented at <nixpkgs>/doc/README.md (with reverse reference)
|
||||||
if token.meta['name'] in [ 'command', 'env', 'option' ]:
|
if token.meta['name'] in [ 'command', 'env', 'option' ]:
|
||||||
return f'\\fB{man_escape(token.content)}\\fP'
|
return f'\\fB{man_escape(token.content)}\\fP'
|
||||||
elif token.meta['name'] in [ 'file', 'var' ]:
|
elif token.meta['name'] in [ 'file', 'var' ]:
|
||||||
|
@ -228,6 +228,7 @@ class Renderer:
|
|||||||
def dd_close(self, token: Token, tokens: Sequence[Token], i: int) -> str:
|
def dd_close(self, token: Token, tokens: Sequence[Token], i: int) -> str:
|
||||||
raise RuntimeError("md token not supported", token)
|
raise RuntimeError("md token not supported", token)
|
||||||
def myst_role(self, token: Token, tokens: Sequence[Token], i: int) -> str:
|
def myst_role(self, token: Token, tokens: Sequence[Token], i: int) -> str:
|
||||||
|
# NixOS-specific roles are documented at <nixpkgs>/doc/README.md (with reverse reference)
|
||||||
raise RuntimeError("md token not supported", token)
|
raise RuntimeError("md token not supported", token)
|
||||||
def attr_span_begin(self, token: Token, tokens: Sequence[Token], i: int) -> str:
|
def attr_span_begin(self, token: Token, tokens: Sequence[Token], i: int) -> str:
|
||||||
raise RuntimeError("md token not supported", token)
|
raise RuntimeError("md token not supported", token)
|
||||||
|
Loading…
Reference in New Issue
Block a user