Bases: BaseConverter
Converts Markdown content to a list of EntryVersionBlocks using Marko.
For more info on Marko:
https://marko-py.readthedocs.io/en/latest/api.html#marko.block.BlockElement
Source code in django_spire/knowledge/entry/version/converters/markdown_converter.py
| def __init__(self, entry_version: EntryVersion):
super().__init__(entry_version)
self._order = 0
|
convert_file_to_blocks
Source code in django_spire/knowledge/entry/version/converters/markdown_converter.py
| def convert_file_to_blocks(self, file: File) -> list[models.EntryVersionBlock]:
with open(file.file.path, 'r') as f:
return self.convert_markdown_to_blocks(f.read())
|
convert_markdown_to_blocks
Source code in django_spire/knowledge/entry/version/converters/markdown_converter.py
| def convert_markdown_to_blocks(
self,
markdown_content: str
) -> list[models.EntryVersionBlock]:
syntax_tree = marko.parse(markdown_content)
blocks = []
for marko_block in syntax_tree.children:
if isinstance(marko_block, List):
blocks.extend(
self._convert_list_block(
marko_block=marko_block,
bullet=marko_block.bullet,
indent_level=-1,
ordered=marko_block.ordered,
)
)
else:
blocks.append(
self._marko_block_to_version_block(
marko_block=marko_block,
order=self._order,
)
)
self._order += 1
return blocks
|