The first functions are mainly from and to string conversion functions for the different parts of a url.

`val urldecode : string -> string`

`urldecode s` swaps percent encoding characters for their usual representation.

`val urlencode : ?with_plus:bool -> string -> string`

`urlencode ?with_plus s` replace characters for their percent encoding representation. Note that the '/' (slash) character is escaped as well. If `with_plus` is `true` (default) then `'+'`'s are escaped as `"%2B"`. If not, `'+'`'s are left as is.

`type http_url = {`

1. `hu_host : string;`
   (*

   The host part of the url.

   *)
2. `hu_port : int;`
   (*

   The port for the connection if any.

   *)
3. `hu_path : string list;`
   (*

   The path split on `'/'` characters.

   *)
4. `hu_path_string : string;`
   (*

   The original entire path.

   *)
5. `hu_arguments : (string * string) list;`
   (*

   Arguments as a field-value association list.

   *)
6. `hu_fragment : string;`
   (*

   The fragment part (after the `'#'` character).

   *)

`}`

The type for HTTP(s) url.

`type file_url = {`

1. `fu_path : string list;`
2. `fu_path_string : string;`
3. `fu_arguments : (string * string) list;`
4. `fu_fragment : string;`

`}`

The type for local file urls.

`type url =`

1. `| Http of http_url`
   (*

   Non secure HTTP urls

   *)
2. `| Https of http_url`
   (*

   Secure HTTPS urls

   *)
3. `| File of file_url`
   (*

   Local files

   *)

The type for urls.

`val default_http_port : int`

The default port for `Http` communications (80).

`val default_https_port : int`

The default port for `Https` communications (443).

`val path_of_path_string : string -> string list`

`path_of_path_string s` splits `s` on each `"/"` character.

`val encode_arguments : (string * string) list -> string`

`encode_arguments a` expects a list of pair of values of the form `(name,value)` were `name` is the name of an argument and `value` it's associated value.

`val decode_arguments : string -> (string * string) list`

`decode_arguments s` parses `s` returning the sliced-diced association list. `s` should be only the arguments part (after the '?') not the whole url.

The following part allow one to handle Url object in a much higher level than what a string provides.

`val url_of_string : string -> url option`

`url_of_string s` parses `s` and builds a value of type `url` if `s` is not a valid url string, it returns `None`.

`val string_of_url : url -> string`

`string_of_url u` returns a valid string representation of `u`. Note that * `string_of_url ((fun Some u -> u) (url_of_string s))` is NOT necessarily * equal to `s`. However `url_of_string (string_of_url u) = u`.

`module Current : sig ... end`

This module can be used to handle the Url associated to the current document.