diff options
author | Botond Hende <nettingman@gmail.com> | 2024-08-08 21:39:17 +0200 |
---|---|---|
committer | Botond Hende <nettingman@gmail.com> | 2024-08-08 21:39:17 +0200 |
commit | ed0aa1323a7acae363c670cc1dd6611c09e0c3fb (patch) | |
tree | 6ba7dc3c303e791ad52c02986ac27a5a2cdde798 /extendedimage.py | |
parent | c307de76f9b54d5c65196341ee12ea38ac3d6e6b (diff) |
extended image handles foreign images
Diffstat (limited to 'extendedimage.py')
-rw-r--r-- | extendedimage.py | 34 |
1 files changed, 22 insertions, 12 deletions
diff --git a/extendedimage.py b/extendedimage.py index 4babc03..cec690f 100644 --- a/extendedimage.py +++ b/extendedimage.py @@ -11,6 +11,7 @@ Parameters can be encapsulated in double-quotes. Use "" for empty parameter. """ from marko import inline from marko.helpers import MarkoExtension +from . import utils class ExtendedImageElement(inline.InlineElement): @@ -32,20 +33,29 @@ class ExtendedImageElement(inline.InlineElement): return text -class ExtendedImageRenderer: - def render_extended_image_element(self, element): - img = f'<img src="{element.src}" title="{element.title}" alt="{element.alt}" />' +def __create_image_renderer(filters: list[str]): + class ExtendedImageRenderer: + FILTERS = filters - if element.href != "": - img = f'<a href="{element.href}">{img}</a>' + def render_extended_image_element(self, element): + img = f'<img src="{element.src}" title="{element.title}" alt="{element.alt}" />' - if element.figcaption != "": - img = f"<figure>{img}<figcaption>{element.figcaption}</figcaption></figure>" + if element.href != "": + img = f'<a href="{element.href}" {"target=\"_blank\"" if utils.is_foreign_url(element.href, ExtendedImageRenderer.FILTERS) else ""}>{img}</a>' - return img + if element.figcaption != "": + img = f"<figure>{img}<figcaption>{element.figcaption}</figcaption></figure>" + return img -ExtendedImage = MarkoExtension( - elements=[ExtendedImageElement], - renderer_mixins=[ExtendedImageRenderer] -) + return ExtendedImageRenderer + + +def get_image_renderer(filters: list[str] = None): + if filters is None: + filters = [] + + return MarkoExtension( + elements=[ExtendedImageElement], + renderer_mixins=[__create_image_renderer(filters)] + ) |