+def squeeze_whitespace(s):
+ return re.sub(b'\\s+', b' ', s)
+
+
+def set_hyph_language(source_tree):
+ def get_short_lng_code(text):
+ result = ''
+ text = ''.join(text)
+ with open(get_resource('res/ISO-639-2_8859-1.txt'), 'rb') as f:
+ for line in f.read().decode('latin1').split('\n'):
+ list = line.strip().split('|')
+ if list[0] == text:
+ result = list[2]
+ if result == '':
+ return text
+ else:
+ return result
+ bibl_lng = etree.XPath('//dc:language//text()',
+ namespaces={'dc': str(DCNS)})(source_tree)
+ short_lng = get_short_lng_code(bibl_lng[0])
+ try:
+ return Hyphenator(get_resource('res/hyph-dictionaries/hyph_' +
+ short_lng + '.dic'))
+ except:
+ pass
+
+
+def hyphenate_and_fix_conjunctions(source_tree, hyph):
+ texts = etree.XPath('/utwor/*[2]//text()')(source_tree)
+ for t in texts:
+ parent = t.getparent()
+ if hyph is not None:
+ newt = ''
+ wlist = re.compile(r'\w+|[^\w]', re.UNICODE).findall(t)
+ for w in wlist:
+ newt += hyph.inserted(w, u'\u00AD')
+ else:
+ newt = t
+ newt = re.sub(r'(?<=\s\w)\s+', u'\u00A0', newt)
+ if t.is_text:
+ parent.text = newt
+ elif t.is_tail:
+ parent.tail = newt
+
+