Don't show activity counter if it's not adjacent to another activity (PDF)
[librarian.git] / librarian / pyhtml.py
index 7047cc9..900d068 100644 (file)
@@ -28,6 +28,7 @@ class EduModule(Xmill):
     def __init__(self, options=None):
         super(EduModule, self).__init__(options)
         self.activity_counter = 0
+        self.activity_last = None
         self.exercise_counter = 0
 
         # text filters
@@ -36,7 +37,7 @@ class EduModule(Xmill):
                 txt = txt.replace("/\n", "<br/>\n")
             return txt
         self.register_text_filter(functions.substitute_entities)
-        self.register_text_filter(swap_endlines)
+        self.register_escaped_text_filter(swap_endlines)
 
     @tagged('div', 'stanza')
     def handle_strofa(self, element):
@@ -58,7 +59,7 @@ class EduModule(Xmill):
     handle_podtytul = tag("span", "subtitle")
     handle_naglowek_akt = handle_naglowek_czesc = handle_srodtytul = tag("h2")
     handle_naglowek_scena = tag('h2')
-    handle_naglowek_osoba = handle_naglowek_podrozdzial = tag('h3')
+    handle_naglowek_osoba = tag('h3')
     handle_akap = handle_akap_dialog = handle_akap_cd = tag('p', 'paragraph')
 
     handle_wyroznienie = tag('em')
@@ -82,6 +83,10 @@ class EduModule(Xmill):
         pre, post = tag_open_close("h2", id=naglowek_to_anchor(element))
         return return_to_top + pre, post
 
+    def handle_naglowek_podrozdzial(self, element):
+        self.activity_counter = 0
+        return tag('h3')(self, element)
+
     def handle_uwaga(self, _e):
         return None
 
@@ -113,10 +118,17 @@ class EduModule(Xmill):
 
         counter = self.activity_counter
 
+        if element.getnext().tag == 'aktywnosc' or self.activity_last.getnext() == element:
+            counter_html = """<span class="act_counter">%(counter)d.</span>""" % locals()
+        else:
+            counter_html = ''
+
+        self.activity_last = element
+
         return u"""
 <div class="activity">
  <div class="text">
-  <span class="act_counter">%(counter)d.</span>
+  %(counter_html)s
   %(opis)s""" % locals(), \
 u"""%(wskazowki)s
  </div>