[Htmlparser-cvs] htmlparser/src/org/htmlparser/scanners OptionTagScanner.java,1.15,1.16
Brought to you by:
derrickoswald
From: <der...@us...> - 2003-05-10 01:47:16
|
Update of /cvsroot/htmlparser/htmlparser/src/org/htmlparser/scanners In directory sc8-pr-cvs1:/tmp/cvs-serv21759/org/htmlparser/scanners Modified Files: OptionTagScanner.java Log Message: For Dhaval: I have converted the OptionTag to a composite tag. The problem that is present with Label tag exists here a well so my guess is that it is with CompositeTag itself. Once solved, all related problems will also get solved. In any case I have commented some test conditions in the OptionTagTest class. You can uncomment it and see it for yourself. Some SelectTag test cases are also changed as a result. Index: OptionTagScanner.java =================================================================== RCS file: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/scanners/OptionTagScanner.java,v retrieving revision 1.15 retrieving revision 1.16 diff -C2 -d -r1.15 -r1.16 *** OptionTagScanner.java 5 May 2003 03:12:22 -0000 1.15 --- OptionTagScanner.java 10 May 2003 01:47:12 -0000 1.16 *************** *** 29,122 **** package org.htmlparser.scanners; - import java.util.Map; - - import org.htmlparser.Node; - import org.htmlparser.NodeReader; - import org.htmlparser.StringNode; - import org.htmlparser.tags.EndTag; import org.htmlparser.tags.OptionTag; import org.htmlparser.tags.Tag; import org.htmlparser.tags.data.TagData; - import org.htmlparser.util.ParserException; - import org.htmlparser.util.ParserUtils; ! public class OptionTagScanner extends TagScanner { ! public OptionTagScanner() ! { ! super(); } ! public OptionTagScanner(String filter) ! { ! super(filter); } - - public Tag scan(Tag tag, String pUrl, NodeReader reader, String currLine) - throws ParserException - { - try - { - EndTag endTag=null; - Node node = null; - Node prevNode = tag; - boolean endTagFound=false; - StringBuffer text=new StringBuffer(""); - // Remove all existing scanners, so as to parse only till the end tag - Map tempScanners = ParserUtils.adjustScanners(reader); ! do ! { ! node = reader.readElement(); ! if (node instanceof EndTag) ! { ! endTag = (EndTag)node; ! String endTagString = endTag.getText().toUpperCase(); ! if (endTagString.equals("OPTION") || endTagString.equals("SELECT")) ! { ! endTagFound = true; ! if (endTagString.equals("SELECT")) ! { ! node = prevNode; ! } ! } ! } ! else if (node instanceof StringNode) ! { ! text.append(node.toHtml()); ! } ! else ! { ! endTagFound = true; ! node = prevNode; ! } ! prevNode = node; ! } ! while (!endTagFound); ! OptionTag lOptionTag = ! new OptionTag( ! new TagData( ! 0, node.elementEnd(), tag.getText(),currLine ! ), ! text.toString() ! ); ! ParserUtils.restoreScanners(reader, tempScanners); ! return lOptionTag; ! } ! catch (Exception e) ! { ! throw new ParserException("HTMLOptionTagScanner.scan() : Error while scanning option tags, current line = "+currLine,e); ! } } ! ! ! /** ! * @see org.htmlparser.scanners.TagScanner#getID() ! */ ! public String [] getID() { ! String [] ids = new String[1]; ! ids[0] = "OPTION"; ! return ids; } } --- 29,58 ---- package org.htmlparser.scanners; import org.htmlparser.tags.OptionTag; import org.htmlparser.tags.Tag; + import org.htmlparser.tags.data.CompositeTagData; import org.htmlparser.tags.data.TagData; ! public class OptionTagScanner extends CompositeTagScanner { ! private static final String MATCH_NAME [] = {"OPTION"}; ! private static final String [] ENDERS = { "SELECT" }; ! ! public OptionTagScanner() { ! super(MATCH_NAME, ENDERS, false); } ! public OptionTagScanner(String filter) { ! super(filter, MATCH_NAME, ENDERS, false); } ! public String [] getID() { ! return MATCH_NAME; } ! public Tag createTag( ! TagData tagData, ! CompositeTagData compositeTagData) { ! return new OptionTag(tagData,compositeTagData); } } |