summaryrefslogtreecommitdiff
path: root/src/mistune/plugins/url.py
blob: d6f225154a64bbc16c2a3eeaf9f36c65e1ef9dad (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
from ..util import escape_url

__all__ = ['url']

URL_LINK_PATTERN = r'''https?:\/\/[^\s<]+[^<.,:;"')\]\s]'''


def parse_url_link(inline, m, state):
    text = m.group(0)
    pos = m.end()
    if state.in_link:
        inline.process_text(text, state)
        return pos
    state.append_token({
        'type': 'link',
        'children': [{'type': 'text', 'raw': text}],
        'attrs': {'url': escape_url(text)},
    })
    return pos


def url(md):
    md.inline.register('url_link', URL_LINK_PATTERN, parse_url_link)