/* * 09/23/2005 * * Parser.java - An interface for a parser for RSyntaxTextArea. * * This library is distributed under a modified BSD license. See the included * RSyntaxTextArea.License.txt file for details. */ package org.fife.ui.rsyntaxtextarea.parser; import java.net.URL; import org.fife.ui.rsyntaxtextarea.RSyntaxDocument; import org.fife.ui.rsyntaxtextarea.RSyntaxTextArea; import org.fife.ui.rsyntaxtextarea.SyntaxConstants; import org.fife.ui.rsyntaxtextarea.focusabletip.FocusableTip; /** * An interface for a parser for content in an {@link RSyntaxTextArea}. * A <code>Parser</code> returns a list of issues it finds in the text area's * content, which the text area can flag (e.g. squiggle underline). It can * also return descriptions of the issues, to be used in tool tips.<p> * * To install a <code>Parser</code>, simply call * {@link RSyntaxTextArea#addParser(Parser)}. * * @author Robert Futrell * @version 0.5 * @see AbstractParser */ public interface Parser { /** * Returns the listener for hyperlink events from {@link FocusableTip}s, * or <code>null</code> if none. * * @return The listener. */ public ExtendedHyperlinkListener getHyperlinkListener(); /** * Returns the base URL for any images displayed in returned * {@link ParserNotice} HTML text. Note that if a parser notice's text * is not HTML, this URL is not used. * * @return The URL. This may be <code>null</code>. */ public URL getImageBase(); /** * Returns whether this parser is enabled. If this returns * <code>false</code>, it will not be run. * * @return Whether this parser is enabled. */ public boolean isEnabled(); /** * Parses input from the specified document. * * @param doc The document to parse. This document is in a read lock, * so it cannot be modified while parsing is occurring. * @param style The language being rendered, such as * {@link SyntaxConstants#SYNTAX_STYLE_JAVA}. * @return An object describing the section of the document parsed and the * results. This is guaranteed to be non-<code>null</code>. */ public ParseResult parse(RSyntaxDocument doc, String style); }