Marko uses mixins to control how elements are represented. To define how your custom element renders, create a mixin class with a method named render_<element_name_in_snake_case>.
For example, an element named GitHubWiki requires a method named render_git_hub_wiki. The method receives the element instance and should return the rendered string (e.g., HTML).
Common base renderers include:
marko.renderer.HTMLRenderer: The standard for HTML output.marko.ast_renderer.ASTRenderer: Renders elements as JSON objects (useful for debugging).marko.ast_renderer.XMLRenderer: Renders elements as XML format AST.marko.ext.latex_renderer.LatexRenderer: Renders elements as LaTeX.
class WikiRendererMixin(object):
def render_git_hub_wiki(self, element):
return '<a href="{}">{}</a>'.format(
self.escape_url(element.target), self.render_children(element)
)