// IndexFromList.jsx
//DESCRIPTION: Erzeugt Indexeinträge anhand einer externen Konkordanzdatei, die über einen Dialog ausgewählt wird.
var myDoc = app.activeDocument;
var myList = File.openDialog ("Liste mit Indexbegriffen");
if (!myList) exit();
var myWords = getWords(myList);
proceedWithList(myWords);
alert("Habe fertig!");
// Konkordanzliste einlesen
function getWords (aFile) {
if (aFile.exists) {
aFile.open ('r', undefined, undefined);
var aText = aFile.read()+'\n';
// löschen von Leerzeichen am Ende der Zeile + löschen von leeren Zeilen
aText = aText.replace(/ +\n/g, '\n').replace(/\n+/g, '\n');
// ersetzen von mehrfach aufeinander folgende Leerzeichen aller Art und von RETURNs durch RETURNs
aText = aText.replace(/\s+/g, '\n');
var words = aText.split('\n');
aFile.close();
return words;
}
else {
exit();
}
}
// Begriffsliste abarbeiten
function proceedWithList (w) {
// bei Bedarf wird ein neuer Index erzeugt
if (myDoc.indexes.length == 0)
myDoc.indexes.add();
app.findPreferences = app.changePreferences = null;
for (var i = 0; i < w.length; i++)
if (w[i] != "")
makeEntry(w[i]);
// Aktualisieurng des Index
myDoc.indexes[0].update();
}
// Indexeintrag erzeugen
function makeEntry(oneWord) {
var myResult = myDoc.search(oneWord, true, true, undefined);
for (var oneEntry = myResult.length-1; oneEntry >=0; oneEntry--) {
// Fehler abfangen, z.B. Fußnoten ausnehmen
try {
// Hinzufügen des Themas
myDoc.indexes[0].topics.add(oneWord);
// Hinzufügen der Referenz
myDoc.indexes[0].topics.item(myResult[oneEntry].contents).pageReferences.add(myResult[oneEntry], PageReferenceType.currentPage);
}
catch(e) {}
}
}