package ch.panter.decorator.reader; import java.io.FilterReader; import java.io.IOException; import java.io.Reader; class HTMLReader extends FilterReader { private boolean intag = false; public HTMLReader( Reader in ) { super( in ); } @Override public int read() throws IOException { char[] buf = new char[1]; return read( buf, 0, 1 ) == -1 ? -1 : buf[0]; } @Override public int read( char[] cbuf, int off, int len ) throws IOException { int numchars = 0; while ( numchars == 0 ) { numchars = in.read( cbuf, off, len ); if ( numchars == -1 ) // EOF? return -1; int last = off; for ( int i = off; i < off + numchars; i++ ) { if ( ! intag ) { if ( cbuf[i] == '<' ) intag = true; else cbuf[last++] = cbuf[i]; } else if ( cbuf[i] == '>' ) intag = false; } numchars = last - off; } return numchars; } }