org.fife.ui.rsyntaxtextarea.parser.Parser Maven / Gradle / Ivy
/*
* 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 Parser
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.
*
* To install a Parser
, 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 null
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 null
.
*/
public URL getImageBase();
/**
* Returns whether this parser is enabled. If this returns
* false
, 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-null
.
*/
public ParseResult parse(RSyntaxDocument doc, String style);
}