mirror of
https://github.com/zulip/zulip.git
synced 2025-11-02 04:53:36 +00:00
help-beta: Convert indented admonitions to asides.
Fixes https://chat.zulip.org/#narrow/channel/19-documentation/topic/new.20help.20center.3A.20broken.20tip After indenting asides properly, they became part of lists, so we had to change Flattenlist to allow asides inside it and ignore comments.
This commit is contained in:
committed by
Tim Abbott
parent
500e40f786
commit
41846b35ab
@@ -408,12 +408,13 @@ def convert_admonitions_to_asides(
|
||||
"""
|
||||
Lots of code in this function is taken from
|
||||
https://github.com/Python-Markdown/markdown/blob/64a3c0fbc00327fbfee1fd6b44da0e5453287fe4/markdown/extensions/admonition.py
|
||||
`(?:^|\n)!!!` has been changed to `(?:^|\n)( *)!!!` to allow for indented admonitions to be converted.
|
||||
"""
|
||||
RE = re.compile(r'(?:^|\n)!!! ?([\w\-]+(?: +[\w\-]+)*)(?: +"(.*?)")? *(?:\n|$)')
|
||||
RE = re.compile(r'(?:^|\n)( *)!!! ?([\w\-]+(?: +[\w\-]+)*)(?: +"(.*?)")? *(?:\n|$)')
|
||||
RE_SPACES = re.compile(" +")
|
||||
|
||||
def get_admonition_class_and_title(match: re.Match[str]) -> tuple[str, str | None]:
|
||||
klass, title = match.group(1).lower(), match.group(2)
|
||||
klass, title = match.group(2).lower(), match.group(3)
|
||||
klass = RE_SPACES.sub(" ", klass)
|
||||
if title is None:
|
||||
# no title was provided, use the capitalized class name as title
|
||||
@@ -446,19 +447,17 @@ def convert_admonitions_to_asides(
|
||||
# implementation.
|
||||
# See https://chat.zulip.org/#narrow/channel/19-documentation/topic/Stage.202.3A.20New.20syntax.20for.20!!!tip.20in.20help-beta/near/2174415
|
||||
# for more details.
|
||||
replacement = f"\n<ZulipNote>\n{admonition_content}\n</ZulipNote>\n"
|
||||
replacement = f"\n{match.group(1)}<ZulipNote>\n{admonition_content}\n{match.group(1)}</ZulipNote>\n"
|
||||
import_statement_set.add(
|
||||
f"import ZulipNote from '{components_dir_path}/ZulipNote.astro';"
|
||||
)
|
||||
elif klass == "tip":
|
||||
type = "tip"
|
||||
title = "Tip"
|
||||
replacement = (
|
||||
f'\n<Aside type="{type}" title="{title}">\n{admonition_content}\n</Aside>\n'
|
||||
)
|
||||
replacement = f'\n{match.group(1)}<Aside type="{type}" title="{title}">\n{admonition_content}\n{match.group(1)}</Aside>\n'
|
||||
import_statement_set.add("import { Aside } from '@astrojs/starlight/components'")
|
||||
elif klass == "keyboard_tip":
|
||||
replacement = f"\n<KeyboardTip>\n{admonition_content}\n</KeyboardTip>\n"
|
||||
replacement = f"\n{match.group(1)}<KeyboardTip>\n{admonition_content}\n{match.group(1)}</KeyboardTip>\n"
|
||||
import_statement_set.add(
|
||||
f"import KeyboardTip from '{components_dir_path}/KeyboardTip.astro';"
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user