[Htmlparser-cvs] htmlparser/src/org/htmlparser/scanners CompositeTagScanner.java,1.79,1.80 ScriptSca
Brought to you by:
derrickoswald
From: <der...@us...> - 2003-11-06 03:01:03
|
Update of /cvsroot/htmlparser/htmlparser/src/org/htmlparser/scanners In directory sc8-pr-cvs1:/tmp/cvs-serv6198/scanners Modified Files: CompositeTagScanner.java ScriptScanner.java TagScanner.java Log Message: The tags now own their ids, enders and end tag enders. The isTagToBeEndedFor logic is now uses information from the tags, not the scanners. The kludge to get the scanner from the NodeFactory is now gone too, this also comes from the tag. Index: CompositeTagScanner.java =================================================================== RCS file: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/scanners/CompositeTagScanner.java,v retrieving revision 1.79 retrieving revision 1.80 diff -C2 -d -r1.79 -r1.80 *** CompositeTagScanner.java 1 Nov 2003 21:55:43 -0000 1.79 --- CompositeTagScanner.java 6 Nov 2003 03:00:22 -0000 1.80 *************** *** 91,95 **** * Inside the scanner, use createTag() to specify what tag needs to be created. */ ! public abstract class CompositeTagScanner extends TagScanner { protected Set tagEnderSet; --- 91,95 ---- * Inside the scanner, use createTag() to specify what tag needs to be created. */ ! public class CompositeTagScanner extends TagScanner { protected Set tagEnderSet; *************** *** 216,220 **** node = null; } ! else if (isTagToBeEndedFor (next)) // check DTD { // insert a virtual end tag and backup one node --- 216,220 ---- node = null; } ! else if (isTagToBeEndedFor (tag, next)) // check DTD { // insert a virtual end tag and backup one node *************** *** 226,234 **** { // now recurse if there is a scanner for this type of tag ! // whoah! really cheat here to get the parser ! // maybe eventually the tag will know it's own scanner eh ! org.htmlparser.Parser parser = (org.htmlparser.Parser)lexer.getNodeFactory (); ! scanner = parser.getScanner (name); ! if ((null != scanner) && scanner.evaluate (next, this)) node = scanner.scan (next, lexer.getPage ().getUrl (), lexer); } --- 226,231 ---- { // now recurse if there is a scanner for this type of tag ! scanner = next.getThisScanner (); ! if ((null != scanner) && scanner.evaluate (next, null)) node = scanner.scan (next, lexer.getPage ().getUrl (), lexer); } *************** *** 304,312 **** * @param children The list of nodes contained within the ebgin end tag pair. */ ! public abstract Tag createTag(Page page, int start, int end, Vector attributes, Tag startTag, Tag endTag, NodeList children) throws ParserException; ! public final boolean isTagToBeEndedFor(Tag tag) { String name; boolean ret; --- 301,324 ---- * @param children The list of nodes contained within the ebgin end tag pair. */ ! public Tag createTag(Page page, int start, int end, Vector attributes, Tag startTag, Tag endTag, NodeList children) throws ParserException ! { ! CompositeTag ret; ! ret = new CompositeTag (); ! ret.setPage (page); ! ret.setStartPosition (start); ! ret.setEndPosition (end); ! ret.setAttributesEx (attributes); ! ret.setStartTag (startTag); ! ret.setEndTag (endTag); ! ret.setChildren (children); ! ! return (ret); ! } ! ! public final boolean isTagToBeEndedFor (Tag current, Tag tag) { String name; + String[] ends; boolean ret; *************** *** 315,321 **** name = tag.getTagName (); if (tag.isEndTag ()) ! ret = endTagEnderSet.contains (name); else ! ret = tagEnderSet.contains (name); return (ret); --- 327,339 ---- name = tag.getTagName (); if (tag.isEndTag ()) ! ends = current.getEndTagEnders (); else ! ends = current.getEnders (); ! for (int i = 0; i < ends.length; i++) ! if (name.equalsIgnoreCase (ends[i])) ! { ! ret = true; ! break; ! } return (ret); Index: ScriptScanner.java =================================================================== RCS file: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/scanners/ScriptScanner.java,v retrieving revision 1.49 retrieving revision 1.50 diff -C2 -d -r1.49 -r1.50 *** ScriptScanner.java 1 Nov 2003 21:55:43 -0000 1.49 --- ScriptScanner.java 6 Nov 2003 03:00:24 -0000 1.50 *************** *** 118,122 **** done = true; } ! else if (isTagToBeEndedFor ((Tag)node)) { lexer.setPosition (position); --- 118,122 ---- done = true; } ! else if (isTagToBeEndedFor (tag, (Tag)node)) { lexer.setPosition (position); Index: TagScanner.java =================================================================== RCS file: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/scanners/TagScanner.java,v retrieving revision 1.48 retrieving revision 1.49 diff -C2 -d -r1.48 -r1.49 *** TagScanner.java 1 Nov 2003 21:55:43 -0000 1.48 --- TagScanner.java 6 Nov 2003 03:00:25 -0000 1.49 *************** *** 42,45 **** --- 42,46 ---- import org.htmlparser.lexer.Lexer; import org.htmlparser.lexer.Page; + import org.htmlparser.lexer.nodes.Attribute; import org.htmlparser.tags.Tag; import org.htmlparser.util.NodeIterator; *************** *** 66,70 **** * */ ! public abstract class TagScanner implements Serializable --- 67,71 ---- * */ ! public class TagScanner implements Serializable *************** *** 149,154 **** * @throws ParserException */ ! public abstract Tag createTag(Page page, int start, int end, Vector attributes, Tag tag, String url) throws ParserException; ! public abstract String [] getID(); } --- 150,171 ---- * @throws ParserException */ ! public Tag createTag(Page page, int start, int end, Vector attributes, Tag tag, String url) throws ParserException ! { ! Tag ret; ! ret = null; ! ! ret = new Tag (); ! ret.setPage (page); ! ret.setStartPosition (start); ! ret.setEndPosition (end); ! ret.setAttributesEx (attributes); ! ! return (ret); ! } ! ! public String [] getID () ! { ! return (new String[0]); ! } } |