fixes #1060: sorted and unique editors' names
[librarian.git] / librarian / html.py
index 3912fbc..1f0615f 100644 (file)
@@ -16,6 +16,7 @@ from librarian import functions
 from lxml.etree import XMLSyntaxError, XSLTApplyError
 
 functions.reg_substitute_entities()
+functions.reg_person_name()
 
 STYLESHEETS = {
     'legacy': 'xslt/book2html.xslt',
@@ -30,7 +31,7 @@ def html_has_content(text):
     return etree.ETXPath('//p|//{%(ns)s}p|//h1|//{%(ns)s}h1' % {'ns': str(XHTMLNS)})(text)
 
 def transform(input, output_filename=None, is_file=True, \
-    parse_dublincore=True, stylesheet='legacy', options={}):
+    parse_dublincore=True, stylesheet='legacy', options={}, flags=None):
     """Transforms file input_filename in XML to output_filename in XHTML.
 
     If output_filename is None, returns an XML,
@@ -49,6 +50,12 @@ def transform(input, output_filename=None, is_file=True, \
             document = WLDocument.from_string(input, True, \
                 parse_dublincore=parse_dublincore)
 
+        if flags:
+            for flag in flags:
+                document.edoc.getroot().set(flag, 'yes')
+
+        document.clean_ed_note()
+
         result = document.transform(style, **options)
         del document # no longer needed large object :)
 
@@ -57,7 +64,7 @@ def transform(input, output_filename=None, is_file=True, \
             add_table_of_contents(result.getroot())
 
             if output_filename is not None:
-                result.write(output_filename, xml_declaration=False, pretty_print=True, encoding='utf-8')
+                result.write(output_filename, method='html', xml_declaration=False, pretty_print=True, encoding='utf-8')
             else:
                 return result
             return True
@@ -204,6 +211,7 @@ def add_anchors(root):
     counter = 1
     for element in root.iterdescendants():
         if any_ancestor(element, lambda e: e.get('class') in ('note', 'motto', 'motto_podpis', 'dedication')
+        or e.get('id') == 'nota_red'
         or e.tag == 'blockquote'):
             continue