All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.clickntap.tool.html.EntityPreserveReader Maven / Gradle / Ivy

There is a newer version: 1.30
Show newest version
package com.clickntap.tool.html;

import java.io.IOException;
import java.io.Reader;

public class EntityPreserveReader extends java.io.FilterReader {
	private static final char AMP = '&';
	private static final char[] AMP_ENTITY = { ';', 'p', 'm', 'a' };
	private int x0 = -1, x1 = -1;

	public EntityPreserveReader(Reader r) {
		super(r);
	}

	public int read() throws IOException {
		if (x0 == -1) {
			int c = in.read();
			if (c == AMP)
				x0 = 3;
			return c;
		} else
			return AMP_ENTITY[x0--];
	}

	public int read(char buffer[], int offset, int length) throws IOException {
		for (int i = 0; i < length; i++) {
			int c = read();
			if (c == -1)
				return i;
			else
				buffer[i + offset] = (char) c;
		}
		return length;
	}

	public boolean ready() throws IOException {
		if (x0 != -1)
			return true;
		return in.ready();
	}

	public boolean markSupported() {
		return in.markSupported();
	}

	public void mark(int limit) throws IOException {
		x1 = x0;
		in.mark(limit);
	}

	public void reset() throws IOException {
		x0 = x1;
		in.reset();
	}
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy