diff --git a/pagure/lib/__init__.py b/pagure/lib/__init__.py index cc657b5..7fb8fc0 100644 --- a/pagure/lib/__init__.py +++ b/pagure/lib/__init__.py @@ -3718,7 +3718,8 @@ def text2markdown(text, extended=True, readme=False): 'markdown.extensions.codehilite': { 'guess_lang': False, } - } + }, + output_format='xhtml5', ) if text: @@ -3735,7 +3736,7 @@ def text2markdown(text, extended=True, readme=False): def filter_img_src(name, value): ''' Filter in img html tags images coming from a different domain. ''' - if name in ('alt', 'height', 'width', 'class'): + if name in ('alt', 'height', 'width', 'class', 'data-src'): return True if name == 'src': parsed = urlparse.urlparse(value) diff --git a/pagure/pfmarkdown.py b/pagure/pfmarkdown.py index 414175e..8a012f4 100644 --- a/pagure/pfmarkdown.py +++ b/pagure/pfmarkdown.py @@ -321,6 +321,17 @@ class AutolinkPattern2(markdown.inlinepatterns.Pattern): return el +class ImagePatternLazyLoad(markdown.inlinepatterns.ImagePattern): + """ Customize the image element matched for lazyloading. """ + + def handleMatch(self, m): + el = super(ImagePatternLazyLoad, self).handleMatch(m) + el.set('class', 'lazyload') + el.set('data-src', el.get('src')) + el.set('src', '') + return el + + class PagureExtension(markdown.extensions.Extension): def extendMarkdown(self, md, md_globals): @@ -337,6 +348,10 @@ class PagureExtension(markdown.extensions.Extension): md.inlinePatterns['mention'] = MentionPattern(MENTION_RE) + # Customize the image linking to support lazy loading + md.inlinePatterns["image_link"] = ImagePatternLazyLoad( + markdown.inlinepatterns.IMAGE_LINK_RE, md) + md.inlinePatterns['implicit_commit'] = ImplicitCommitPattern( IMPLICIT_COMMIT_RE) md.inlinePatterns['commit_links'] = CommitLinkPattern(