X-Git-Url: https://git.mdrn.pl/librarian.git/blobdiff_plain/f3e3374103ee892540927b65acc2231a10e493b7..3b978e07d8be0a912d167170a8bb13a78135775e:/librarian/pyhtml.py?ds=sidebyside
diff --git a/librarian/pyhtml.py b/librarian/pyhtml.py
index 096e1f6..9264c15 100644
--- a/librarian/pyhtml.py
+++ b/librarian/pyhtml.py
@@ -13,21 +13,11 @@ from copy import deepcopy
IMAGE_THUMB_WIDTH = 300
-try:
- from fnpdjango.utils.text.slughifi import slughifi
- def naglowek_to_anchor(naglowek):
- return slughifi(naglowek.text)
-except ImportError:
- from urllib import quote
- def naglowek_to_anchor(naglowek):
- return quote(re.sub(r" +", " ", naglowek.text.strip()))
-
-
-
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
@@ -58,18 +48,21 @@ 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')
handle_tytul_dziela = tag('em', 'title')
handle_slowo_obce = tag('em', 'foreign')
+ def naglowek_to_anchor(self, naglowek):
+ return self.options['urlmapper'].naglowek_to_anchor(naglowek)
+
def handle_nazwa_utworu(self, element):
toc = []
for naglowek in element.getparent().findall('.//naglowek_rozdzial'):
a = etree.Element("a")
- a.attrib["href"] = "#" + naglowek_to_anchor(naglowek)
+ a.attrib["href"] = "#" + self.naglowek_to_anchor(naglowek)
a.text = naglowek.text
atxt = etree.tostring(a, encoding=unicode)
toc.append("
%s " % atxt)
@@ -79,9 +72,16 @@ class EduModule(Xmill):
def handle_naglowek_rozdzial(self, element):
return_to_top = u"wrÃ³Ä do spisu treÅci "
- pre, post = tag_open_close("h2", id=naglowek_to_anchor(element))
+ pre, post = tag_open_close("h2", id=self.naglowek_to_anchor(element))
+ url = self.options['urlmapper'].get_help_url(element)
+ if url:
+ post = " ? " % (url,) + post
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
@@ -108,21 +108,42 @@ class EduModule(Xmill):
else: pomoce = ''
forma = ''.join(element.xpath('forma/text()'))
+ get_forma_url = self.options['urlmapper'].get_forma_url
+ forms = []
+ for form_name in forma.split(','):
+ name = form_name.strip()
+ url = get_forma_url(name)
+ if url:
+ forms.append("%s " % (url, name))
+ else:
+ forms.append(name)
+ forma = ', '.join(forms)
+ if forma:
+ forma = '' % forma
czas = ''.join(element.xpath('czas/text()'))
+ if czas:
+ czas = '' % czas
counter = self.activity_counter
+ if element.getnext().tag == 'aktywnosc' or self.activity_last.getnext() == element:
+ counter_html = """%(counter)d. """ % locals()
+ else:
+ counter_html = ''
+
+ self.activity_last = element
+
return u"""
- %(counter)d.
+ %(counter_html)s
%(opis)s""" % locals(), \
u"""%(wskazowki)s
-
-
+ %(czas)s
+ %(forma)s
%(pomoce)s
@@ -172,12 +193,11 @@ u"""%(wskazowki)s
if surl is None:
# print '** missing src on
, setting default'
surl = 'http://edukacjamedialna.edu.pl/lekcje/slowniczek/'
- sxml = None
- if surl:
- sxml = etree.fromstring(self.options['provider'].by_uri(surl).get_string())
+ sxml = etree.fromstring(self.options['provider'].by_uri(surl).get_string())
+
self.options = {'slowniczek': True, 'slowniczek_xml': sxml }
pre, post = '', '
'
- if self.options['wldoc'].book_info.url.slug != 'slowniczek':
+ if not self.options['wldoc'].book_info.url.slug.startswith('slowniczek'):
post += u'Zobacz caÅy sÅowniczek.
' % surl
return pre, post
@@ -218,9 +238,9 @@ u"""%(wskazowki)s
subgen = EduModule(self.options)
definiens_s = subgen.generate(definiens)
else:
- print '!! Missing definiendum in source:', element.text
+ print "!! Missing definiendum in source: '%s'" % element.text
- return u"", u" " + definiens_s
+ return u"" % self.naglowek_to_anchor(element), u" " + definiens_s
def handle_definiens(self, element):
return u"", u" "
@@ -544,6 +564,8 @@ class Przyporzadkuj(Exercise):
'data-target': lista.attrib['cel'],
'class': 'subject'
}
+ if lista.attrib.get('krotkie'):
+ self.options = {'short': True}
self.options = {'subject': True}
else:
attrs = {}
@@ -556,7 +578,10 @@ class Przyporzadkuj(Exercise):
if self.options['handles']:
return '%s ' % (element.attrib.get('rozw', ''), self.piece_counter, self.piece_counter), ' '
else:
- return '' % (element.attrib.get('rozw', ''), self.piece_counter), ' '
+ extra_class = ""
+ if self.options['short']:
+ extra_class += ' short'
+ return '' % (element.attrib.get('rozw', ''), self.piece_counter, extra_class), ' '
elif self.options['predicate']:
if self.options['min']:
@@ -622,8 +647,20 @@ class EduModuleFormat(Format):
def url_for_image(self, slug, fmt, width=None):
return self.url_for_material(self, slug, fmt)
+ def text_to_anchor(self, text):
+ return re.sub(r" +", " ", text)
+
+ def naglowek_to_anchor(self, naglowek):
+ return self.text_to_anchor(naglowek.text.strip())
+
+ def get_forma_url(self, forma):
+ return None
+
+ def get_help_url(self, naglowek):
+ return None
+
-def transform(wldoc, stylesheet='edumed', options=None, flags=None):
+def transform(wldoc, stylesheet='edumed', options=None, flags=None, verbose=None):
"""Transforms the WL document to XHTML.
If output_filename is None, returns an XML,