Exemple #1
0
def parse(text, post=None):
    """
    Parses markdown into html.
    Expands certain patterns into HTML.
    """
    # Resolve the root if exists.
    root = post.parent.root if (post and post.parent) else None
    inline = BiostarInlineLexer(renderer=Renderer(), root=root)
    inline.enable_post_link()
    inline.enable_mention_link()
    inline.enable_anchor_link()
    inline.enable_anchor_link()
    inline.enable_user_link()

    inline.enable_youtube_link1()
    inline.enable_youtube_link2()
    inline.enable_youtube_link3()
    inline.enable_ftp_link()
    inline.enable_twitter_link()

    markdown = mistune.Markdown(escape=True, hard_wrap=True, inline=inline)

    html = markdown(text)

    return html
Exemple #2
0
DISCOURSE_API_KEY = os.getenv("DISCOURSE_API_KEY")
DISCOURSE_API_USERNAME = os.getenv("DISCOURSE_API_USERNAME")

session = requests.get_session()
discourse_api = DiscourseAPI(
    base_url="https://discourse.juju.is/",
    session=session,
    api_key=DISCOURSE_API_KEY,
    api_username=DISCOURSE_API_USERNAME,
)

_yaml = YAML(typ="rt")
_yaml_safe = YAML(typ="safe")

md_parser = Markdown(renderer=Renderer())


def get_yaml_loader(typ="safe"):
    if typ == "safe":
        return _yaml_safe
    return _yaml


def split_filters(filters):
    filter_params = {}

    for charm_filter in filters:
        if charm_filter not in filter_params:
            filter_params[charm_filter] = []
        "strikethrough",
        "text",
    ]

    def output_url(self, m):
        output = []
        output.append(m.group(1) or "")

        # Allow symbols < and > inside the URL
        link = m.group(2).replace("&lt;", "<").replace("&gt;", ">")

        if self._in_link:
            output.append(self.renderer.text(link))
        else:
            output.append(self.renderer.autolink(link, False))

        output.append(m.group(3) or "")
        return "".join(output)


renderer = Renderer()
parser = Markdown(
    renderer=renderer,
    block=DescriptionBlock(),
    inline=DescriptionInline(renderer=renderer),
)


def parse_markdown_description(content):
    return parser(content)
Exemple #4
0
def marktohtml(marktext):
    renderer = Renderer(escape=False, parse_block_html=True)
    markdown = Markdown(renderer=renderer)
    return BeautifulSoup(markdown(marktext), "html.parser")
Exemple #5
0
 def __init__(self, rules=None, **kwargs):
     super(RawInlineLexer, self).__init__(Renderer(), rules=rules, **kwargs)
Exemple #6
0
# -*- coding: utf-8 -*-

import re

from mistune import Renderer, Markdown, InlineGrammar, InlineLexer


class TdwInlineLexer(InlineLexer):
    def __init__(self, renderer):
        super(TdwInlineLexer, self).__init__(renderer)

        # insert fragment searching: [Fragment text #id]
        self.rules.fragment = re.compile(r'\[(.+?)\s#([a-zA-Z0-9]+?)\]')
        self.default_rules.insert(0, 'fragment')

    def output_fragment(self, m):
        text = m.group(1)
        id = m.group(2)
        return '<span id="{}" class="fragment">{}</span>'.format(id, text)


renderer = Renderer(escape=True, use_xhtml=True)
inline = TdwInlineLexer(renderer)
markdown = Markdown(renderer=renderer, inline=inline)