add tag ids
[wolnelektury.git] / src / catalogue / api / tojson.py
index 633d4f6..3d47cd9 100644 (file)
@@ -1,3 +1,4 @@
+from collections import defaultdict
 import json
 import re
 from sys import argv
@@ -81,7 +82,7 @@ tags = {
 
     'begin': ('_ignore', True, {'class': 'reference'}, {'data-uri': 'href'}, False),
     'end': ('_ignore', True, {'class': 'reference'}, {'data-uri': 'href'}, False),
-    'motyw': ('a', True, {'class': 'theme'}, None, False),
+    'motyw': ('_ignore', True, {'class': 'theme'}, None, False),
 
     'pa': ('a', True, {'class': 'footnote footnote-pa'}, None, False),
     'pe': ('a', True, {'class': 'footnote footnote-pe'}, None, False),
@@ -90,6 +91,24 @@ tags = {
     'ptrad': ('a', True, {'class': 'footnote footnote-ptrad'}, None, False),
 }
 
+id_prefixes = {
+    'pa': 'fn',
+    'pe': 'fn',
+    'pr': 'fn',
+    'pt': 'fn',
+    'ptrad': 'fn',
+    'wers': 'f',
+    'wers_wciety': 'f',
+    'wers_cd': 'f',
+    'wers_akap': 'f',
+    'zastepnik_wersu': 'f',
+    'wers_do_prawej': 'f',
+    'wers_srodek': 'f',
+    'akap': 'f',
+    'akap_cd': 'f',
+    'akap_dialog': 'f',
+}
+
 
 #tree = etree.parse(argv[1])
 
@@ -102,7 +121,7 @@ front2 = set(['autor_utworu'])
 
 
 def norm(text):
-    text = text.replace('---', '—').replace('--', '–').replace('...', '…').replace(',,', '„').replace('"', '”')
+    text = text.replace('---', '—').replace('--', '–').replace('...', '…').replace(',,', '„').replace('"', '”').replace('\n', ' ')
     return text
 
 
@@ -124,6 +143,11 @@ def toj(elem, S):
             if 'dlugi_cytat' not in S['stack'] and 'poezja_cyt' not in S['stack']:
                 S['vindex'] += 1
                 output['visibleNumber'] = S['vindex']
+        id_prefix = id_prefixes.get(elem.tag, 'i')
+        S['id'][id_prefix] += 1
+        output['id'] = id_prefix + str(S['id'][id_prefix])
+        if elem.attrib.get('id'):
+            output['id'] = 'wl-' + elem.attrib.get('id')
         if attrs:
             output['attr'] = attrs.copy()
         if attr_map:
@@ -184,6 +208,7 @@ def conv(tree):
     S = {
         'index': 0,
         'vindex': 0,
+        'id': defaultdict(lambda: 0),
         'stack': [],
         'front1': [],
         'front2': [],