Skip to content

Python-Markdown extension to add support for semantic (wiki)links (RDFa).

License

Notifications You must be signed in to change notification settings

aleray/mdx_semanticwikilinks

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SemanticWikiLinks Extension for Python-Markdown

Adds support for semantic (wiki)links (RDFa).

Converts links of style [[rel :: target | label ]], where rel and label are optional.

Customizable with make_link option as to what the actual element is.

Installation

pip install git+git:https://github.com/aleray/mdx_semanticwikilinks.git

Usage

>>> text = "Some text with a [[WikiLink]]."
>>> html = markdown.markdown(text, ['semanticwikilinks'])
>>> print(html)
<p>Some text with a <a href="WikiLink">WikiLink</a>.</p>

>>> text = "[[http:https://activearchives.org/]], [[#id|anchor]], [[../index.html|a relative link]], [[/|an absolute link]], [[/index.html|another absolute link]]"
>>> html = markdown.markdown(text, ['semanticwikilinks'])
>>> print(html)
<p><a href="http:https://activearchives.org/">http:https://activearchives.org/</a>, <a href="#id">anchor</a>, <a href="../index.html">a relative link</a>, <a href="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/">an absolute link</a>, <a href="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/index.html">another absolute link</a></p>

Define a custom URL builder:

>>> def make_rdfa(md, rel, target, label):
...     # `md` is the Markdown instance
...     elt = etree.Element("span")
...     elt.set("property", rel)
...     elt.set("value", target)
...     elt.text = label or target
...     return elt

>>> md = markdown.Markdown(extensions=['semanticwikilinks'],
...         extension_configs={'semanticwikilinks' : [('make_link', make_rdfa)]})
>>> html = md.convert('[[ Speaker :: Sherry Turkle | Second Self ]]')
>>> print(html)
<p><span property="aa:Speaker" value="Sherry Turkle">Second Self</span></p>

Change the default namespace (which is "aa"):

>>> md = markdown.Markdown(extensions=['semanticwikilinks'],
...         extension_configs={'semanticwikilinks' : [('namespace', 'mynamespace')]})
>>> html = md.convert('[[ Speaker :: Sherry Turkle | Second Self ]]')
>>> print(html)
<p><a href="Sherry Turkle" rel="mynamespace:Speaker">Second Self</a></p>

To do

  • An optional function to wikify names? (It is already possible to achieve this with the custom make_link function).

Dependencies

Copyright

All rights reserved.

This software is released under the modified BSD License. See LICENSE.md for details.

About

Python-Markdown extension to add support for semantic (wiki)links (RDFa).

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages