X-Git-Url: https://git.mdrn.pl/librarian.git/blobdiff_plain/5f92f5a341c58a30c0a5c0d64ba3ed498bb9db85..fefdce4e24f9e397df5538fe6e7f54b5ece4d841:/librarian/embeds/__init__.py?ds=sidebyside diff --git a/librarian/embeds/__init__.py b/librarian/embeds/__init__.py deleted file mode 100644 index 3b1abdb..0000000 --- a/librarian/embeds/__init__.py +++ /dev/null @@ -1,56 +0,0 @@ -import importlib -from lxml import etree - -known_types = { - 'application/mathml+xml': 'librarian.embeds.mathml.MathML', - 'application/x-latex': 'librarian.embeds.latex.LaTeX', -} - -class Embed(): - @classmethod - def transforms_to(cls, mime_types, downgrade=False): - matches = set() - for name, method in cls.__dict__.iteritems(): - if hasattr(method, "embed_converts_to"): - conv_type, conv_downgrade = method.embed_converts_to - if downgrade == conv_downgrade and conv_type in mime_types: - matches.add(conv_type) - return matches - - def transform_to(self, mime_type, downgrade=False): - for name, method in type(cls).__dict__.iteritems(): - if hasattr(method, "embed_converts_to"): - conv_type, conv_downgrade = method.embed_converts_to - if downgrade == conv_downgrade and conv_type == mime_type: - return method(self) - - -class DataEmbed(Embed): - def __init__(self, data=None): - self.data = data - -class TreeEmbed(Embed): - def __init__(self, tree=None): - if isinstance(tree, etree._Element): - tree = etree.ElementTree(tree) - self.tree = tree - -def converts_to(mime_type, downgrade=False): - def decorator(method): - method.embed_converts_to = mime_type, downgrade - return method - return decorator - -def downgrades_to(mime_type): - return converts_to(mime_type, True) - -def create_embed(mime_type, tree=None, data=None): - embed = known_types.get(mime_type) - if embed is None: - embed = DataEmbed if tree is None else TreeEmbed - else: - mod_name, cls_name = embed.rsplit('.', 1) - mod = importlib.import_module(mod_name) - embed = getattr(mod, cls_name) - - return embed(data if tree is None else tree)