summaryrefslogtreecommitdiff
path: root/extendedimage.py
diff options
context:
space:
mode:
authorBotond Hende <nettingman@gmail.com>2024-08-08 21:39:17 +0200
committerBotond Hende <nettingman@gmail.com>2024-08-08 21:39:17 +0200
commited0aa1323a7acae363c670cc1dd6611c09e0c3fb (patch)
tree6ba7dc3c303e791ad52c02986ac27a5a2cdde798 /extendedimage.py
parentc307de76f9b54d5c65196341ee12ea38ac3d6e6b (diff)
extended image handles foreign images
Diffstat (limited to 'extendedimage.py')
-rw-r--r--extendedimage.py34
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)]
+ )