Link recognition for Python Markdown
Project description
Mdx Linkify
This extension for Python Markdown will convert text that look like links to HTML anchors.
There's an alternative package that serves the same purpose called
markdown-urlize
. The main
difference is that mdx_linkify
is
utilizing the excellent bleach
for
searching links in text. :clap:
Usage
Minimal Example
from markdown import markdown
markdown("minimal http://example.org/", extensions=["mdx_linkify"])
# Returns '<p>minimal <a href="http://example.org/">http://example.org/</a></p>'
Installation
The project is on PyPI!
pip install mdx_linkify
If you want the bleeding-edge version (this includes unreleased-to-PyPI code), you can always grab the master branch directly from Git.
pip install git+git://github.com/daGrevis/mdx_linkify.git
Configuring Linker
To configure used Linker instance, use linker_options
parameter. It will be passed to bleach.linkifier.Linker
unchanged.
Example: Parse Emails
from mdx_linkify.mdx_linkify import LinkifyExtension
from markdown import Markdown
md = Markdown(
extensions=[LinkifyExtension(linker_options={"parse_email": True})],
)
assert md.convert('contact@example.com'), '<p><a href="mailto:contact@example.com">contact@example.com</a></p>'
Example: Custom TLDs
from mdx_linkify.mdx_linkify import LinkifyExtension
from bleach.linkifier import build_url_re
from markdown import Markdown
md = Markdown(
extensions=[LinkifyExtension(linker_options={"url_re": build_url_re(["custom", "custom2"])})],
)
assert md.convert('linked.custom'), '<p><a href="http://linked.custom">linked.custom</a></p>'
Example: Ignoring TLDs
from mdx_linkify.mdx_linkify import LinkifyExtension
from markdown import Markdown
def dont_linkify_net_tld(attrs, new=False):
if attrs["_text"].endswith(".net"):
return None
return attrs
md = Markdown(
extensions=[LinkifyExtension(linker_options={"callbacks": [dont_linkify_net_tld]})],
)
assert md.convert("not-linked.net"), '<p>not-linked.net</p>'
Development
git clone git@github.com:daGrevis/mdx_linkify.git
virtualenv mdx_linkify/
cd mdx_linkify/
source bin/activate
python setup.py install
python setup.py test
Pull requests are much welcome! :+1:
Releasing
(more like a cheatsheet for me actually)
- Change version in
setup.py
, - Commit and tag it,
- Push it (including tag),
- Run
python setup.py register && python setup.py sdist upload
;
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file mdx_linkify-2.1.tar.gz
.
File metadata
- Download URL: mdx_linkify-2.1.tar.gz
- Upload date:
- Size: 4.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.24.0 setuptools/49.2.1 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.9.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | e09278e43e5076b63398238b069a361913779683183481e9206235667cd89f54 |
|
MD5 | f32c7dd45524cdba923a68e58ee0f763 |
|
BLAKE2b-256 | 039ad07599b2e3487d4fa6dca76ecf80ae3d51d135c107d7ead09509a88ecc1d |