Restore compatibility with mistune==0.8.4
The latest release version of Lektor is 3.3.4. It does not include the support for `mistune>=2.0` that has made it into the `master` branch of Lektor, thus it pins `mistune<2`. This commit restores compatibility with older versions of mistune. (That compatibility was broken by 3fcd062.)
This commit is contained in:
parent
3fcd0624e9
commit
f48eda6ee2
|
@ -1,6 +1,7 @@
|
||||||
import re
|
import re
|
||||||
from lektor.pluginsystem import Plugin
|
from lektor.pluginsystem import Plugin
|
||||||
from markupsafe import escape
|
from markupsafe import escape
|
||||||
|
from mistune import __version__ as mistune_version
|
||||||
|
|
||||||
|
|
||||||
_class_re = re.compile(r'\s+:([a-zA-Z0-9_-]+)')
|
_class_re = re.compile(r'\s+:([a-zA-Z0-9_-]+)')
|
||||||
|
@ -15,21 +16,31 @@ def split_classes(text):
|
||||||
return text, classes
|
return text, classes
|
||||||
|
|
||||||
|
|
||||||
|
def render_link(link, text, title=None):
|
||||||
|
text, classes = split_classes(text)
|
||||||
|
if link.startswith('javascript:'):
|
||||||
|
link = ''
|
||||||
|
attr = [f'href="{escape(link)}"']
|
||||||
|
if title:
|
||||||
|
attr.append(f'title="{escape(title)}"')
|
||||||
|
if classes:
|
||||||
|
attr.append(f'class="{" ".join(map(escape, classes))}"')
|
||||||
|
return f"<a {' '.join(attr)}>{text if text else link}</a>"
|
||||||
|
|
||||||
|
|
||||||
|
if mistune_version.startswith("0."):
|
||||||
|
class LinkClassesMixin(object):
|
||||||
|
def link(renderer, link, title, text):
|
||||||
|
return render_link(link, text, title)
|
||||||
|
else:
|
||||||
|
class LinkClassesMixin(object):
|
||||||
|
def link(renderer, link, text, title):
|
||||||
|
return render_link(link, text, title)
|
||||||
|
|
||||||
|
|
||||||
class MarkdownLinkClassesPlugin(Plugin):
|
class MarkdownLinkClassesPlugin(Plugin):
|
||||||
name = 'Markdown Link Classes'
|
name = 'Markdown Link Classes'
|
||||||
description = 'Adds the ability to add classes to links.'
|
description = 'Adds the ability to add classes to links.'
|
||||||
|
|
||||||
def on_markdown_config(self, config, **extra):
|
def on_markdown_config(self, config, **extra):
|
||||||
class LinkClassesMixin(object):
|
|
||||||
def link(renderer, link, text, title):
|
|
||||||
text, classes = split_classes(text)
|
|
||||||
if link.startswith('javascript:'):
|
|
||||||
link = ''
|
|
||||||
attr = ['href="%s"' % escape(link)]
|
|
||||||
if title:
|
|
||||||
attr.append('title="%s"' % escape(title))
|
|
||||||
if classes:
|
|
||||||
attr.append('class="%s"' % ' '.join(
|
|
||||||
escape(x) for x in classes))
|
|
||||||
return '<a %s>%s</a>' % (' '.join(attr), text)
|
|
||||||
config.renderer_mixins.append(LinkClassesMixin)
|
config.renderer_mixins.append(LinkClassesMixin)
|
||||||
|
|
Loading…
Reference in New Issue