/* * 09/23/2005 * * Parser.java - An interface for a parser for RSyntaxTextArea. * Copyright (C) 2005 Robert Futrell * robert_futrell at users.sourceforge.net * http://fifesoft.com/rsyntaxtextarea * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ 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. * * @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); }