summaryrefslogtreecommitdiff
path: root/app/akk-keilschrift.js
blob: 6a48393094bba27fd1cbd7f0a16a6d3b6c37d723 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
/* Baut i18n.akk-x-ob.js aus i18n.akk-x-ob.translit.js.
   Aufruf:  node akk-keilschrift.js
   Umgesetzt wird ausschliesslich der Inhalt einfacher Zeichenketten;
   Bezeichner, Zahlen und Kommentare bleiben unberuehrt. Jedes Zeichen,
   das die Unicode-Namenstabelle nicht kennt, bricht den Lauf ab. */
const fs = require('fs'), path = require('path');
const { convert } = require('./akk-keilschrift-lib.js');
const APP = __dirname;
const src = fs.readFileSync(path.join(APP, 'i18n.akk-x-ob.translit.js'), 'utf8');
const kopf = src.slice(0, src.indexOf('window.I18N_AKK_X_OB'));
const rumpf = src.slice(src.indexOf('window.I18N_AKK_X_OB'));
const KEY = /^[A-Za-z0-9.:_-]+$/;
let n = 0;
const neu = rumpf.replace(/'((?:[^'\\]|\\.)*)'/g, (m, s) => {
  if (KEY.test(s)) return m;
  n++; return "'" + convert(s) + "'";
});
const neuerKopf = kopf
  .replace('UMSCHRIFT, QUELLE', 'KEILSCHRIFT, ERZEUGT')
  .replace(/   Diese Datei wird NICHT[\s\S]*?mehrere Silben sich ein Zeichen teilen \(da\/ṭa, ka\/qa, ša\/…\)\./,
    '   ERZEUGTE DATEI — nicht von Hand ändern. Quelle ist\n'
  + '   i18n.akk-x-ob.translit.js; nach jeder Änderung dort neu bauen:\n'
  + '       node akk-keilschrift.js\n'
  + '   Ein Rückweg aus dieser Datei in die Umschrift existiert nicht:\n'
  + '   die Umsetzung ist nicht injektiv, mehrere Silben teilen sich ein\n'
  + '   Zeichen (da/ṭa, ka/qa, sa/ṣa).\n\n'
  + '   SCHRIFT. Unicode-Keilschriftblock U+12000…U+1247F. Ohne\n'
  + '   passenden Zeichensatz erscheinen leere Kästchen; das Stilblatt\n'
  + '   setzt für lang="akk-x-ob" einen Stapel, der mit Santakku\n'
  + '   beginnt — dem einzigen darin, dessen Zeichenformen wirklich\n'
  + '   altbabylonisch sind. Die Referenzglyphen des Unicode-Standards\n'
  + '   sind neuassyrisch, also rund tausend Jahre zu jung; das ist\n'
  + '   eine Frage des Zeichensatzes, nicht der Kodierung.');
fs.writeFileSync(path.join(APP, 'i18n.akk-x-ob.js'), neuerKopf + neu);
console.log('umgesetzte Zeichenketten:', n);