![]() |
|
||||
![]() ![]() ![]() ![]() ![]() ![]() ![]() |
|||||
|
|
||||||
| Other Library Functions | ||||||
| function |
uri.extend |
|
Library: URI handling (OMURI)
Import: omuri.xmd |
Return type: String Returns: the resolved relative-uri |
export string function
extend value string base-uri
with value string relative-uri
Argument definitions
The function uri.extend resolves relative URI references. If base-uri is an absolute URI and
relative-uri is a relative one, the result will be an absolute URI reference. If they are both
relative, the result of uri.extend will be a relative URI.
There are two exceptional cases. If relative-uri is an absolute URI itself, uri.extend
throws uri.already-absolute to indicate that. Alternatively, if relative-uri consists only of
a URI fragment (e.g. "#section1"), uri.extend throws uri.current-document-reference.
Neither exception has any parameters.
In the following example, the function fetch-fresh-page uses uri.extend to resolve HTTP
redirections and access the content of an HTML page even if it has been moved to a new location.
import "omuri.xmd" prefixed by uri.
import "omvfs.xmd" prefixed by vfs.
define string source function
fetch-fresh-page value string url
as
local vfs.file html-page initial { vfs.open-http url }
do scan vfs.reader of html-page
match ul '<html>' white-space*
'<meta' white-space+ 'http-equiv="refresh"' white-space+
'content="0; url=' any ** => new-url '"' white-space* '>'
output fetch-fresh-page uri.extend url with new-url
; uri.current-document-reference cannot be handled here
catch uri.already-absolute
output fetch-fresh-page new-url
else
output #current-input
done
Other Library Functions
|
Copyright © Stilo International plc, 1988-2010.