A basic MediaWiki markup parser.
Project description
Summary
Formats text following the MediaWiki syntax.
Usage
To return HTML from Wiki:
from wikimarkup.parser import Parser parser = Parser() html = parser.parse(text[, show_toc=True])
To return HTML without certain “annoying” (TODO: define annoying) elements, such as headings:
from wikimarkup.parser import parselite parselite(text)
Adding Internal Links
You can support [[internal links]] with the registerInternalLinkHook method. There is no default handling for internal links. If no hook handles the link, it will appear unchanged in the output. An internal link may have a namespace: prefix. Hooks are registered per namespace, with ‘None’ for unprefixed links:
def internalLinkHook(parser_env, namespace, body): ... return replacement parser.registerInternalLinkHook(None, internalLinkHook) # called for [[link]] parser.registerInternalLinkHook('Wikipedia', hook) # called for [[Wikipedia: Link]] parser.registerInternalLinkHook(':en', hook) # called for [[:en:link] parser.registerInternalLinkHook(':', hook) # called for [[:any:link]] parser.registerInternalLinkHook('*', hook) # called for [[anything]]
Examples:
from wikimarkup.parser import Parser def wikipediaLinkHook(parser_env, namespace, body): # namespace is going to be 'Wikipedia' (article, pipe, text) = body.partition('|') href = article.strip().capitalize().replace(' ', '_') text = (text or article).strip() return '<a href="http://en.wikipedia.org/wiki/%s">%s</a>' % (href, text) parser = Parser() parser.registerInternalLinkHook('Wikipedia', wikipediaLinkHook) print parser.parse("[[Wikipedia:public transport|public transportation]]") print parser.parse("[[Wikipedia: bus]]") import settings from pytils.translit import slugify from blog.models import Post def byteflowLinkHook(parser_env, namespace, body): (article, pipe, text) = body.partition('|') slug = slugify(article.strip()) text = (text or article).strip() try: post = Post.objects.get(slug=slug) href = post.get_absolute_url() except Post.DoesNotExist: href = '#' return '<a href="%s">%s</a>' % (href, text) parser.registerInternalLinkHook(None, byteflowLinkHook) parser.parse("[[Blog post title]]")
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file py-wikimarkup-2.3.0.tar.gz
.
File metadata
- Download URL: py-wikimarkup-2.3.0.tar.gz
- Upload date:
- Size: 34.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.9
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 |
7081ab990afb95bf9d55b762a3db6f779838844a8de0bf8d2589443a6e378e1c
|
|
MD5 |
4313b4dadda1f3b144d608222cb66c9f
|
|
BLAKE2b-256 |
314a6ea908153b339aafcf4dd25a3a391c0d23efb39f2d21748725f8f2708e44
|
File details
Details for the file py_wikimarkup-2.3.0-py3-none-any.whl
.
File metadata
- Download URL: py_wikimarkup-2.3.0-py3-none-any.whl
- Upload date:
- Size: 34.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.9
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 |
90060fbdfda0e2c611d04fe963be4a9e894f12cb28a21d2d515fe504925fc55b
|
|
MD5 |
9795ef91f325a8ddb077cfbb05caf995
|
|
BLAKE2b-256 |
06cdc56a20509043b194aab20ac0e1f23bbfcfc284f105c779640c6f9b8f6dd4
|