X-Git-Url: https://git.mdrn.pl/librarian.git/blobdiff_plain/432b6175940bcddf371c80c46e429f37ada6559f..fe8e5b5e224d32baebbdaa2fecf4a847ed4e5354:/librarian/pyhtml.py?ds=sidebyside diff --git a/librarian/pyhtml.py b/librarian/pyhtml.py index 6df3647..5c2e5c6 100644 --- a/librarian/pyhtml.py +++ b/librarian/pyhtml.py @@ -92,7 +92,7 @@ class EduModule(Xmill): return def handle_cwiczenie(self, element): - excercise_handlers = { + exercise_handlers = { 'wybor': Wybor, 'uporzadkuj': Uporzadkuj, 'luki': Luki, @@ -102,7 +102,7 @@ class EduModule(Xmill): } typ = element.attrib['typ'] - handler = excercise_handlers[typ](self.options) + handler = exercise_handlers[typ](self.options) return handler.generate(element) # Lists @@ -131,32 +131,49 @@ class EduModule(Xmill): else: return '
  • ', '
  • ' + + def handle_podpis(self, element): + return u"""
    """, u"
    " + + def handle_tabela(self, element): + has_frames = int(element.attrib.get("ramki", "0")) + if has_frames: frames_c = "framed" + else: frames_c = "" + return u"""""" % frames_c, u"
    " + + def handle_wiersz(self, element): + return u"", u"" + + def handle_kol(self, element): + return u"", u"" + def handle_rdf__RDF(self, _): # ustal w opcjach rzeczy :D return -class Excercise(EduModule): +class Exercise(EduModule): def __init__(self, *args, **kw): self.question_counter = 0 - super(Excercise, self).__init__(*args, **kw) + super(Exercise, self).__init__(*args, **kw) def handle_rozw_kom(self, element): - return None + return u"""""" def handle_cwiczenie(self, element): - self.options = {'excercise': element.attrib['typ']} + self.options = {'exercise': element.attrib['typ']} self.question_counter = 0 self.piece_counter = 0 pre = u""" -
    +
    """ % element.attrib post = u"""
    +
    @@ -185,12 +202,16 @@ class Excercise(EduModule): add_class += ' handles handles-%s' % handles self.options = {'handles': handles} + minimum = element.attrib.get('min', None) + if minimum: minimum_s = ' data-minimum="%d"' % int(minimum) + else: minimum_s = '' + return '
    ' %\ - (add_class, self.question_counter, solution_s), \ + (add_class, self.question_counter, solution_s + minimum_s), \ "
    " -class Wybor(Excercise): +class Wybor(Exercise): def handle_cwiczenie(self, element): pre, post = super(Wybor, self).handle_cwiczenie(element) is_single_choice = True @@ -203,7 +224,7 @@ class Wybor(Excercise): return pre, post def handle_punkt(self, element): - if self.options['excercise'] and element.attrib.get('nazwa', None): + if self.options['exercise'] and element.attrib.get('nazwa', None): qc = self.question_counter self.piece_counter += 1 no = self.piece_counter @@ -226,7 +247,7 @@ class Wybor(Excercise): return super(Wybor, self).handle_punkt(element) -class Uporzadkuj(Excercise): +class Uporzadkuj(Exercise): def handle_pytanie(self, element): """ Overrides the returned content default handle_pytanie @@ -245,7 +266,7 @@ Overrides the returned content default handle_pytanie "" -class Luki(Excercise): +class Luki(Exercise): def find_pieces(self, question): return question.xpath("//luka") @@ -291,19 +312,26 @@ class Zastap(Luki): % self.piece_counter, '' -class Przyporzadkuj(Excercise): +class Przyporzadkuj(Exercise): + def handle_pytanie(self, element): + pre, post = super(Przyporzadkuj, self).handle_pytanie(element) + minimum = element.attrib.get("min", None) + if minimum: + self.options = {"min": int(minimum)} + return pre, post + def handle_lista(self, lista): if 'nazwa' in lista.attrib: attrs = { 'data-name': lista.attrib['nazwa'], 'class': 'predicate' - } + } self.options = {'predicate': True} elif 'cel' in lista.attrib: attrs = { 'data-target': lista.attrib['cel'], 'class': 'subject' - } + } self.options = {'subject': True, 'handles': 'uchwyty' in lista.attrib} else: attrs = {} @@ -319,14 +347,17 @@ class Przyporzadkuj(Excercise): return '
  • ' % (element.attrib['rozw'], self.piece_counter), '
  • ' elif self.options['predicate']: - placeholders = u'
  • ' + if self.options['min']: + placeholders = u'
  • ' * self.options['min'] + else: + placeholders = u'
  • ' return '
  • ' % element.attrib, '
      ' + placeholders + '
  • ' else: return super(Przyporzadkuj, self).handle_punkt(element) -class PrawdaFalsz(Excercise): +class PrawdaFalsz(Exercise): def handle_punkt(self, element): if 'rozw' in element.attrib: return u'''