parseURI and others...

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