/**
 * HTMLContentsFilter
 * HTML文字列を，通常のプレーンテキストに変換するフィルタ
 * このフィルタを通すと，全てのタグが除去される
 */
package org.logical_paradox.rss.http;

public class HTMLContentsFilter extends ContentsFilter {
	public HTMLContentsFilter() {
	}

	public String filter( String src ) {
		StringBuffer buffer = new StringBuffer( src.length() );

		int idx = 0;
		boolean skip = false;

		while( idx < src.length() ) {
			char c = src.charAt( idx );
			idx++;

			if( skip == true && c != '>' ) {
				// タグを読み取っている最中の場合，タグの終了ポイントがくるまでスキップ
				continue;
			} else if( skip == true && c == '>' ) {
				// タグ読み取り中に，終了位置がきた場合はスキップを終了
				skip = false;
				continue;
			}

			switch( c ) {
				case '<':
					skip = true;
					break;
				case '\r':
				case '\n':
				case ' ':
				case '\t':
					break;
				default:
					// スキップ中でなく，タグの開始でもない場合は，単にデータとして格納する
					buffer.append( c );
					break;
			}
		}
		return buffer.toString();
	}
}

// end of HTMLContentsFilter.java
