adapt documentation to reflect removal of old uri-parser and addition
of new one
This commit is contained in:
		
							parent
							
								
									a1e79c4fc7
								
							
						
					
					
						commit
						8de8e01f0d
					
				| 
						 | 
				
			
			@ -1,6 +1,8 @@
 | 
			
		|||
\chapter{Parsing and Processing URIs}\label{cha:uri}
 | 
			
		||||
 | 
			
		||||
The \ex{uri} structure contains a library for dealing with URIs.
 | 
			
		||||
and is out-of-date by now---it is build up on RFC 1360 of 1994 which
 | 
			
		||||
was replaced by RFC 1738, RFC 1808, and finally RFC 2396 of 1998.
 | 
			
		||||
 | 
			
		||||
\section{Notes on URI Syntax}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -24,43 +26,6 @@ be used in a URI.
 | 
			
		|||
 | 
			
		||||
\section{Procedures}
 | 
			
		||||
 | 
			
		||||
\defun{parse-uri} {uri-string } {scheme path search
 | 
			
		||||
    frag-id} \label{proc:parse-uri}
 | 
			
		||||
\begin{desc}
 | 
			
		||||
  Parses an \var{uri\=string} into its four fields.
 | 
			
		||||
  The fields are \emph{not} unescaped, as the rules for
 | 
			
		||||
  parsing the \var{path} component in particular need unescaped
 | 
			
		||||
  text, and are dependent on \var{scheme}. The URL parser is
 | 
			
		||||
  responsible for doing this.  If the \var{scheme}, \var{search}
 | 
			
		||||
  or \var{fragid} portions are not specified, they are \sharpf.
 | 
			
		||||
  Otherwise, \var{scheme}, \var{search}, and \var{fragid} are
 | 
			
		||||
  strings. \var{path} is a non-empty string list---the path split
 | 
			
		||||
  at slashes.
 | 
			
		||||
\end{desc}
 | 
			
		||||
 | 
			
		||||
Here is a description of the parsing technique. It is inwards from
 | 
			
		||||
both ends:
 | 
			
		||||
\begin{itemize}
 | 
			
		||||
\item First, the code searches forwards for the first reserved
 | 
			
		||||
  character (\verb|=|, \verb|;|, \verb|/|, \verb|#|, \verb|?|,
 | 
			
		||||
  \verb|:| or \verb|space|).  If it's a colon, then that's the
 | 
			
		||||
  \var{scheme} part, otherwise there is no \var{scheme} part. At
 | 
			
		||||
  all events, it is removed.
 | 
			
		||||
\item Then the code searches backwards from the end for the last reserved
 | 
			
		||||
  char.  If it's a sharp, then that's the \var{fragid} part---remove it.
 | 
			
		||||
\item Then the code searches backwards from the end for the last reserved
 | 
			
		||||
  char.  If it's a question-mark, then that's the \var{search}
 | 
			
		||||
  part----remove it.
 | 
			
		||||
\item What's left is the path.  The code split it at slashes. The
 | 
			
		||||
  empty string becomes a list containing the empty string.
 | 
			
		||||
\end{itemize}
 | 
			
		||||
%  
 | 
			
		||||
This scheme is tolerant of the various ways people build broken
 | 
			
		||||
URI's out there on the Net\footnote{So it does not absolutely conform
 | 
			
		||||
  to RFC~1630.}, e.g.\ \verb|=| is a reserved character, but used
 | 
			
		||||
unescaped in the search-part. It was given to me\footnote{That's
 | 
			
		||||
  Olin Shivers.} by Dan Connolly of the W3C and slightly modified.
 | 
			
		||||
 | 
			
		||||
\defun{unescape-uri}{string [start] [end]}{string}
 | 
			
		||||
\begin{desc}
 | 
			
		||||
  \ex{Unescape-uri} unescapes a string. If \var{start} and/or \var{end} are
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -56,6 +56,21 @@ For details about escaping and unescaping see Chapter~\ref{cha:uri}.
 | 
			
		|||
 | 
			
		||||
\section{HTTP URLs}
 | 
			
		||||
 | 
			
		||||
\defun{parse-uri} {uri-string } {host port path query} \label{proc:parse-uri}
 | 
			
		||||
\begin{desc}
 | 
			
		||||
  Parses an HTTP 1.1 \var{uri\=string} into its four fields.
 | 
			
		||||
  The fields returned are \emph{not} decoded. 
 | 
			
		||||
  If \var{uri\=string} is not an http URL but an abs\_path 
 | 
			
		||||
  the \var{host}, \var{port}
 | 
			
		||||
  and \var{query} portions are not specified, they are \sharpf.
 | 
			
		||||
  Otherwise, \var{host}, \var{port}, and \var{query} are
 | 
			
		||||
  strings. \var{path} is a non-empty string list---the path split
 | 
			
		||||
  at slashes.
 | 
			
		||||
\end{desc}
 | 
			
		||||
This parser does not absolutely conform to RFC 2616 in allowing 
 | 
			
		||||
a fragment-suffix. Furthermore only http URLs, not absolute URIs in general are
 | 
			
		||||
recognized.
 | 
			
		||||
 | 
			
		||||
\defun{make-http-url}{server path search frag-id}{http-url}
 | 
			
		||||
\defunx{http-url?}{thing}{boolean}
 | 
			
		||||
\defunx{http-url-server}{http-url}{server}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue