' %\
- (self.question_counter, solution_s), \
+ handles = element.attrib.get('uchwyty', None)
+ if handles:
+ add_class += ' handles handles-%s' % handles
+ self.options = {'handles': handles}
+
+
+ return '
' %\
+ (add_class, self.question_counter, solution_s), \
"
"
@@ -217,18 +225,53 @@ Overrides the returned content default handle_pytanie
class Luki(Excercise):
+ def find_pieces(self, question):
+ return question.xpath("//luka")
+
+ def solution_html(self, piece):
+ return piece.text + ''.join(
+ [etree.tostring(n, encoding=unicode)
+ for n in piece])
+
+ def handle_pytanie(self, element):
+ qpre, qpost = super(Luki, self).handle_pytanie(element)
+
+ luki = list(enumerate(self.find_pieces(element)))
+ luki_html = ""
+ i = 0
+ random.shuffle(luki)
+ for (i, luka) in luki:
+ i += 1
+ luka_html = self.solution_html(luka)
+ luki_html += u'
%s' % (i, luka_html)
+ self.words_html = '
%s
' % luki_html
+
+ return qpre, qpost
+
+ def handle_opis(self, element):
+ pre, post = super(Luki, self).handle_opis(element)
+ return pre, self.words_html + post
+
def handle_luka(self, element):
- return '
' % element.text
+ self.piece_counter += 1
+ return '
' % self.piece_counter
+
+class Zastap(Luki):
+ def find_pieces(self, question):
+ return question.xpath("//zastap")
+
+ def solution_html(self, piece):
+ return piece.attrib['rozw']
-class Zastap(Excercise):
def handle_zastap(self, element):
- return '
' % element.attrib, ''
+ self.piece_counter += 1
+ return '
' \
+ % self.piece_counter, ''
class Przyporzadkuj(Excercise):
def handle_lista(self, lista):
- print "in lista %s %s" % (lista.attrib, self.options)
if 'nazwa' in lista.attrib:
attrs = {
'data-name': lista.attrib['nazwa'],
@@ -247,16 +290,33 @@ class Przyporzadkuj(Excercise):
return pre, post + '
'
def handle_punkt(self, element):
- print "in punkt %s %s" % (element.attrib, self.options)
-
if self.options['subject']:
- return '
' % element.attrib, ''
+ self.piece_counter += 1
+ if self.options['handles']:
+ return '
%s' % (element.attrib['rozw'], self.piece_counter, self.piece_counter), ''
+ else:
+ return '
' % (element.attrib['rozw'], self.piece_counter), ''
+
elif self.options['predicate']:
- return '
' % element.attrib, ''
+ placeholders = u'
'
+ return '
' % element.attrib, ''
+
else:
return super(Przyporzadkuj, self).handle_punkt(element)
+class PrawdaFalsz(Excercise):
+ def handle_punkt(self, element):
+ if 'rozw' in element.attrib:
+ return u'''
+
+ Prawda
+ FaÅsz
+ ''' % {'prawda': 'true', 'falsz': 'false'}[element.attrib['rozw']], ''
+ else:
+ return super(PrawdaFalsz, self).handle_punkt(element)
+
+
def transform(wldoc, stylesheet='edumed', options=None, flags=None):
"""Transforms the WL document to XHTML.