diff options
author | Artur Signell <artur@vaadin.com> | 2012-08-13 18:34:33 +0300 |
---|---|---|
committer | Artur Signell <artur@vaadin.com> | 2012-08-13 19:18:33 +0300 |
commit | e85d933b25cc3c5cc85eb7eb4b13b950fd8e1569 (patch) | |
tree | 9ab6f13f7188cab44bbd979b1cf620f15328a03f /server/src/org/jsoup/parser/TreeBuilder.java | |
parent | 14dd4d0b28c76eb994b181a4570f3adec53342e6 (diff) | |
download | vaadin-framework-e85d933b25cc3c5cc85eb7eb4b13b950fd8e1569.tar.gz vaadin-framework-e85d933b25cc3c5cc85eb7eb4b13b950fd8e1569.zip |
Moved server files to a server src folder (#9299)
Diffstat (limited to 'server/src/org/jsoup/parser/TreeBuilder.java')
-rw-r--r-- | server/src/org/jsoup/parser/TreeBuilder.java | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/server/src/org/jsoup/parser/TreeBuilder.java b/server/src/org/jsoup/parser/TreeBuilder.java new file mode 100644 index 0000000000..e06caad501 --- /dev/null +++ b/server/src/org/jsoup/parser/TreeBuilder.java @@ -0,0 +1,60 @@ +package org.jsoup.parser; + +import org.jsoup.helper.DescendableLinkedList; +import org.jsoup.helper.Validate; +import org.jsoup.nodes.Document; +import org.jsoup.nodes.Element; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author Jonathan Hedley + */ +abstract class TreeBuilder { + CharacterReader reader; + Tokeniser tokeniser; + protected Document doc; // current doc we are building into + protected DescendableLinkedList<Element> stack; // the stack of open elements + protected String baseUri; // current base uri, for creating new elements + protected Token currentToken; // currentToken is used only for error tracking. + protected ParseErrorList errors; // null when not tracking errors + + protected void initialiseParse(String input, String baseUri, ParseErrorList errors) { + Validate.notNull(input, "String input must not be null"); + Validate.notNull(baseUri, "BaseURI must not be null"); + + doc = new Document(baseUri); + reader = new CharacterReader(input); + this.errors = errors; + tokeniser = new Tokeniser(reader, errors); + stack = new DescendableLinkedList<Element>(); + this.baseUri = baseUri; + } + + Document parse(String input, String baseUri) { + return parse(input, baseUri, ParseErrorList.noTracking()); + } + + Document parse(String input, String baseUri, ParseErrorList errors) { + initialiseParse(input, baseUri, errors); + runParser(); + return doc; + } + + protected void runParser() { + while (true) { + Token token = tokeniser.read(); + process(token); + + if (token.type == Token.TokenType.EOF) + break; + } + } + + protected abstract boolean process(Token token); + + protected Element currentElement() { + return stack.getLast(); + } +} |