/*textnumbers.java
*Kai Triebel [
[email protected]]
*(09. September 2008)
*/
import java.io.*;
import java.util.regex.*;
import java.util.*;
public class textnumbers {
static File datei_rein;
static File datei_raus;
static Pattern pat;
static List<String> fussnote;
static List<String> verweis;
static StringBuffer Zeile;
static BufferedReader In;
static BufferedWriter Out;
static boolean footnote;
static String Eingangszeile;
public static void main(String[] args) {
textnumbers tn = new textnumbers();
for(String datei:args) {
tn.go(datei);
}
}
public textnumbers() {
pat = Pattern.compile( "\\["+"\\d+"+"\\]" );
fussnote = new ArrayList<String>();
verweis = new ArrayList<String>();
footnote = false;
}
public void go(String datei) {
datei_rein = new File( datei );
datei_raus = new File( datei+".neu.txt" );
try {
In = new BufferedReader( new FileReader( datei_rein ) );
Out = new BufferedWriter( new FileWriter( datei_raus ) );
Eingangszeile = In.readLine();
while(Eingangszeile != null) {
if(Eingangszeile.equals("@footnote:")) footnote = true;
Zeile = new StringBuffer(Eingangszeile);
List<MatchResult> results = new ArrayList<MatchResult>();
for ( Matcher m = pat.matcher(Eingangszeile); m.find(); ) {
results.add( m.toMatchResult() );
}
for ( int i=0 ; i<results.size() ; i++ ) {
if(!fussnote.contains(results.get(i).group())) {fussnote.add(results.get(i).group());}
}
for ( int i=(results.size()-1) ; i>=0 ; i-- ) {
Eingangszeile = Zeile.replace(results.get(i).start(), results.get(i).end(), "["+(fussnote.indexOf(results.get(i).group())+1)+"]").toString();
}
if(footnote == false) schreiben(Eingangszeile);
else verweis.add(Eingangszeile);
Eingangszeile = In.readLine();
}
if(footnote == true) {
Collections.sort(verweis);
for(int i=0; i<verweis.size(); i++) schreiben(verweis.get(i));
}
Out.close();
} catch(IOException e) { System.out.println("Fehlercode 01: \n"+e); }
}
public static void schreiben(String zeile) {
try {
Out.write(zeile);
Out.newLine();
} catch(IOException e) { System.out.println("Fehlercode 02: \n"+e); }
}
}