- From: Viktor <viktor@irisz.hu>
- Date: Fri, 6 Sep 1996 01:54:28 +0200
- To: "'www-jigsaw@w3.org'" <www-jigsaw@w3.org>
Instead of fixing the bug, I wrote an new one,
which uses a regexp-package of... hmmmmm...
Jonathan Payne, from Starwave Co.
I lost the original url, and he didn't
wrote it in his docs. I will lookup in a search enginee..
So it's: http://www.starwave.com/people/jpayne/java/
Maybe it doesn't fits for your needs, sure it's slower
than parsing it 'manualy'.
Actualy the header-extract of HTMLResource is uses
this too (match /<title>\s*(.*)\s*</title>/), but it's terrible
slow in case of files *not* having title, even when
I limited to the first 1K of the file...
So now I'm looking for other solution, getting
information and make experiments with some mistic
tools, like jax/jell/cup (flex/lalr) etc... (thay are mistic for me
at least, I try to discover which is for what...).
Since I'm using perl I really hate to write this kind of
things with a lot of while/if/break/else/continue...
So here the source is...
(I hope my mailer won't reformat it so terrible ;)
(I would prefer write <pre> here!)
---- in LookupState.java
import starwave.util.regexp.*;
---- .... ----
static Regexp compReg, fragReg, queryReg;
static {
try {
queryReg = Regexp.compile("\\?(.*)$");
fragReg = Regexp.compile("#(.*)$");
compReg = Regexp.compile("/?([^/]*)/?");
// compReg = Regexp.compile("/?(.*)/?");
} catch (Exception ex) {
ex.printStackTrace();
System.exit(1); // TODO: find beter method here
}
protected void parseURI ()
throws HTTPException {
Vector comps = new Vector(8);
StringBuffer buffer = new StringBuffer(uri);
Result result;
int pos=0;
if ((result = fragReg.searchForward(buffer.toString(), pos)) != null) {
request.defineField("frag", result.getMatch(1));
buffer.setLength(result.getMatchStart());
}
if ((result = queryReg.searchForward(buffer.toString(), pos)) != null) {
request.defineField("query", result.getMatch(1));
buffer.setLength(result.getMatchStart());
}
is_directory = (buffer.charAt(buffer.length()-1) == '/');
while ((result = compReg.searchForward(buffer.toString(), pos)) != null) {
if (result.getMatch(1).length() != 0)
comps.addElement (unescape(result.getMatch(1)));
pos = result.getMatchEnd();
}
components = new String[comps.size()] ;
comps.copyInto (components) ;
index = 0 ;
}
Received on Thursday, 5 September 1996 20:06:23 UTC