Skip to content

markdown_converter

django_spire.knowledge.entry.version.converters.markdown_converter

MarkdownConverter

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