X-Git-Url: https://git.mdrn.pl/librarian.git/blobdiff_plain/515398ba21b6ac3c0db230a465cfc8528db8d10e..d9766370d8eee5c067756af3c06a4b6ab6583d0e:/librarian/pyhtml.py
diff --git a/librarian/pyhtml.py b/librarian/pyhtml.py
index 1f1f3df..096e1f6 100644
--- a/librarian/pyhtml.py
+++ b/librarian/pyhtml.py
@@ -36,7 +36,7 @@ class EduModule(Xmill):
txt = txt.replace("/\n", "
\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):
@@ -93,7 +93,10 @@ class EduModule(Xmill):
}
submill = EduModule(dict(self.options.items() + {'sub_gen': True}.items()))
- opis = submill.generate(element.xpath('opis')[0])
+ if element.xpath('opis'):
+ opis = submill.generate(element.xpath('opis')[0])
+ else:
+ opis = ''
n = element.xpath('wskazowki')
if n: wskazowki = submill.generate(n[0])
@@ -396,13 +399,13 @@ class Wybor(Exercise):
if not pytania:
pytania = [element]
for p in pytania:
- solutions = re.split(r"[, ]+", p.attrib['rozw'])
+ solutions = re.split(r"[, ]+", p.attrib.get('rozw', ''))
if len(solutions) != 1:
is_single_choice = False
break
choices = p.xpath(".//*[@nazwa]")
uniq = set()
- for n in choices: uniq.add(n.attrib['nazwa'])
+ for n in choices: uniq.add(n.attrib.get('nazwa', ''))
if len(choices) != len(uniq):
is_single_choice = False
break
@@ -496,7 +499,7 @@ class Zastap(Luki):
return question.xpath(".//zastap")
def solution_html(self, piece):
- return piece.attrib['rozw']
+ return piece.attrib.get('rozw', '')
def handle_zastap(self, element):
self.piece_counter += 1
@@ -551,16 +554,16 @@ class Przyporzadkuj(Exercise):
if self.options['subject']:
self.piece_counter += 1
if self.options['handles']:
- return '