bozodown: implement block
This commit is contained in:
@ -1,3 +1,5 @@
|
|||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
from collections.abc import Callable
|
from collections.abc import Callable
|
||||||
from typing import Any
|
from typing import Any
|
||||||
|
|
||||||
@ -9,6 +11,15 @@ def _bozodown_render(id: str, text: str) -> str:
|
|||||||
if (id == "list"):
|
if (id == "list"):
|
||||||
print("error: list not supported")
|
print("error: list not supported")
|
||||||
return ""
|
return ""
|
||||||
|
if (id == "block"):
|
||||||
|
style, to_parse = text[5:-5].split("---")
|
||||||
|
style = style.replace("\n", "")
|
||||||
|
content: str = render(to_parse)
|
||||||
|
return f"""
|
||||||
|
<div style="{style}">
|
||||||
|
{content}
|
||||||
|
</div>
|
||||||
|
"""
|
||||||
|
|
||||||
|
|
||||||
_specific_case_namespaces: dict[str, Callable[[str, str], str]] = {
|
_specific_case_namespaces: dict[str, Callable[[str, str], str]] = {
|
||||||
@ -87,6 +98,11 @@ _converters: list[dict[str, str]] = [
|
|||||||
"from_suffix": "",
|
"from_suffix": "",
|
||||||
"to_prefix": "<br>",
|
"to_prefix": "<br>",
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"from_prefix": "-----",
|
||||||
|
"from_suffix": "-----",
|
||||||
|
"code": "bozodown:block"
|
||||||
|
},
|
||||||
]
|
]
|
||||||
|
|
||||||
_default_converter: dict[str, str] = {
|
_default_converter: dict[str, str] = {
|
||||||
@ -99,10 +115,8 @@ def _render_element(text: str, converter: dict[str, str]) -> str:
|
|||||||
code: str = converter.get("code")
|
code: str = converter.get("code")
|
||||||
if (code is not None):
|
if (code is not None):
|
||||||
namespace, id = code.split(":")
|
namespace, id = code.split(":")
|
||||||
print(namespace, id)
|
|
||||||
func = _specific_case_namespaces[namespace]
|
func = _specific_case_namespaces[namespace]
|
||||||
return func(id, text)
|
return func(id, text)
|
||||||
print(converter)
|
|
||||||
start: int = len(converter["from_prefix"])
|
start: int = len(converter["from_prefix"])
|
||||||
stop: int = len(text) - len(converter.get("from_suffix", ""))
|
stop: int = len(text) - len(converter.get("from_suffix", ""))
|
||||||
return f"{converter['to_prefix']}{text[start:stop]}{converter['to_suffix']}"
|
return f"{converter['to_prefix']}{text[start:stop]}{converter['to_suffix']}"
|
||||||
@ -122,7 +136,7 @@ def _get_first_converter(text: str) -> tuple[str, dict] | None:
|
|||||||
return text[:start], _default_converter
|
return text[:start], _default_converter
|
||||||
suffix: int = first_converter_found.get("from_suffix", "")
|
suffix: int = first_converter_found.get("from_suffix", "")
|
||||||
prefix: int = first_converter_found['from_prefix']
|
prefix: int = first_converter_found['from_prefix']
|
||||||
stop: int = text.find(suffix, start)
|
stop: int = text.find(suffix, start + len(prefix))
|
||||||
if (stop == -1):
|
if (stop == -1):
|
||||||
print(f"error: '{prefix}' was never finished by a '{suffix}'")
|
print(f"error: '{prefix}' was never finished by a '{suffix}'")
|
||||||
return
|
return
|
||||||
|
Reference in New Issue
Block a user