Add sponsor logos.
[librarian.git] / librarian / parser.py
index e605dd9..41f4308 100644 (file)
@@ -4,7 +4,9 @@
 # Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information.
 #
 from librarian import ValidationError, NoDublinCore,  ParseError, NoProvider
+from librarian import NoSponsorProvider, DirSponsorProvider
 from librarian import RDFNS
+from librarian.cover import WLCover
 from librarian import dcparser
 
 from xml.parsers.expat import ExpatError
@@ -20,9 +22,11 @@ class WLDocument(object):
     provider = None
 
     def __init__(self, edoc, parse_dublincore=True, provider=None, 
+                    sponsor_provider=None,
                     strict=False, meta_fallbacks=None):
         self.edoc = edoc
         self.provider = provider
+        self.sponsor_provider = sponsor_provider
 
         root_elem = edoc.getroot()
 
@@ -179,6 +183,11 @@ class WLDocument(object):
             persons.remove(None)
         return persons
 
+    def sponsor_by_name(self, name):
+        if self.sponsor_provider is None:
+            raise NoSponsorProvider
+        return self.sponsor_provider.by_name(name)
+
     # Converters
 
     def as_html(self, *args, **kwargs):
@@ -205,6 +214,11 @@ class WLDocument(object):
         from librarian import fb2
         return fb2.transform(self, *args, **kwargs)
 
+    def as_cover(self, cover_class=None, *args, **kwargs):
+        if cover_class is None:
+            cover_class = WLCover
+        return cover_class(self.book_info, *args, **kwargs).output_file()
+
     def save_output_file(self, output_file, output_path=None,
             output_dir_path=None, make_author_dir=False, ext=None):
         if output_dir_path: