1
1
mirror of https://github.com/Kozea/WeasyPrint.git synced 2024-10-05 00:21:15 +03:00

Dispatch replaced element by a dict of functions instead of a list.

This commit is contained in:
Simon Sapin 2011-08-22 17:50:32 +02:00
parent d041826390
commit 87c52957d6

View File

@ -32,28 +32,28 @@ from .utils import get_url_attribute
from .draw.helpers import get_image_surface_from_uri
REPLACEMENT_HANDLERS = []
REPLACEMENT_HANDLERS = {}
def get_replaced_element(element):
"""Return a :class:`Replacement` object if ``element`` is replaced."""
for handler in REPLACEMENT_HANDLERS:
replacement = handler(element)
if replacement is not None:
return replacement
if element.tag in REPLACEMENT_HANDLERS:
handler = REPLACEMENT_HANDLERS[element.tag]
return handler(element)
def register(function):
REPLACEMENT_HANDLERS.append(function)
return function
def register(tag):
def decorator(function):
REPLACEMENT_HANDLERS[tag] = function
return function
return decorator
@register
@register('img')
def handle_img(element):
if element.tag == 'img':
# TODO: somehow use the alt-text on broken images.
src = get_url_attribute(element, 'src')
return ImageReplacement(src)
# TODO: somehow use the alt-text on broken images.
src = get_url_attribute(element, 'src')
return ImageReplacement(src)
class Replacement(object):