]> pere.pagekite.me Git - text-mekanikerord.git/blobdiff - make-glossary
Bytt til dblatex for å bygge PDF.
[text-mekanikerord.git] / make-glossary
index 6095a008377e50145794ad51c9f3d06b70486a27..9e8f89fb067f53bc86cc914e46341b7c9041ead7 100755 (executable)
@@ -3,7 +3,9 @@
 from lxml import etree
 from lxml.etree import tostring
 
-tree = etree.parse('mekanikk-1999/meksme-utf8.xml')
+filemakerxml = 'meksme-utf8.xml'
+
+tree = etree.parse(filemakerxml)
 root = tree.getroot()
 
 #print(root)
@@ -11,7 +13,6 @@ root = tree.getroot()
 
 cols = (
     'topic', 'sme', 'desc-sme', 'desc-nb', 'nb', 'sv', 'fi', 'en', 'is',
-    'unknown',
 )
 
 resultset = root.find("{http://www.filemaker.com/fmpxmlresult}RESULTSET")
@@ -29,36 +30,67 @@ for row in resultset.getchildren():
         index += 1
     #print(d)
     words.append(d)
+def langsort(lang, e):
+    if lang in e:
+        return e[lang]
+    else:
+        return e['sme']
 
-def make_glossary(lang):
-    print(".. glossary::")
-    print()
+def make_glossary_docbook(lang):
+    import lxml.builder
+    E = lxml.builder.ElementMaker(
+        nsmap={
+#            'xi': "http://www.w3.org/2001/XInclude",
+        }
+    )
+
+    langcodes = ('en', 'nb', 'sme', 'sv', 'fi',)
 
-    def langsort(e):
-        if lang in e:
-            return e[lang]
-        else:
-            return e['sme']
-    for e in sorted(words, key=langsort):
+    def indexit(entry, wlist, lang=None):
+        for w in wlist.split(","):
+            if "" != w:
+                if lang:
+                    w += "[%s]" % lang
+                entry.append(E.indexterm(E.primary(w)))
+    glossary = E.glosslist()
+    for e in sorted(words, key=lambda x: langsort(lang, x)):
+        if 'topic' not in e:
+            e['topic'] = 'n/a'
         if lang in e and 'desc-%s' % lang in e:
-            if 'topic' not in e:
-                e['topic'] = 'n/a'
-            #print(e)
-            print("  %s [%s]\n     %s" % (e[lang], e['topic'], e['desc-%s' % lang]))
-            print()
-        else:
-            # ERROR / missing definition
-            pass
+            entry = E.glossentry(
+                E.glossterm('%s [%s]' % (e[lang], e['topic'])),
+            )
+            indexit(entry, e[lang])
+            lstr = ""
+            for l in langcodes:
+                if l != lang and l in e:
+                    lstr += "%s (%s) " % (e[l], l)
+                    # Add foreign words to index, split on comma
+                    indexit(entry, e[l], l)
+            entry.append(E.glossdef(E.para(e['desc-%s' % lang])))
+            if "" != lstr:
+                entry.append(E.glossdef(E.para(lstr)))
+            glossary.append(entry)
 
-print("Nordsamisk")
-print("==========")
-print()
-make_glossary(lang='sme')
+    content = lxml.etree.tostring(glossary,
+                                  pretty_print=True,
+                                  xml_declaration=True,
+                                  encoding='UTF-8')
+#    print(content)
+    with open('glossary.xml', 'wb') as f:
+        f.write(content)
 
-print("Norsk")
-print("=====")
-print()
-make_glossary(lang='nb')
+def make_glossary(lang):
+    make_glossary_docbook(lang)
+
+if True:
+    print("Norsk/bokmål")
+    print()
+    make_glossary(lang='nb')
+else:
+    print("Nordsamisk")
+    print()
+    make_glossary(lang='sme')
 
 #print("Engelsk")
 #print("=====")