package tk.eclipse.plugin.htmleditor;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import org.eclipse.core.runtime.QualifiedName;
import org.eclipse.core.runtime.content.IContentDescription;
import org.eclipse.core.runtime.content.ITextContentDescriber;
/**
* The base class of the <code>ITextContentDescriber</code> implementation.
* <p>
* This class allows to subclasses to describe the content type by the specified tag.
* If the specified tag is contained in contents, this class judges as valid.
*
* @author Naoki Takezoe
* @since 2.0.2
*/
public abstract class AbstractHTMLContentDescriber implements ITextContentDescriber {
private String tagName;
private static final QualifiedName[] NO_OPTIONS = new QualifiedName[0];
public AbstractHTMLContentDescriber(String tagName){
this.tagName = tagName;
}
public int describe(InputStream contents, IContentDescription description) throws IOException {
return describe(new InputStreamReader(contents, "ISO-8859-1"), description);
}
public QualifiedName[] getSupportedOptions() {
return NO_OPTIONS;
}
public int describe(Reader contents, IContentDescription description) throws IOException {
BufferedReader reader = new BufferedReader(contents);
String line = null;
while((line = reader.readLine()) != null){
if(line.indexOf("<" + this.tagName) >= 0){
return VALID;
}
}
return INDETERMINATE;
}
}