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;
Release files for mdx-linkify 2.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| mdx_linkify-2.1.tar.gz | 4.3 kB | Details |
Release files / mdx_linkify-2.1.tar.gz
| Download URL | mdx_linkify-2.1.tar.gz |
|---|---|
| Size | 4.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
e09278e43e5076b63398238b069a361913779683183481e9206235667cd89f54
|
|
BLAKE2b-256 checksum How to use checksums |
039ad07599b2e3487d4fa6dca76ecf80ae3d51d135c107d7ead09509a88ecc1d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is 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
|