diff --git a/collects/net/scribblings/url.scrbl b/collects/net/scribblings/url.scrbl index 2d04a7dc43..4c7297efbf 100644 --- a/collects/net/scribblings/url.scrbl +++ b/collects/net/scribblings/url.scrbl @@ -1,6 +1,5 @@ #lang scribble/doc @(require "common.rkt" scribble/bnf - (only-in net/url url-regexp) (for-label net/url net/url-unit net/url-sig net/head net/uri-codec net/tcp-sig (only-in net/url-connect current-https-protocol) @@ -96,7 +95,9 @@ An HTTP connection is created as a @deftech{pure port} or a have been removed, so that what remains is purely the first content fragment. An impure port is one that still has its MIME headers. -@defproc[(string->url [str (and/c (or/c string? bytes?) url-regexp)]) url?]{ +@defproc[(string->url [str (or/c (not/c #rx"^([^:/?#]*):") + #rx"^[a-zA-Z][a-zA-Z0-9+.-]*:")]) + url?]{ Parses the URL specified by @racket[str] into a @racket[url] struct. The @racket[string->url] procedure uses @@ -104,6 +105,10 @@ struct. The @racket[string->url] procedure uses sensitive to the @racket[current-alist-separator-mode] parameter for determining the association separator. +The contract on @racket[str] insists that, if the url has a scheme, +then the scheme begins with a letter and consists only of letters, +numbers, @litchar{+}, @litchar{-}, and @litchar{.} characters. + If @racket[str] starts with @racket["file:"], then the path is always parsed as an absolute path, and the parsing details depend on @racket[file-url-path-convention-type]: @@ -123,17 +128,6 @@ parsed as an absolute path, and the parsing details depend on ]} -@defthing[url-regexp regexp?]{ - -This is a regular expression based on the one in -Appendix B of RFC 3986 for recognizing urls. - -This is the precise regexp: - -@centered{@tt{@(object-name url-regexp)}} - -} - @defproc[(combine-url/relative [base url?] [relative string?]) url?]{ Given a base URL and a relative path, combines the two and returns a