htmlparser-cvs Mailing List for HTML Parser (Page 9)
Brought to you by:
derrickoswald
You can subscribe to this list here.
2003 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(141) |
Jun
(108) |
Jul
(66) |
Aug
(127) |
Sep
(155) |
Oct
(149) |
Nov
(72) |
Dec
(72) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2004 |
Jan
(100) |
Feb
(36) |
Mar
(21) |
Apr
(3) |
May
(87) |
Jun
(28) |
Jul
(84) |
Aug
(5) |
Sep
(14) |
Oct
|
Nov
|
Dec
|
2005 |
Jan
(1) |
Feb
(39) |
Mar
(26) |
Apr
(38) |
May
(14) |
Jun
(10) |
Jul
|
Aug
|
Sep
(13) |
Oct
(8) |
Nov
(10) |
Dec
|
2006 |
Jan
|
Feb
(1) |
Mar
(17) |
Apr
(20) |
May
(28) |
Jun
(24) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2015 |
Jan
|
Feb
|
Mar
(1) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: Derrick O. <der...@us...> - 2005-03-12 12:52:33
|
Update of /cvsroot/htmlparser/htmlparser/src/org/htmlparser/beans In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv9677/beans Modified Files: StringBean.java Log Message: Bug #1161137 Non English Character web page Reinitialize the string buffer after encoding change exception processing. Index: StringBean.java =================================================================== RCS file: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/beans/StringBean.java,v retrieving revision 1.41 retrieving revision 1.42 diff -C2 -d -r1.41 -r1.42 *** StringBean.java 24 May 2004 16:18:12 -0000 1.41 --- StringBean.java 12 Mar 2005 12:52:19 -0000 1.42 *************** *** 187,193 **** mReplaceSpace = true; mCollapse = true; ! mBuffer = new StringBuffer (4096); ! mIsScript = false; ! mIsPre = false; mIsStyle = false; } --- 187,193 ---- mReplaceSpace = true; mCollapse = true; ! mBuffer = new StringBuffer (4096); ! mIsScript = false; ! mIsPre = false; mIsStyle = false; } *************** *** 342,346 **** finally { ! mBuffer = null; } } --- 342,346 ---- finally { ! mBuffer = new StringBuffer (4096); } } *************** *** 413,420 **** { if (null == mStrings) ! if (0 == mBuffer.length ()) ! setStrings (); ! else ! updateStrings (mBuffer.toString ()); return (mStrings); --- 413,420 ---- { if (null == mStrings) ! if (0 == mBuffer.length ()) ! setStrings (); ! else ! updateStrings (mBuffer.toString ()); return (mStrings); |
From: Derrick O. <der...@us...> - 2005-03-12 11:52:31
|
Update of /cvsroot/htmlparser/htmlparser/src/org/htmlparser/http In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28159 Modified Files: ConnectionManager.java Log Message: Bug #1160010 NullPointerException in addCookies Add test for null expiry date. Index: ConnectionManager.java =================================================================== RCS file: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/http/ConnectionManager.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** ConnectionManager.java 2 Sep 2004 02:28:15 -0000 1.1 --- ConnectionManager.java 12 Mar 2005 11:52:21 -0000 1.2 *************** *** 884,887 **** --- 884,888 ---- { Cookie cookie; + Date expires; Date now; *************** *** 892,896 **** { cookie = (Cookie)cookies.elementAt (i); ! if (cookie.getExpiryDate ().before (now)) { cookies.remove (i); --- 893,898 ---- { cookie = (Cookie)cookies.elementAt (i); ! expires = cookie.getExpiryDate (); ! if ((null != expires) && expires.before (now)) { cookies.remove (i); *************** *** 898,907 **** } else ! if (path.startsWith (cookie.getPath ())) ! { ! if (null == list) ! list = new Vector (); ! list.addElement (cookie); ! } } } --- 900,909 ---- } else ! if (path.startsWith (cookie.getPath ())) ! { ! if (null == list) ! list = new Vector (); ! list.addElement (cookie); ! } } } |
From: Derrick O. <der...@us...> - 2005-03-07 02:57:44
|
Update of /cvsroot/htmlparser/htmlparser/src/org/htmlparser In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv14464/src/org/htmlparser Modified Files: Parser.java Log Message: Update version to 1.5-20050306 Index: Parser.java =================================================================== RCS file: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/Parser.java,v retrieving revision 1.101 retrieving revision 1.102 diff -C2 -d -r1.101 -r1.102 *** Parser.java 13 Feb 2005 22:45:47 -0000 1.101 --- Parser.java 7 Mar 2005 02:57:35 -0000 1.102 *************** *** 83,87 **** */ public final static String ! VERSION_DATE = "Feb 13, 2005" ; --- 83,87 ---- */ public final static String ! VERSION_DATE = "Mar 06, 2005" ; |
From: Derrick O. <der...@us...> - 2005-03-07 02:57:44
|
Update of /cvsroot/htmlparser/htmlparser/docs In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv14464/docs Modified Files: changes.txt release.txt Log Message: Update version to 1.5-20050306 Index: release.txt =================================================================== RCS file: /cvsroot/htmlparser/htmlparser/docs/release.txt,v retrieving revision 1.66 retrieving revision 1.67 diff -C2 -d -r1.66 -r1.67 *** release.txt 13 Feb 2005 22:45:46 -0000 1.66 --- release.txt 7 Mar 2005 02:57:34 -0000 1.67 *************** *** 1,3 **** ! HTMLParser Version 1.5 (Integration Build Feb 13, 2005) ********************************************* --- 1,3 ---- ! HTMLParser Version 1.5 (Integration Build Mar 06, 2005) ********************************************* *************** *** 32,35 **** --- 32,39 ---- handles proxies, passwords and cookies. Some testing still needed. Also removed some line separator cruft. + Added parseCDATA to the Lexer, used in script and style scanners. + Note that this is significantly new behaviour that now adheres to appendix + B.3.2 Specifying non-HTML data of the HTML reference: + http://www.w3.org/TR/html4/appendix/notes.html#notes-specifying-data Configuration Management Removed the need for the Translate class to be packaged with htmllexer.jar. *************** *** 69,72 **** --- 73,83 ---- Bug Fixes --------- + 1153508 CVS sources do not compile + 1104627 Parser Crash reading javascript + 1061869 Crashing when trying to capture link to XLS document + 1056438 Byte Order Mark + 1044707 mark()/reset() issues + 1024045 StringBean crashes on an URL + 1021925 StyleTag with missing linefeed prevents page from parsing 1005409 Input file not free by parser. 998195 SiteCatpurer just crashed *************** *** 115,118 **** --- 126,130 ---- [34] Jon Gillette [35] Enrico Triolo + [36] Dave Anderson If you find any bugs, please go to Index: changes.txt =================================================================== RCS file: /cvsroot/htmlparser/htmlparser/docs/changes.txt,v retrieving revision 1.203 retrieving revision 1.204 diff -C2 -d -r1.203 -r1.204 *** changes.txt 13 Feb 2005 22:45:46 -0000 1.203 --- changes.txt 7 Mar 2005 02:57:34 -0000 1.204 *************** *** 16,19 **** --- 16,76 ---- ******************************************************************************* + Integration Build 1.5 - 20050306 + -------------------------------- + 2005-03-06 21:18 derrickoswald + + * src/org/htmlparser/: lexer/Lexer.java, lexer/Page.java, + scanners/ScriptScanner.java, scanners/StyleScanner.java, + tests/scannersTests/ScriptScannerTest.java: + + Bug #1104627 Parser Crash reading javascript + Bug #1024045 StringBean crashes on an URL + Bug #1021925 StyleTag with missing linefeed prevents page from parsing + Corrected operation with script and style scanners to recognize the ETAGO + when parsing CDATA -- see http://www.w3.org/TR/html4/appendix/notes.html#notes-specifying-data. + Original solution to bug #741769 ScriptScanner doesn't handle quoted </script> tags, + was erroneous; it should have been recognized as faulty HTML. + Several test cases changed to follow this advice: + "Authors should therefore escape "</" within the content." + + 2005-03-06 16:46 derrickoswald + + * src/org/htmlparser/: lexer/InputStreamSource.java, + tests/lexerTests/LexerTests.java: + + Bug #1044707 mark()/reset() issues + Added wrapping with a org.htmlparser.lexer.Stream if markSupported + returns false on the InputStream passed to InputStreamSource constructor. + Added better error message when reset fails in setEncoding(). + + 2005-03-04 10:57 derrickoswald + + * + src/org/htmlparser/parserapplications/filterbuilder/FilterBuilder.java: + + Bug #1153508 CVS sources do not compile + Repaired sources so it would compile with Java 1.4. + + 2005-02-14 19:41 derrickoswald + + * src/org/htmlparser/lexer/InputStreamSource.java: + + Bug #1056438 Byte Order Mark + Not a solution, just a better error message. + + 2005-02-14 18:54 derrickoswald + + * docs/contributors.html: + + Add David Anderson to contributors list. + + 2005-02-14 18:49 derrickoswald + + * src/org/htmlparser/parserapplications/SiteCapturer.java: + + Implement suggested change for + bug #1061869 Crashing when trying to capture link to XLS document + checking for null from getContentType(). + Integration Build 1.5 - 20050213 -------------------------------- |
From: Derrick O. <der...@us...> - 2005-03-07 02:19:17
|
Update of /cvsroot/htmlparser/htmlparser/src/org/htmlparser/lexer In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv5186/lexer Modified Files: Lexer.java Page.java Log Message: Bug #1104627 Parser Crash reading javascript Bug #1024045 StringBean crashes on an URL Bug #1021925 StyleTag with missing linefeed prevents page from parsing Corrected operation with script and style scanners to recognize the ETAGO when parsing CDATA -- see http://www.w3.org/TR/html4/appendix/notes.html#notes-specifying-data. Original solution to bug #741769 ScriptScanner doesn't handle quoted </script> tags, was erroneous; it should have been recognized as faulty HTML. Several test cases changed to follow this advice: "Authors should therefore escape "</" within the content." Index: Page.java =================================================================== RCS file: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/lexer/Page.java,v retrieving revision 1.46 retrieving revision 1.47 diff -C2 -d -r1.46 -r1.47 *** Page.java 13 Feb 2005 22:45:47 -0000 1.46 --- Page.java 7 Mar 2005 02:18:37 -0000 1.47 *************** *** 446,450 **** public void close () throws IOException { ! getSource ().destroy (); } --- 446,451 ---- public void close () throws IOException { ! if (null != getSource ()) ! getSource ().destroy (); } Index: Lexer.java =================================================================== RCS file: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/lexer/Lexer.java,v retrieving revision 1.34 retrieving revision 1.35 diff -C2 -d -r1.34 -r1.35 *** Lexer.java 13 Feb 2005 22:45:47 -0000 1.34 --- Lexer.java 7 Mar 2005 02:18:37 -0000 1.35 *************** *** 1054,1057 **** --- 1054,1141 ---- } + /** + * Return CDATA as a text node. + * According to appendix <a href="http://www.w3.org/TR/html4/appendix/notes.html#notes-specifying-data"> + * B.3.2 Specifying non-HTML data</a> of the + * <a href="http://www.w3.org/TR/html4/">HTML 4.01 Specification</a>: + * <quote> + * <b>Element content</b><br> + * When script or style data is the content of an element (SCRIPT and STYLE), + * the data begins immediately after the element start tag and ends at the + * first ETAGO ("</") delimiter followed by a name start character ([a-zA-Z]); + * note that this may not be the element's end tag. + * Authors should therefore escape "</" within the content. Escape mechanisms + * are specific to each scripting or style sheet language. + * </quote> + * @return The <code>TextNode</code> of the CDATA or <code>null</code> if none. + */ + public Node parseCDATA () + throws + ParserException + { + int start; + int state; + boolean done; + char ch; + int end; + + start = mCursor.getPosition (); + state = 0; + done = false; + while (!done) + { + ch = mPage.getCharacter (mCursor); + switch (state) + { + case 0: // prior to ETAGO + switch (ch) + { + case 0: // end of input + done = true; + break; + case '<': + state = 1; + break; + default: + break; + } + break; + case 1: // < + switch (ch) + { + case 0: // end of input + done = true; + break; + case '/': + state = 2; + break; + default: + state = 0; + break; + } + break; + case 2: // </ + if (0 == ch) + done = true; + else if (Character.isLetter (ch)) + { + done = true; + // back up to the start of ETAGO + mCursor.retreat (); + mCursor.retreat (); + mCursor.retreat (); + } + else + state = 0; + break; + default: + throw new IllegalStateException ("how the fuck did we get in state " + state); + } + } + end = mCursor.getPosition (); + + return (makeString (start, end)); + } + // // NodeFactory interface |
From: Derrick O. <der...@us...> - 2005-03-07 02:18:57
|
Update of /cvsroot/htmlparser/htmlparser/src/org/htmlparser/tests/scannersTests In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv5186/tests/scannersTests Modified Files: ScriptScannerTest.java Log Message: Bug #1104627 Parser Crash reading javascript Bug #1024045 StringBean crashes on an URL Bug #1021925 StyleTag with missing linefeed prevents page from parsing Corrected operation with script and style scanners to recognize the ETAGO when parsing CDATA -- see http://www.w3.org/TR/html4/appendix/notes.html#notes-specifying-data. Original solution to bug #741769 ScriptScanner doesn't handle quoted </script> tags, was erroneous; it should have been recognized as faulty HTML. Several test cases changed to follow this advice: "Authors should therefore escape "</" within the content." Index: ScriptScannerTest.java =================================================================== RCS file: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/tests/scannersTests/ScriptScannerTest.java,v retrieving revision 1.57 retrieving revision 1.58 diff -C2 -d -r1.57 -r1.58 *** ScriptScannerTest.java 2 Sep 2004 02:28:07 -0000 1.57 --- ScriptScannerTest.java 7 Mar 2005 02:18:47 -0000 1.58 *************** *** 183,186 **** --- 183,195 ---- * string parser was not moving to the ignore state on encountering double * quotes (only single quotes were previously accepted). + * + * <pre> + * Bug #1104627 Parser Crash reading javascript + * Bug #1024045 StringBean crashes on an URL + * Bug #1021925 StyleTag with missing linefeed prevents page from parsing + * </pre> + * Altered test to correctly escape the ETAGO. + * See http://www.w3.org/TR/html4/appendix/notes.html#notes-specifying-data + * * @throws Exception */ *************** *** 203,207 **** "document.write(\"}\"); " + "// parser thinks this is the end tag.\n" + ! "document.write(\"</script>\");" + "</script>" + "<body>" + --- 212,216 ---- "document.write(\"}\"); " + "// parser thinks this is the end tag.\n" + ! "document.write(\"<\\/script>\");" + "</script>" + "<body>" + *************** *** 226,230 **** "document.write(\"}\"); " + "// parser thinks this is the end tag.\n" + ! "document.write(\"</script>\");", scriptTag.getScriptCode() ); --- 235,239 ---- "document.write(\"}\"); " + "// parser thinks this is the end tag.\n" + ! "document.write(\"<\\/script>\");", scriptTag.getScriptCode() ); *************** *** 232,240 **** } public void testScriptCodeExtraction() throws ParserException { createParser( "<SCRIPT language=JavaScript>" + "document.write(\"<a href=\"1.htm\"><img src=\"1.jpg\" " + ! "width=\"80\" height=\"20\" border=\"0\"></a>\");" + "</SCRIPT>" ); --- 241,260 ---- } + /** + * + * <pre> + * Bug #1104627 Parser Crash reading javascript + * Bug #1024045 StringBean crashes on an URL + * Bug #1021925 StyleTag with missing linefeed prevents page from parsing + * </pre> + * Altered test to correctly escape the ETAGO. + * See http://www.w3.org/TR/html4/appendix/notes.html#notes-specifying-data + * + */ public void testScriptCodeExtraction() throws ParserException { createParser( "<SCRIPT language=JavaScript>" + "document.write(\"<a href=\"1.htm\"><img src=\"1.jpg\" " + ! "width=\"80\" height=\"20\" border=\"0\"><\\/a>\");" + "</SCRIPT>" ); *************** *** 245,258 **** "script code", "document.write(\"<a href=\"1.htm\"><img src=\"1.jpg\" " + ! "width=\"80\" height=\"20\" border=\"0\"></a>\");", scriptTag.getScriptCode() ); } public void testScriptCodeExtractionWithMultipleQuotes() throws ParserException { createParser( "<SCRIPT language=JavaScript>" + "document.write(\"<a href=\\\"1.htm\\\"><img src=\\\"1.jpg\\\" " + ! "width=\\\"80\\\" height=\\\"20\\\" border=\\\"0\\\"></a>\");" + "</SCRIPT>" ); --- 265,289 ---- "script code", "document.write(\"<a href=\"1.htm\"><img src=\"1.jpg\" " + ! "width=\"80\" height=\"20\" border=\"0\"><\\/a>\");", scriptTag.getScriptCode() ); } + /** + * + * <pre> + * Bug #1104627 Parser Crash reading javascript + * Bug #1024045 StringBean crashes on an URL + * Bug #1021925 StyleTag with missing linefeed prevents page from parsing + * </pre> + * Altered test to correctly escape the ETAGO. + * See http://www.w3.org/TR/html4/appendix/notes.html#notes-specifying-data + * + */ public void testScriptCodeExtractionWithMultipleQuotes() throws ParserException { createParser( "<SCRIPT language=JavaScript>" + "document.write(\"<a href=\\\"1.htm\\\"><img src=\\\"1.jpg\\\" " + ! "width=\\\"80\\\" height=\\\"20\\\" border=\\\"0\\\"><\\/a>\");" + "</SCRIPT>" ); *************** *** 263,271 **** "script code", "document.write(\"<a href=\\\"1.htm\\\"><img src=\\\"1.jpg\\\" " + ! "width=\\\"80\\\" height=\\\"20\\\" border=\\\"0\\\"></a>\");", scriptTag.getScriptCode() ); } public void testScriptWithinComments() throws Exception { createParser( --- 294,313 ---- "script code", "document.write(\"<a href=\\\"1.htm\\\"><img src=\\\"1.jpg\\\" " + ! "width=\\\"80\\\" height=\\\"20\\\" border=\\\"0\\\"><\\/a>\");", scriptTag.getScriptCode() ); } + /** + * + * <pre> + * Bug #1104627 Parser Crash reading javascript + * Bug #1024045 StringBean crashes on an URL + * Bug #1021925 StyleTag with missing linefeed prevents page from parsing + * </pre> + * Altered test to correctly escape the ETAGO. + * See http://www.w3.org/TR/html4/appendix/notes.html#notes-specifying-data + * + */ public void testScriptWithinComments() throws Exception { createParser( *************** *** 308,312 **** "else{" + "\n" + ! "menuobj.document.write('<layer name=gui bgColor=#E6E6E6 width=165 onmouseover=\"clearhidemenu()\" onmouseout=\"hidemenu()\">'+which+'</layer>')" + "\n" + "menuobj.document.close()" + --- 350,354 ---- "else{" + "\n" + ! "menuobj.document.write('<layer name=gui bgColor=#E6E6E6 width=165 onmouseover=\"clearhidemenu()\" onmouseout=\"hidemenu()\">'+which+'<\\/layer>')" + "\n" + "menuobj.document.close()" + *************** *** 516,523 **** /** * See bug #741769 ScriptScanner doesn't handle quoted </script> tags */ public void testScanQuotedEndTag() throws ParserException { ! String html = "<SCRIPT language=\"JavaScript\">document.write('</SCRIPT>');</SCRIPT>"; createParser(html); parseAndAssertNodeCount(1); --- 558,574 ---- /** * See bug #741769 ScriptScanner doesn't handle quoted </script> tags + * + * <pre> + * Bug #1104627 Parser Crash reading javascript + * Bug #1024045 StringBean crashes on an URL + * Bug #1021925 StyleTag with missing linefeed prevents page from parsing + * </pre> + * Altered test to correctly escape the ETAGO. + * See http://www.w3.org/TR/html4/appendix/notes.html#notes-specifying-data + * */ public void testScanQuotedEndTag() throws ParserException { ! String html = "<SCRIPT language=\"JavaScript\">document.write('<\\/SCRIPT>');</SCRIPT>"; createParser(html); parseAndAssertNodeCount(1); |
From: Derrick O. <der...@us...> - 2005-03-07 02:18:57
|
Update of /cvsroot/htmlparser/htmlparser/src/org/htmlparser/scanners In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv5186/scanners Modified Files: ScriptScanner.java StyleScanner.java Log Message: Bug #1104627 Parser Crash reading javascript Bug #1024045 StringBean crashes on an URL Bug #1021925 StyleTag with missing linefeed prevents page from parsing Corrected operation with script and style scanners to recognize the ETAGO when parsing CDATA -- see http://www.w3.org/TR/html4/appendix/notes.html#notes-specifying-data. Original solution to bug #741769 ScriptScanner doesn't handle quoted </script> tags, was erroneous; it should have been recognized as faulty HTML. Several test cases changed to follow this advice: "Authors should therefore escape "</" within the content." Index: StyleScanner.java =================================================================== RCS file: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/scanners/StyleScanner.java,v retrieving revision 1.38 retrieving revision 1.39 diff -C2 -d -r1.38 -r1.39 *** StyleScanner.java 31 Jul 2004 16:42:32 -0000 1.38 --- StyleScanner.java 7 Mar 2005 02:18:46 -0000 1.39 *************** *** 29,32 **** --- 29,33 ---- import java.util.Vector; + import org.htmlparser.Attribute; import org.htmlparser.Node; import org.htmlparser.NodeFactory; *************** *** 54,63 **** /** * Scan for style definitions. ! * Accumulates nodes returned from the lexer, until </STYLE>, ! * <BODY> or <HTML> is encountered. Replaces the node factory ! * in the lexer with a new (empty) one to avoid other scanners missing their ! * end tags and accumulating even the </STYLE> tag. * @param tag The tag this scanner is responsible for. ! * @param lexer The source of subsequent nodes. * @param stack The parse stack, <em>not used</em>. */ --- 55,61 ---- /** * Scan for style definitions. ! * Accumulates text from the page, until </[a-zA-Z] is encountered. * @param tag The tag this scanner is responsible for. ! * @param lexer The source of CDATA. * @param stack The parse stack, <em>not used</em>. */ *************** *** 65,134 **** throws ParserException { ! Node node; ! boolean done; int position; ! int startpos; ! int endpos; ! Tag end; ! NodeFactory factory; ! Text content; ! Tag ret; ! done = false; ! startpos = lexer.getPosition (); ! endpos = startpos; ! end = null; ! factory = lexer.getNodeFactory (); ! lexer.setNodeFactory (new PrototypicalNodeFactory (true)); ! try ! { ! do { ! position = lexer.getPosition (); ! node = lexer.nextNode (true); ! if (null == node) ! done = true; ! else ! if (node instanceof Tag) ! if ( ((Tag)node).isEndTag () ! && ((Tag)node).getTagName ().equals (tag.getIds ()[0])) ! { ! end = (Tag)node; ! done = true; ! } ! else if (isTagToBeEndedFor (tag, (Tag)node)) ! { ! lexer.setPosition (position); ! done = true; ! } ! else ! // must be a string, even though it looks like a tag ! endpos = node.getEndPosition (); ! else if (node instanceof Remark) ! endpos = node.getEndPosition (); ! else // Text ! endpos = node.getEndPosition (); ! } - while (!done); ! content = factory.createStringNode (lexer.getPage (), startpos, endpos); ! // build new end tag if required ! if (null == end) ! end = lexer.getNodeFactory ().createTagNode ( ! lexer.getPage (), endpos, endpos, new Vector ()); ! ret = tag; ! ret.setEndTag (end); ! ret.setChildren (new NodeList (content)); ! content.setParent (ret); ! end.setParent (ret); ! ret.doSemanticAction (); } ! finally { ! lexer.setNodeFactory (factory); } ! return (ret); } } --- 63,102 ---- throws ParserException { ! Node content; int position; ! Node node; ! Attribute attribute; ! Vector vector; ! content = lexer.parseCDATA (); ! position = lexer.getPosition (); ! node = lexer.nextNode (false); ! if (null != node) ! if (!(node instanceof Tag) || !( ((Tag)node).isEndTag () ! && ((Tag)node).getTagName ().equals (tag.getIds ()[0]))) { ! lexer.setPosition (position); ! node = null; } ! // build new end tag if required ! if (null == node) ! { ! attribute = new Attribute ("/style", null); ! vector = new Vector (); ! vector.addElement (attribute); ! node = lexer.getNodeFactory ().createTagNode ( ! lexer.getPage (), position, position, vector); } ! tag.setEndTag ((Tag)node); ! if (null != content) { ! tag.setChildren (new NodeList (content)); ! content.setParent (tag); } + node.setParent (tag); + tag.doSemanticAction (); ! return (tag); } } Index: ScriptScanner.java =================================================================== RCS file: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/scanners/ScriptScanner.java,v retrieving revision 1.61 retrieving revision 1.62 diff -C2 -d -r1.61 -r1.62 *** ScriptScanner.java 31 Jul 2004 16:42:32 -0000 1.61 --- ScriptScanner.java 7 Mar 2005 02:18:46 -0000 1.62 *************** *** 29,32 **** --- 29,33 ---- import java.util.Vector; + import org.htmlparser.Attribute; import org.htmlparser.Node; import org.htmlparser.NodeFactory; *************** *** 35,39 **** --- 36,42 ---- import org.htmlparser.Tag; import org.htmlparser.Text; + import org.htmlparser.lexer.Cursor; import org.htmlparser.lexer.Lexer; + import org.htmlparser.lexer.Page; import org.htmlparser.scanners.ScriptDecoder; import org.htmlparser.tags.ScriptTag; *************** *** 42,47 **** /** ! * The ScriptScanner handles script code. ! * It gathers all interior nodes into one undifferentiated string node. */ public class ScriptScanner --- 45,49 ---- /** ! * The ScriptScanner handles script CDATA. */ public class ScriptScanner *************** *** 58,67 **** /** * Scan for script. ! * Accumulates nodes returned from the lexer, until </SCRIPT>, ! * <BODY> or <HTML> is encountered. Replaces the node factory ! * in the lexer with a new (empty) one to avoid other scanners missing their ! * end tags and accumulating even the </SCRIPT> tag. * @param tag The tag this scanner is responsible for. ! * @param lexer The source of subsequent nodes. * @param stack The parse stack, <em>not used</em>. */ --- 60,66 ---- /** * Scan for script. ! * Accumulates text from the page, until </[a-zA-Z] is encountered. * @param tag The tag this scanner is responsible for. ! * @param lexer The source of CDATA. * @param stack The parse stack, <em>not used</em>. */ *************** *** 70,88 **** { String language; ! Node node; ! boolean done; int position; ! int startpos; ! int endpos; ! Tag end; ! NodeFactory factory; ! Text content; ! Tag ret; - done = false; - startpos = lexer.getPosition (); - endpos = startpos; - end = null; - factory = lexer.getNodeFactory (); if (tag instanceof ScriptTag) { --- 69,79 ---- { String language; ! String code; ! Node content; int position; ! Node node; ! Attribute attribute; ! Vector vector; if (tag instanceof ScriptTag) { *************** *** 92,150 **** language.equalsIgnoreCase ("VBScript.Encode"))) { ! String code = ScriptDecoder.Decode (lexer.getPage (), lexer.getCursor ()); ((ScriptTag)tag).setScriptCode (code); - endpos = lexer.getPosition (); } } ! lexer.setNodeFactory (new PrototypicalNodeFactory (true)); ! try ! { ! do { ! position = lexer.getPosition (); ! node = lexer.nextNode (true); ! if (null == node) ! done = true; ! else ! if (node instanceof Tag) ! if ( ((Tag)node).isEndTag () ! && ((Tag)node).getTagName ().equals (tag.getIds ()[0])) ! { ! end = (Tag)node; ! done = true; ! } ! else if (isTagToBeEndedFor (tag, (Tag)node)) ! { ! lexer.setPosition (position); ! done = true; ! } ! else ! // must be a string, even though it looks like a tag ! endpos = node.getEndPosition (); ! else if (node instanceof Remark) ! endpos = node.getEndPosition (); ! else // Text ! endpos = node.getEndPosition (); } - while (!done); ! content = factory.createStringNode (lexer.getPage (), startpos, endpos); ! // build new end tag if required ! if (null == end) ! end = lexer.getNodeFactory ().createTagNode ( ! lexer.getPage (), endpos, endpos, new Vector ()); ! ret = tag; ! ret.setEndTag (end); ! ret.setChildren (new NodeList (content)); ! content.setParent (ret); ! end.setParent (ret); ! ret.doSemanticAction (); } ! finally { ! lexer.setNodeFactory (factory); } ! return (ret); } } --- 83,120 ---- language.equalsIgnoreCase ("VBScript.Encode"))) { ! code = ScriptDecoder.Decode (lexer.getPage (), lexer.getCursor ()); ((ScriptTag)tag).setScriptCode (code); } } ! content = lexer.parseCDATA (); ! position = lexer.getPosition (); ! node = lexer.nextNode (false); ! if (null != node) ! if (!(node instanceof Tag) || !( ((Tag)node).isEndTag () ! && ((Tag)node).getTagName ().equals (tag.getIds ()[0]))) { ! lexer.setPosition (position); ! node = null; } ! // build new end tag if required ! if (null == node) ! { ! attribute = new Attribute ("/script", null); ! vector = new Vector (); ! vector.addElement (attribute); ! node = lexer.getNodeFactory ().createTagNode ( ! lexer.getPage (), position, position, vector); } ! tag.setEndTag ((Tag)node); ! if (null != content) { ! tag.setChildren (new NodeList (content)); ! content.setParent (tag); } + node.setParent (tag); + tag.doSemanticAction (); ! return (tag); } } |
From: Derrick O. <der...@us...> - 2005-03-06 21:46:45
|
Update of /cvsroot/htmlparser/htmlparser/src/org/htmlparser/lexer In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv29765/lexer Modified Files: InputStreamSource.java Log Message: Bug #1044707 mark()/reset() issues Added wrapping with a org.htmlparser.lexer.Stream if markSupported returns false on the InputStream passed to InputStreamSource constructor. Added better error message when reset fails in setEncoding(). Index: InputStreamSource.java =================================================================== RCS file: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/lexer/InputStreamSource.java,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** InputStreamSource.java 15 Feb 2005 00:41:20 -0000 1.4 --- InputStreamSource.java 6 Mar 2005 21:46:31 -0000 1.5 *************** *** 125,128 **** --- 125,143 ---- if (null == stream) stream = new Stream (null); + else + // bug #1044707 mark()/reset() issues + if (!stream.markSupported ()) + // wrap the stream so we can reset + stream = new Stream (stream); + // else + // just because mark is supported doesn't guarantee + // proper reset operation; there is no call to mark + // in this code, so if reset misbehaves there is an + // appropriate message in setEncoding() to suggest + // wraping it in a Stream. + // This was deemed better than an attempt to call + // reset at this point just to check if we would + // succeed later, or to call mark with an arbitrary + // lookahead size mStream = stream; if (null == charset) *************** *** 235,270 **** offset = mOffset; stream.reset (); ! mEncoding = character_set; ! mReader = new InputStreamReader (stream, character_set); ! mBuffer = new char[mBuffer.length]; ! mLevel = 0; ! mOffset = 0; ! mMark = -1; ! if (0 != offset) { ! new_chars = new char[offset]; ! if (offset != read (new_chars)) ! throw new ParserException ("reset stream failed"); ! for (int i = 0; i < offset; i++) ! if (new_chars[i] != buffer[i]) ! throw new EncodingChangeException ("character mismatch (new: " ! + new_chars[i] ! + " [0x" ! + Integer.toString (new_chars[i], 16) ! + "] != old: " ! + " [0x" ! + Integer.toString (buffer[i], 16) ! + buffer[i] ! + "]) for encoding change from " ! + encoding ! + " to " ! + character_set ! + " at character offset " ! + i); } } catch (IOException ioe) ! { ! throw new ParserException (ioe.getMessage (), ioe); } } --- 250,295 ---- offset = mOffset; stream.reset (); ! try { ! mEncoding = character_set; ! mReader = new InputStreamReader (stream, character_set); ! mBuffer = new char[mBuffer.length]; ! mLevel = 0; ! mOffset = 0; ! mMark = -1; ! if (0 != offset) ! { ! new_chars = new char[offset]; ! if (offset != read (new_chars)) ! throw new ParserException ("reset stream failed"); ! for (int i = 0; i < offset; i++) ! if (new_chars[i] != buffer[i]) ! throw new EncodingChangeException ("character mismatch (new: " ! + new_chars[i] ! + " [0x" ! + Integer.toString (new_chars[i], 16) ! + "] != old: " ! + " [0x" ! + Integer.toString (buffer[i], 16) ! + buffer[i] ! + "]) for encoding change from " ! + encoding ! + " to " ! + character_set ! + " at character offset " ! + i); ! } ! } ! catch (IOException ioe) ! { ! throw new ParserException (ioe.getMessage (), ioe); } } catch (IOException ioe) ! { // bug #1044707 mark()/reset() issues ! throw new ParserException ("Stream reset failed (" ! + ioe.getMessage () ! + "), try wrapping it with a org.htmlparser.lexer.Stream", ! ioe); } } |
From: Derrick O. <der...@us...> - 2005-03-06 21:46:44
|
Update of /cvsroot/htmlparser/htmlparser/src/org/htmlparser/tests/lexerTests In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv29765/tests/lexerTests Modified Files: LexerTests.java Log Message: Bug #1044707 mark()/reset() issues Added wrapping with a org.htmlparser.lexer.Stream if markSupported returns false on the InputStream passed to InputStreamSource constructor. Added better error message when reset fails in setEncoding(). Index: LexerTests.java =================================================================== RCS file: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/tests/lexerTests/LexerTests.java,v retrieving revision 1.22 retrieving revision 1.23 diff -C2 -d -r1.22 -r1.23 *** LexerTests.java 13 Feb 2005 22:45:48 -0000 1.22 --- LexerTests.java 6 Mar 2005 21:46:32 -0000 1.23 *************** *** 605,608 **** --- 605,614 ---- mAcceptable.add ("FORM"); mAcceptable.add ("INPUT"); + mAcceptable.add ("!DOCTYPE"); + mAcceptable.add ("TBODY"); + mAcceptable.add ("B"); + mAcceptable.add ("DIV"); + mAcceptable.add ("SCRIPT"); + mAcceptable.add ("NOSCRIPT"); } |
From: Derrick O. <der...@us...> - 2005-03-04 15:57:42
|
Update of /cvsroot/htmlparser/htmlparser/src/org/htmlparser/parserapplications/filterbuilder In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv18664 Modified Files: FilterBuilder.java Log Message: Bug #1153508 CVS sources do not compile Repaired sources so it would compile with Java 1.4. Index: FilterBuilder.java =================================================================== RCS file: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/parserapplications/filterbuilder/FilterBuilder.java,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** FilterBuilder.java 13 Feb 2005 22:45:48 -0000 1.2 --- FilterBuilder.java 4 Mar 2005 15:57:25 -0000 1.3 *************** *** 865,869 **** try { ! out.append (buffer.toString ()); out.flush (); } --- 865,869 ---- try { ! out.write (buffer.toString ()); out.flush (); } |
From: Derrick O. <der...@us...> - 2005-02-15 00:41:32
|
Update of /cvsroot/htmlparser/htmlparser/src/org/htmlparser/lexer In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv20299 Modified Files: InputStreamSource.java Log Message: Bug #1056438 Byte Order Mark Not a solution, just a better error message. Index: InputStreamSource.java =================================================================== RCS file: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/lexer/InputStreamSource.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** InputStreamSource.java 13 Feb 2005 22:45:47 -0000 1.3 --- InputStreamSource.java 15 Feb 2005 00:41:20 -0000 1.4 *************** *** 250,261 **** throw new EncodingChangeException ("character mismatch (new: " + new_chars[i] ! + " != old: " + buffer[i] ! + ") for encoding change from " + encoding + " to " + character_set + " at character offset " ! + offset); } } --- 250,265 ---- throw new EncodingChangeException ("character mismatch (new: " + new_chars[i] ! + " [0x" ! + Integer.toString (new_chars[i], 16) ! + "] != old: " ! + " [0x" ! + Integer.toString (buffer[i], 16) + buffer[i] ! + "]) for encoding change from " + encoding + " to " + character_set + " at character offset " ! + i); } } |
From: Derrick O. <der...@us...> - 2005-02-14 23:54:28
|
Update of /cvsroot/htmlparser/htmlparser/docs In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv30526 Modified Files: contributors.html Log Message: Add David Anderson to contributors list. Index: contributors.html =================================================================== RCS file: /cvsroot/htmlparser/htmlparser/docs/contributors.html,v retrieving revision 1.13 retrieving revision 1.14 diff -C2 -d -r1.13 -r1.14 *** contributors.html 24 Sep 2004 23:16:48 -0000 1.13 --- contributors.html 14 Feb 2005 23:54:16 -0000 1.14 *************** *** 396,400 **** </tr> </table> ! <p>Thanks to Manuel Polo, Enrico Triolo, Gernot Fricke, Nick Burch, Stephen Harrington, Domenico Lordi, Kamen, John Zook, Cheng Jun, Mazlan Mat, Rob Shields, Wolfgang Germund, Raj Sharma, --- 396,400 ---- </tr> </table> ! <p>Thanks to David Andersen, Manuel Polo, Enrico Triolo, Gernot Fricke, Nick Burch, Stephen Harrington, Domenico Lordi, Kamen, John Zook, Cheng Jun, Mazlan Mat, Rob Shields, Wolfgang Germund, Raj Sharma, |
From: Derrick O. <der...@us...> - 2005-02-14 23:49:35
|
Update of /cvsroot/htmlparser/htmlparser/src/org/htmlparser/parserapplications In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28341 Modified Files: SiteCapturer.java Log Message: Implement suggested change for bug #1061869 Crashing when trying to capture link to XLS document checking for null from getContentType(). Index: SiteCapturer.java =================================================================== RCS file: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/parserapplications/SiteCapturer.java,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** SiteCapturer.java 29 Jul 2004 01:50:19 -0000 1.6 --- SiteCapturer.java 14 Feb 2005 23:49:24 -0000 1.7 *************** *** 285,289 **** connection = url.openConnection (); type = connection.getContentType (); ! ret = type.startsWith ("text/html"); } catch (Exception e) --- 285,292 ---- connection = url.openConnection (); type = connection.getContentType (); ! if (type == null) ! ret = false; ! else ! ret = type.startsWith ("text/html"); } catch (Exception e) |
From: Derrick O. <der...@us...> - 2005-02-14 04:08:50
|
Update of /cvsroot/htmlparser/htmlparser/bin In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv30467 Added Files: filterbuilder Log Message: Added again, hopefully with executable bit set. --- NEW FILE: filterbuilder --- #! /bin/sh if [ -z "$HTMLPARSER_HOME" ] ; then ## resolve links - $0 may be a link to the home PRG="$0" progname=`basename "$0"` saveddir=`pwd` # need this for relative symlinks dirname_prg=`dirname "$PRG"` cd "$dirname_prg" while [ -h "$PRG" ] ; do ls=`ls -ld "$PRG"` link=`expr "$ls" : '.*-> \(.*\)$'` if expr "$link" : '/.*' > /dev/null; then PRG="$link" else PRG=`dirname "$PRG"`"/$link" fi done HTMLPARSER_HOME=`dirname "$PRG"`/.. cd "$saveddir" # make it fully qualified HTMLPARSER_HOME=`cd "$HTMLPARSER_HOME" && pwd` fi if [ -z "$JAVACMD" ] ; then if [ -n "$JAVA_HOME" ] ; then if [ -x "$JAVA_HOME/jre/sh/java" ] ; then # IBM's JDK on AIX uses strange locations for the executables JAVACMD="$JAVA_HOME/jre/sh/java" else JAVACMD="$JAVA_HOME/bin/java" fi else JAVACMD=`which java 2> /dev/null ` if [ -z "$JAVACMD" ] ; then JAVACMD=java fi fi fi if [ ! -x "$JAVACMD" ] ; then echo "Error: JAVA_HOME is not defined correctly." echo " We cannot execute $JAVACMD" exit 1 fi HTMLPARSER_LIB="${HTMLPARSER_HOME}/lib" "$JAVACMD" -Xmx256M -classpath "${HTMLPARSER_LIB}/filterbuilder.jar:${HTMLPARSER_LIB}/htmlparser.jar" org.htmlparser.parserapplications.filterbuilder.FilterBuilder "$@" |
From: Derrick O. <der...@us...> - 2005-02-14 04:06:37
|
Update of /cvsroot/htmlparser/htmlparser/bin In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv29634 Removed Files: filterbuilder Log Message: Remove to change executable flag. --- filterbuilder DELETED --- |
From: Derrick O. <der...@us...> - 2005-02-13 22:46:26
|
Update of /cvsroot/htmlparser/htmlparser In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1683 Modified Files: build.xml Log Message: Update version to 1.5-20050213 Includes javadoc fixes and unit test regression fixes. Index: build.xml =================================================================== RCS file: /cvsroot/htmlparser/htmlparser/build.xml,v retrieving revision 1.74 retrieving revision 1.75 diff -C2 -d -r1.74 -r1.75 *** build.xml 13 Feb 2005 20:36:03 -0000 1.74 --- build.xml 13 Feb 2005 22:45:45 -0000 1.75 *************** *** 454,458 **** </target> ! <target name="release" depends="jar,thumbelina,javadoc" description="prepare the release files"> </target> --- 454,458 ---- </target> ! <target name="release" depends="jar,thumbelina,filterbuilder,javadoc" description="prepare the release files"> </target> |
From: Derrick O. <der...@us...> - 2005-02-13 22:46:01
|
Update of /cvsroot/htmlparser/htmlparser/src/org/htmlparser/lexer In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1683/src/org/htmlparser/lexer Modified Files: InputStreamSource.java Lexer.java Page.java PageAttribute.java Source.java StringSource.java Log Message: Update version to 1.5-20050213 Includes javadoc fixes and unit test regression fixes. Index: InputStreamSource.java =================================================================== RCS file: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/lexer/InputStreamSource.java,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** InputStreamSource.java 17 Jul 2004 13:45:05 -0000 1.2 --- InputStreamSource.java 13 Feb 2005 22:45:47 -0000 1.3 *************** *** 579,583 **** * @param offset The offset of the first character. * @param length The number of characters to retrieve. - * @return A string containing the <code>length</code> characters at <code>offset</code>. * @exception IOException If the offset or (offset + length) is beyond * {@link #offset()} or the source is closed. --- 579,582 ---- Index: StringSource.java =================================================================== RCS file: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/lexer/StringSource.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** StringSource.java 3 Jul 2004 13:56:08 -0000 1.1 --- StringSource.java 13 Feb 2005 22:45:47 -0000 1.2 *************** *** 366,370 **** * @param offset The offset of the first character. * @param length The number of characters to retrieve. - * @return A string containing the <code>length</code> characters at <code>offset</code>. * @exception IOException If the source is closed or an attempt is made to * read beyond {@link #offset()}. --- 366,369 ---- Index: Lexer.java =================================================================== RCS file: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/lexer/Lexer.java,v retrieving revision 1.33 retrieving revision 1.34 diff -C2 -d -r1.33 -r1.34 *** Lexer.java 2 Sep 2004 02:28:14 -0000 1.33 --- Lexer.java 13 Feb 2005 22:45:47 -0000 1.34 *************** *** 141,145 **** /** * Set the page this lexer is working on. ! * @return The page that nodes will be read from. */ public void setPage (Page page) --- 141,145 ---- /** * Set the page this lexer is working on. ! * @param page The page that nodes will be read from. */ public void setPage (Page page) *************** *** 361,365 **** * letter is encountered, or the input stream is exhausted, in which * case <code>null</code> is returned. ! * @param cursor The position at which to start scanning. * @param quotesmart If <code>true</code>, strings ignore quoted contents. */ --- 361,365 ---- * letter is encountered, or the input stream is exhausted, in which * case <code>null</code> is returned. ! * @param start The position at which to start scanning. * @param quotesmart If <code>true</code>, strings ignore quoted contents. */ *************** *** 575,579 **** * one slot for each whitespace or attribute/value pair. * The first slot is for attribute name (kind of like a standalone attribute). ! * @param cursor The position at which to start scanning. * @return The parsed tag. */ --- 575,579 ---- * one slot for each whitespace or attribute/value pair. * The first slot is for attribute name (kind of like a standalone attribute). ! * @param start The position at which to start scanning. * @return The parsed tag. */ *************** *** 808,812 **** * in the remark text. * We allow terminators like --!> even though this isn't part of the spec. ! * @param cursor The position at which to start scanning. * @param quotesmart If <code>true</code>, strings ignore quoted contents. */ --- 808,812 ---- * in the remark text. * We allow terminators like --!> even though this isn't part of the spec. ! * @param start The position at which to start scanning. * @param quotesmart If <code>true</code>, strings ignore quoted contents. */ *************** *** 913,917 **** * Scan characters until "%>" is encountered, or the input stream is * exhausted, in which case <code>null</code> is returned. ! * @param cursor The position at which to start scanning. */ protected Node parseJsp (int start) --- 913,917 ---- * Scan characters until "%>" is encountered, or the input stream is * exhausted, in which case <code>null</code> is returned. ! * @param start The position at which to start scanning. */ protected Node parseJsp (int start) Index: Source.java =================================================================== RCS file: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/lexer/Source.java,v retrieving revision 1.16 retrieving revision 1.17 diff -C2 -d -r1.16 -r1.17 *** Source.java 3 Jul 2004 13:56:08 -0000 1.16 --- Source.java 13 Feb 2005 22:45:47 -0000 1.17 *************** *** 220,224 **** * @param offset The offset of the first character. * @param length The number of characters to retrieve. - * @return A string containing the <code>length</code> characters at <code>offset</code>. * @exception IOException If the source is closed or the offset or * (offset + length) is beyond {@link #offset()}. --- 220,223 ---- Index: Page.java =================================================================== RCS file: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/lexer/Page.java,v retrieving revision 1.45 retrieving revision 1.46 diff -C2 -d -r1.45 -r1.46 *** Page.java 6 Sep 2004 17:13:00 -0000 1.45 --- Page.java 13 Feb 2005 22:45:47 -0000 1.46 *************** *** 195,199 **** /** * Set the connection manager to use. ! * @return The connection manager. */ public static void setConnectionManager (ConnectionManager manager) --- 195,199 ---- /** * Set the connection manager to use. ! * @param manager The new connection manager. */ public static void setConnectionManager (ConnectionManager manager) Index: PageAttribute.java =================================================================== RCS file: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/lexer/PageAttribute.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** PageAttribute.java 24 May 2004 16:18:16 -0000 1.1 --- PageAttribute.java 13 Feb 2005 22:45:47 -0000 1.2 *************** *** 367,372 **** * The part after the equals sign, or the text if it's just a whitepace * 'attribute'. This includes the quotes around the value if any. ! * @return The value, or <code>null</code> if it's a stand-alone attribute, ! * or the text if it's just a whitepace 'attribute'. * @see #getRawValue() */ --- 367,371 ---- * The part after the equals sign, or the text if it's just a whitepace * 'attribute'. This includes the quotes around the value if any. ! * @param buffer The string buffer to append the attribute value to. * @see #getRawValue() */ |
From: Derrick O. <der...@us...> - 2005-02-13 22:46:01
|
Update of /cvsroot/htmlparser/htmlparser/src/org/htmlparser/tags In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1683/src/org/htmlparser/tags Modified Files: LinkTag.java Log Message: Update version to 1.5-20050213 Includes javadoc fixes and unit test regression fixes. Index: LinkTag.java =================================================================== RCS file: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/tags/LinkTag.java,v retrieving revision 1.52 retrieving revision 1.53 diff -C2 -d -r1.52 -r1.53 *** LinkTag.java 31 Jul 2004 16:42:34 -0000 1.52 --- LinkTag.java 13 Feb 2005 22:45:48 -0000 1.53 *************** *** 164,169 **** String ret; ! if (null != getChildren()) ! ret = getChildren().toString(); else ret = ""; --- 164,169 ---- String ret; ! if (null != getChildren ()) ! ret = getChildren ().asString (); else ret = ""; |
From: Derrick O. <der...@us...> - 2005-02-13 22:46:01
|
Update of /cvsroot/htmlparser/htmlparser/src/org/htmlparser/parserapplications/filterbuilder In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1683/src/org/htmlparser/parserapplications/filterbuilder Modified Files: FilterBuilder.java SubFilterList.java Log Message: Update version to 1.5-20050213 Includes javadoc fixes and unit test regression fixes. Index: SubFilterList.java =================================================================== RCS file: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/parserapplications/filterbuilder/SubFilterList.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** SubFilterList.java 13 Feb 2005 20:43:06 -0000 1.1 --- SubFilterList.java 13 Feb 2005 22:45:48 -0000 1.2 *************** *** 183,187 **** /** * Remove a filter from the container. ! * @param filter The filter to remove from the container. */ public void removeFilter (int index) --- 183,187 ---- /** * Remove a filter from the container. ! * @param index The index of the filter to remove from the container. */ public void removeFilter (int index) Index: FilterBuilder.java =================================================================== RCS file: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/parserapplications/filterbuilder/FilterBuilder.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** FilterBuilder.java 13 Feb 2005 20:43:06 -0000 1.1 --- FilterBuilder.java 13 Feb 2005 22:45:48 -0000 1.2 *************** *** 32,36 **** import java.awt.Dimension; import java.awt.Event; ! import java.awt.FileDialog; import java.awt.FlowLayout; import java.awt.Insets; --- 32,36 ---- import java.awt.Dimension; import java.awt.Event; ! import java.awt.FileDialog; import java.awt.FlowLayout; [...2701 lines suppressed...] ! // { ! // javax.swing.UIManager.setLookAndFeel (javax.swing.UIManager.getSystemLookAndFeelClassName ()); ! // } ! // catch (Exception e) ! // { ! // } ! ! // create a new instance of our application's frame, and make it visible ! FilterBuilder builder = new FilterBuilder (); ! builder.setVisible (true); ! } ! catch (Throwable t) ! { ! t.printStackTrace (); ! // ensure the application exits with an error condition ! System.exit (1); ! } ! } ! ! } |
From: Derrick O. <der...@us...> - 2005-02-13 22:46:01
|
Update of /cvsroot/htmlparser/htmlparser/src/org/htmlparser/filters In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1683/src/org/htmlparser/filters Modified Files: NotFilter.java Log Message: Update version to 1.5-20050213 Includes javadoc fixes and unit test regression fixes. Index: NotFilter.java =================================================================== RCS file: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/filters/NotFilter.java,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** NotFilter.java 13 Feb 2005 20:36:00 -0000 1.2 --- NotFilter.java 13 Feb 2005 22:45:47 -0000 1.3 *************** *** 44,48 **** * With no predicates, this would always return <code>false</code> * from {@link #accept}. ! * @see #setPredicates */ public NotFilter () --- 44,48 ---- * With no predicates, this would always return <code>false</code> * from {@link #accept}. ! * @see #setPredicate */ public NotFilter () |
From: Derrick O. <der...@us...> - 2005-02-13 22:46:00
|
Update of /cvsroot/htmlparser/htmlparser/src/org/htmlparser/tests/lexerTests In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1683/src/org/htmlparser/tests/lexerTests Modified Files: LexerTests.java Log Message: Update version to 1.5-20050213 Includes javadoc fixes and unit test regression fixes. Index: LexerTests.java =================================================================== RCS file: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/tests/lexerTests/LexerTests.java,v retrieving revision 1.21 retrieving revision 1.22 diff -C2 -d -r1.21 -r1.22 *** LexerTests.java 24 May 2004 16:18:31 -0000 1.21 --- LexerTests.java 13 Feb 2005 22:45:48 -0000 1.22 *************** *** 38,41 **** --- 38,42 ---- import org.htmlparser.lexer.Lexer; import org.htmlparser.tests.ParserTestCase; + import org.htmlparser.util.EncodingChangeException; import org.htmlparser.util.NodeIterator; import org.htmlparser.util.NodeList; *************** *** 600,603 **** --- 601,608 ---- mAcceptable.add ("TITLE"); mAcceptable.add ("TR"); + mAcceptable.add ("META"); + mAcceptable.add ("STRONG"); + mAcceptable.add ("FORM"); + mAcceptable.add ("INPUT"); } *************** *** 655,661 **** parser = new Parser ("http://www.009.com/"); ! iterator = parser.elements (); ! while (iterator.hasMoreNodes ()) ! checkTagNames (iterator.nextNode ()); } --- 660,676 ---- parser = new Parser ("http://www.009.com/"); ! try ! { ! iterator = parser.elements (); ! while (iterator.hasMoreNodes ()) ! checkTagNames (iterator.nextNode ()); ! } ! catch (EncodingChangeException ece) ! { ! parser.reset (); ! iterator = parser.elements (); ! while (iterator.hasMoreNodes ()) ! checkTagNames (iterator.nextNode ()); ! } } |
From: Derrick O. <der...@us...> - 2005-02-13 22:45:59
|
Update of /cvsroot/htmlparser/htmlparser/src/org/htmlparser In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1683/src/org/htmlparser Modified Files: Attribute.java Parser.java Log Message: Update version to 1.5-20050213 Includes javadoc fixes and unit test regression fixes. Index: Attribute.java =================================================================== RCS file: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/Attribute.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** Attribute.java 31 Jul 2004 16:42:35 -0000 1.3 --- Attribute.java 13 Feb 2005 22:45:46 -0000 1.4 *************** *** 494,499 **** * The part after the equals sign, or the text if it's just a whitepace * 'attribute'. This includes the quotes around the value if any. ! * @return The value, or <code>null</code> if it's a stand-alone attribute, ! * or the text if it's just a whitepace 'attribute'. * @see #getRawValue() */ --- 494,498 ---- * The part after the equals sign, or the text if it's just a whitepace * 'attribute'. This includes the quotes around the value if any. ! * @param buffer The string buffer to append the attribute value to. * @see #getRawValue() */ Index: Parser.java =================================================================== RCS file: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/Parser.java,v retrieving revision 1.100 retrieving revision 1.101 diff -C2 -d -r1.100 -r1.101 *** Parser.java 13 Feb 2005 20:36:01 -0000 1.100 --- Parser.java 13 Feb 2005 22:45:47 -0000 1.101 *************** *** 83,87 **** */ public final static String ! VERSION_DATE = "Jul 28, 2004" ; --- 83,87 ---- */ public final static String ! VERSION_DATE = "Feb 13, 2005" ; *************** *** 154,158 **** /** * Set the connection manager all Parsers use. ! * @return The connection manager. */ public static void setConnectionManager (ConnectionManager manager) --- 154,158 ---- /** * Set the connection manager all Parsers use. ! * @param manager The new connection manager. */ public static void setConnectionManager (ConnectionManager manager) *************** *** 423,428 **** /** ! * Get the current node factory. ! * @return The parser's node factory. */ public void setNodeFactory (NodeFactory factory) --- 423,428 ---- /** ! * Set the current node factory. ! * @param factory The new node factory for the parser. */ public void setNodeFactory (NodeFactory factory) |
From: Derrick O. <der...@us...> - 2005-02-13 22:45:59
|
Update of /cvsroot/htmlparser/htmlparser/docs In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1683/docs Modified Files: changes.txt release.txt Log Message: Update version to 1.5-20050213 Includes javadoc fixes and unit test regression fixes. Index: release.txt =================================================================== RCS file: /cvsroot/htmlparser/htmlparser/docs/release.txt,v retrieving revision 1.65 retrieving revision 1.66 diff -C2 -d -r1.65 -r1.66 *** release.txt 29 Jul 2004 03:02:19 -0000 1.65 --- release.txt 13 Feb 2005 22:45:46 -0000 1.66 *************** *** 1,3 **** ! HTMLParser Version 1.5 (Integration Build Jul 28, 2004) ********************************************* --- 1,3 ---- ! HTMLParser Version 1.5 (Integration Build Feb 13, 2005) ********************************************* *************** *** 29,32 **** --- 29,35 ---- New APIs Implement rudimentary sax parser. Currently exposes DOM parser via sax project + A new http package is added, the primary class being Connectionmanager which + handles proxies, passwords and cookies. Some testing still needed. + Also removed some line separator cruft. Configuration Management Removed the need for the Translate class to be packaged with htmllexer.jar. *************** *** 48,53 **** --- 51,59 ---- Added a real StringSource that reads directly from a String rather than creating a byte array. This avoids character encoding losses. + Incorporate patch #1004985 Page.java, by making getCharset() and findCharset() static. + Incorporated some speed optimizations based on profiling. Filters Added CssSelectorNodeFilter and RegExFilter. + Added the filter builder tool. Enhancement Requests *************** *** 56,62 **** --- 62,73 ---- 943197 Accept gzip / deflate content encodings 874000 Remove specialized tag signatures from NodeVisitor + 1000063 FilterBean + 1017249 HTML Client Doesn't Support Cookies but will follow redirect + 1010586 Add support for password protected URL + 1000739 Add support for proxy scenario Bug Fixes --------- + 1005409 Input file not free by parser. 998195 SiteCatpurer just crashed 995703 Parser Crash Index: changes.txt =================================================================== RCS file: /cvsroot/htmlparser/htmlparser/docs/changes.txt,v retrieving revision 1.202 retrieving revision 1.203 diff -C2 -d -r1.202 -r1.203 *** changes.txt 29 Jul 2004 02:01:02 -0000 1.202 --- changes.txt 13 Feb 2005 22:45:46 -0000 1.203 *************** *** 16,19 **** --- 16,235 ---- ******************************************************************************* + Integration Build 1.5 - 20050213 + -------------------------------- + 2005-02-13 15:49 derrickoswald + + * src/org/htmlparser/parserapplications/filterbuilder/: + images/.xvpics/copy.gif, images/.xvpics/cut.gif, + images/.xvpics/delete.gif, wrappers/images/.xvpics/AndFilter.gif, + wrappers/images/.xvpics/HasAttributeFilter.gif, + wrappers/images/.xvpics/HasChildFilter.gif, + wrappers/images/.xvpics/HasParentFilter.gif, + wrappers/images/.xvpics/HasSiblingFilter.gif, + wrappers/images/.xvpics/NodeClassFilter.gif, + wrappers/images/.xvpics/NotFilter.gif, + wrappers/images/.xvpics/OrFilter.gif, + wrappers/images/.xvpics/RegexFilter.gif, + wrappers/images/.xvpics/StringFilter.gif, + wrappers/images/.xvpics/StringFilter2.gif, + wrappers/images/.xvpics/TagNameFilter.gif: + + FilterBuilder remove mistakenly dropped files. + + 2005-02-13 15:43 derrickoswald + + * src/org/htmlparser/parserapplications/filterbuilder/: + Filter.java, FilterBuilder.java, HtmlTreeCellRenderer.java, + HtmlTreeModel.java, SubFilterList.java, images/about.gif, + images/copy.gif, images/cut.gif, images/delete.gif, images/new.gif, + images/open.gif, images/paste.gif, images/save.gif, + wrappers/AndFilterWrapper.java, + wrappers/HasAttributeFilterWrapper.java, + wrappers/HasChildFilterWrapper.java, + wrappers/HasParentFilterWrapper.java, + wrappers/HasSiblingFilterWrapper.java, + wrappers/NodeClassFilterWrapper.java, + wrappers/NotFilterWrapper.java, wrappers/OrFilterWrapper.java, + wrappers/RegexFilterWrapper.java, + wrappers/StringFilterWrapper.java, + wrappers/TagNameFilterWrapper.java, wrappers/images/AndFilter.gif, + wrappers/images/HasAttributeFilter.gif, + wrappers/images/HasChildFilter.gif, + wrappers/images/HasParentFilter.gif, + wrappers/images/HasSiblingFilter.gif, + wrappers/images/NodeClassFilter.gif, wrappers/images/OrFilter.gif, + wrappers/images/RegexFilter.gif, wrappers/images/TagNameFilter.gif, + wrappers/images/.xvpics/AndFilter.gif, + wrappers/images/.xvpics/HasAttributeFilter.gif, + wrappers/images/.xvpics/HasChildFilter.gif, + wrappers/images/.xvpics/HasParentFilter.gif, + wrappers/images/.xvpics/HasSiblingFilter.gif, + wrappers/images/.xvpics/NodeClassFilter.gif, + wrappers/images/.xvpics/NotFilter.gif, + wrappers/images/.xvpics/OrFilter.gif, + wrappers/images/.xvpics/RegexFilter.gif, + wrappers/images/.xvpics/StringFilter.gif, + wrappers/images/.xvpics/StringFilter2.gif, + wrappers/images/.xvpics/TagNameFilter.gif, + wrappers/images/NotFilter.gif, wrappers/images/StringFilter.gif, + images/.xvpics/delete.gif, images/.xvpics/copy.gif, + images/.xvpics/cut.gif, layouts/NullLayoutManager.java, + layouts/VerticalLayoutManager.java: + + FilterBuilder + + 2005-02-13 15:36 derrickoswald + + * src/org/htmlparser/filters/AndFilter.java, + src/org/htmlparser/filters/HasAttributeFilter.java, + src/org/htmlparser/filters/HasChildFilter.java, + src/org/htmlparser/filters/HasParentFilter.java, + src/org/htmlparser/filters/HasSiblingFilter.java, + src/org/htmlparser/filters/NodeClassFilter.java, + src/org/htmlparser/filters/NotFilter.java, + src/org/htmlparser/filters/OrFilter.java, + src/org/htmlparser/filters/RegexFilter.java, + src/org/htmlparser/filters/StringFilter.java, + src/org/htmlparser/filters/TagNameFilter.java, + src/org/htmlparser/lexerapplications/thumbelina/Thumbelina.java, + src/org/htmlparser/tags/TableRow.java, + src/org/htmlparser/tags/TableTag.java, + src/org/htmlparser/NodeFilter.java, src/org/htmlparser/Parser.java, + bin/filterbuilder, bin/filterbuilder.bat, bin/thumbelina, + bin/thumbelina.bat, src/org/htmlparser/tests/ParserTest.java, + src/org/htmlparser/tests/visitorsTests/HtmlPageTest.java, + build.xml, src/org/htmlparser/beans/BeanyBaby.java, + src/org/htmlparser/beans/FilterBean.java, + src/org/htmlparser/util/NodeList.java: + + FilterBuilder + + Implemented: + RFE #1000063 FilterBean + Task #93153 filter builder tool + + 2005-01-09 19:43 derrickoswald + + * docs/samples.html: + + Fix link to StringExtractor. + + 2004-09-24 19:16 derrickoswald + + * docs/contributors.html: + + Update Alberto's contributor info. + + 2004-09-06 13:19 derrickoswald + + * build.xml: + + Provide for building with JDK 1.5 by adding source="1.3" to javac tasks. + + 2004-09-06 13:12 derrickoswald + + * src/org/htmlparser/: tags/MetaTag.java, lexer/Page.java, + tests/ParserTest.java: + + Incorporate patch #1004985 Page.java, by making getCharset() and findCharset() static. + + 2004-09-01 22:28 derrickoswald + + * src/org/htmlparser/tests/scannersTests/JspScannerTest.java, + src/org/htmlparser/tests/scannersTests/ScriptScannerTest.java, + src/org/htmlparser/Parser.java, + src/org/htmlparser/lexer/Lexer.java, + src/org/htmlparser/lexer/Page.java, + src/org/htmlparser/lexerapplications/thumbelina/ThumbelinaFrame.java, + src/org/htmlparser/tests/tagTests/ImageTagTest.java, + src/org/htmlparser/tests/tagTests/JspTagTest.java, + src/org/htmlparser/tests/tagTests/LinkTagTest.java, + src/org/htmlparser/tests/tagTests/ScriptTagTest.java, + src/org/htmlparser/tests/tagTests/TagTest.java, + src/org/htmlparser/http/ConnectionManager.java, + src/org/htmlparser/http/ConnectionMonitor.java, + src/org/htmlparser/http/Cookie.java, + src/org/htmlparser/http/package.html, + src/org/htmlparser/tests/parserHelperTests/StringParserTest.java, + build.xml, + src/org/htmlparser/tests/parserHelperTests/RemarkNodeParserTest.java: + + Implemented: + RFE #1017249 HTML Client Doesn't Support Cookies but will follow redirect + RFE #1010586 Add support for password protected URL + and RFE #1000739 Add support for proxy scenario + A new http package is added, the primary class being Connectionmanager which + handles proxies, passwords and cookies. Some testing still needed. + Also removed some line separator cruft. + + 2004-08-27 05:56 anul + + * src/org/htmlparser/tests/utilTests/HTMLParserUtilsTest.java: + + + New tests added for: + bug fixing and trimAllTags method test. + + 2004-08-27 05:54 anul + + * src/org/htmlparser/util/ParserUtils.java: + + + Bug fixing and trimAllTags method added. + + 2004-08-24 23:36 derrickoswald + + * src/org/htmlparser/: lexer/Page.java, tests/ParserTest.java: + + Fix bug #1005409 Input file not free by parser. + Files larger than 16K on Windows can now be explicitly closed with Page.close(), + or will be closed when the page is finalized. + + 2004-07-31 22:16 derrickoswald + + * src/org/htmlparser/lexer/: Lexer.java, Page.java, PageIndex.java: + + Speed optimizations based on profiling. + + 2004-07-31 12:42 derrickoswald + + * src/org/htmlparser/: lexerapplications/thumbelina/Sequencer.java, + lexerapplications/thumbelina/Thumbelina.java, + lexerapplications/thumbelina/ThumbelinaFrame.java, + lexerapplications/thumbelina/TileSet.java, lexer/Cursor.java, + lexer/Lexer.java, lexer/Page.java, tests/lexerTests/KitTest.java, + tests/lexerTests/PageTests.java, tests/lexerTests/SourceTests.java, + tests/lexerTests/TagTests.java, tests/tagTests/FormTagTest.java, + tests/tagTests/ImageTagTest.java, tests/tagTests/LinkTagTest.java, + tests/tagTests/ObjectCollectionTest.java, + tests/tagTests/ScriptTagTest.java, + tests/tagTests/TableTagTest.java, tests/tagTests/TagTest.java, + scanners/CompositeTagScanner.java, scanners/ScriptScanner.java, + scanners/StyleScanner.java, + tests/scannersTests/CompositeTagScannerTest.java, + tests/utilTests/BeanTest.java, + tests/utilTests/CharacterTranslationTest.java, + tests/utilTests/SortTest.java, tests/FunctionalTests.java, + tests/InstanceofPerformanceTest.java, tests/ParserTest.java, + tests/ParserTestCase.java, tests/PerformanceTest.java, + tests/visitorsTests/ScriptCommentTest.java, + tests/visitorsTests/UrlModifyingVisitorTest.java, + util/CommandLine.java, util/IteratorImpl.java, util/NodeList.java, + util/Translate.java, filters/HasParentFilter.java, + lexerapplications/tabby/Tabby.java, tags/CompositeTag.java, + tags/LinkTag.java, tags/TableColumn.java, tags/TableHeader.java, + util/CharacterReference.java, util/LinkProcessor.java, + util/ParserUtils.java, Attribute.java, + PrototypicalNodeFactory.java, nodes/TagNode.java, + visitors/UrlModifyingVisitor.java: + + Remove unused variables and other fixes exposed by turning on compiler warnings. + + 2004-07-30 21:22 derrickoswald + + * src/org/htmlparser/tests/MemoryTest.java: + + Changed test case MemoryTest.testBigFile () to check for characters recieved, not bytes. + Integration Build 1.5 - 20040728 -------------------------------- |
From: Derrick O. <der...@us...> - 2005-02-13 20:49:59
|
Update of /cvsroot/htmlparser/htmlparser/src/org/htmlparser/parserapplications/filterbuilder/wrappers/images/.xvpics In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv15540/wrappers/images/.xvpics Removed Files: AndFilter.gif HasAttributeFilter.gif HasChildFilter.gif HasParentFilter.gif HasSiblingFilter.gif NodeClassFilter.gif NotFilter.gif OrFilter.gif RegexFilter.gif StringFilter.gif StringFilter2.gif TagNameFilter.gif Log Message: FilterBuilder remove mistakenly dropped files. --- NotFilter.gif DELETED --- --- RegexFilter.gif DELETED --- --- StringFilter.gif DELETED --- --- HasAttributeFilter.gif DELETED --- --- StringFilter2.gif DELETED --- --- HasSiblingFilter.gif DELETED --- --- OrFilter.gif DELETED --- --- HasChildFilter.gif DELETED --- --- AndFilter.gif DELETED --- --- NodeClassFilter.gif DELETED --- --- HasParentFilter.gif DELETED --- --- TagNameFilter.gif DELETED --- |
From: Derrick O. <der...@us...> - 2005-02-13 20:49:59
|
Update of /cvsroot/htmlparser/htmlparser/src/org/htmlparser/parserapplications/filterbuilder/images/.xvpics In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv15540/images/.xvpics Removed Files: copy.gif cut.gif delete.gif Log Message: FilterBuilder remove mistakenly dropped files. --- cut.gif DELETED --- --- copy.gif DELETED --- --- delete.gif DELETED --- |