package net.sf.jabref.imports; import java.io.BufferedReader; import java.io.FilterReader; import java.io.IOException; import java.io.Reader; /** * * Warning -- it is not a generic filter, only read is implemented! * * @author Fedor Bezrukov * * @version $Id$ * * TODO: Fix grammar in bibtex entries -- it ma return invalid bibkeys (with space) * */ public class SPIRESBibtexFilterReader extends FilterReader { protected BufferedReader in; private String line; private int pos; private boolean pre; SPIRESBibtexFilterReader(Reader _in) { super(_in); in = new BufferedReader(_in); pos=-1; pre=false; } private String readpreLine() throws IOException { String l; do { l=in.readLine(); if (l==null) return null; if (l.equals("<pre>")) { pre = true; l=in.readLine(); } if (l.equals("</pre>")) pre = false; } while (!pre); return l; } private String fixBibkey(String in) { if (in== null) return null; //System.out.println(in); if ( in.matches("@Article\\{.*,") ) { //System.out.println(in.replace(' ','_')); return in.replace(' ', '_'); } else return in; } public int read() throws IOException { if ( pos<0 ) { line=fixBibkey(readpreLine()); pos=0; if ( line == null ) return -1; } if ( pos>=line.length() ) { pos=-1; return '\n'; } return line.charAt(pos++); } }