Class HtmlFoldParser
- java.lang.Object
-
- org.fife.ui.rsyntaxtextarea.folding.HtmlFoldParser
-
- All Implemented Interfaces:
FoldParser
public class HtmlFoldParser extends java.lang.Object implements FoldParser
Fold parser for HTML 5, PHP and JSP. For HTML, we currently don't fold everything possible, just the "big" stuff. For PHP, we only fold the "big" HTML stuff and PHP regions, not code blocks in the actual PHP. For JSP we only fold the "big" HTML stuff and JSP blocks, not anything in the actual Java code.- Version:
- 1.0
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private static classHtmlFoldParser.TagCloseInfoA simple wrapper for the token denoting the closing of a tag (i.e.
-
Field Summary
Fields Modifier and Type Field Description private static java.util.Set<java.lang.String>FOLDABLE_TAGSThe set of tags we allow to be folded.private static char[]JSP_COMMENT_ENDprivate static char[]JSP_COMMENT_STARTprivate static char[]JSP_ENDprivate static char[]JSP_STARTprivate static char[][]LANG_ENDprivate static char[][]LANG_STARTprivate intlanguageThe language we're folding.static intLANGUAGE_HTMLConstant denoting we're folding HTML.static intLANGUAGE_JSPConstant denoting we're folding JSP.static intLANGUAGE_PHPConstant denoting we're folding PHP.private static char[]MARKUP_CLOSING_TAG_STARTprivate static char[]MLC_ENDprivate static char[]MLC_STARTprivate static char[]PHP_ENDprivate static char[]PHP_START
-
Constructor Summary
Constructors Constructor Description HtmlFoldParser(int language)Constructor.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description java.util.List<Fold>getFolds(RSyntaxTextArea textArea)Returns a list of all folds in the text area.private intgetTagCloseInfo(Token tagNameToken, RSyntaxTextArea textArea, int line, HtmlFoldParser.TagCloseInfo info)Grabs the token representing the closing of a tag (i.e.private static booleanisEndOfLastFold(java.util.Stack<java.lang.String> tagNameStack, Token tagNameToken)Returns whether a closing tag ("</...>") with a specific name is the closing tag of our current fold region.private static booleanisFoldableTag(Token tagNameToken)Returns whether a tag is one we allow as a foldable region.private static voidremoveFold(Fold fold, java.util.List<Fold> folds)If this fold has a parent fold, this method removes it from its parent.
-
-
-
Field Detail
-
LANGUAGE_HTML
public static final int LANGUAGE_HTML
Constant denoting we're folding HTML.- See Also:
- Constant Field Values
-
LANGUAGE_PHP
public static final int LANGUAGE_PHP
Constant denoting we're folding PHP.- See Also:
- Constant Field Values
-
LANGUAGE_JSP
public static final int LANGUAGE_JSP
Constant denoting we're folding JSP.- See Also:
- Constant Field Values
-
language
private final int language
The language we're folding.
-
FOLDABLE_TAGS
private static final java.util.Set<java.lang.String> FOLDABLE_TAGS
The set of tags we allow to be folded. These are tags that must have explicit close tags in both HTML 4 and HTML 5.
-
MARKUP_CLOSING_TAG_START
private static final char[] MARKUP_CLOSING_TAG_START
-
MLC_START
private static final char[] MLC_START
-
MLC_END
private static final char[] MLC_END
-
PHP_START
private static final char[] PHP_START
-
PHP_END
private static final char[] PHP_END
-
JSP_START
private static final char[] JSP_START
-
JSP_END
private static final char[] JSP_END
-
LANG_START
private static final char[][] LANG_START
-
LANG_END
private static final char[][] LANG_END
-
JSP_COMMENT_START
private static final char[] JSP_COMMENT_START
-
JSP_COMMENT_END
private static final char[] JSP_COMMENT_END
-
-
Constructor Detail
-
HtmlFoldParser
public HtmlFoldParser(int language)
Constructor.- Parameters:
language- The language to fold, such asLANGUAGE_PHP.
-
-
Method Detail
-
getFolds
public java.util.List<Fold> getFolds(RSyntaxTextArea textArea)
Description copied from interface:FoldParserReturns a list of all folds in the text area.- Specified by:
getFoldsin interfaceFoldParser- Parameters:
textArea- The text area whose contents should be analyzed.- Returns:
- The list of folds. If this method returns
null, it is treated as if no folds were found.
-
getTagCloseInfo
private int getTagCloseInfo(Token tagNameToken, RSyntaxTextArea textArea, int line, HtmlFoldParser.TagCloseInfo info)
Grabs the token representing the closing of a tag (i.e. ">" or "/>"). This should only be called after a tag name has been parsed, to ensure the "closing" of other tags is not identified.- Parameters:
tagNameToken- The token denoting the name of the tag.textArea- The text area whose contents are being parsed.line- The line we're currently on.info- On return, information about the closing of the tag is returned in this object.- Returns:
- The line number of the closing tag token.
-
isEndOfLastFold
private static boolean isEndOfLastFold(java.util.Stack<java.lang.String> tagNameStack, Token tagNameToken)Returns whether a closing tag ("</...>") with a specific name is the closing tag of our current fold region.- Parameters:
tagNameStack- The stack of fold regions.tagNameToken- The tag name of the most recently parsed closing tag.- Returns:
- Whether it's the end of the current fold region.
-
isFoldableTag
private static boolean isFoldableTag(Token tagNameToken)
Returns whether a tag is one we allow as a foldable region.- Parameters:
tagNameToken- The tag's name token. This may benull.- Returns:
- Whether this tag can be a foldable region.
-
removeFold
private static void removeFold(Fold fold, java.util.List<Fold> folds)
If this fold has a parent fold, this method removes it from its parent. Otherwise, it's assumed to be the most recent (top-level) fold in thefoldslist, and is removed from that.- Parameters:
fold- The fold to remove.folds- The list of top-level folds.
-
-