1Url: module 2{ 3 PATH : con "/dis/charon/url.dis"; 4 5 # "Common Internet Scheme" url syntax (rfc 1808) 6 # 7 # <scheme>://<user>:<passwd>@<host>:<port>/<path>;<params>?<query>#<fragment> 8 # 9 # relative urls might omit some prefix of the above 10 # the path of absolute urls include the leading '/' 11 Parsedurl: adt 12 { 13 scheme: string; 14 user: string; 15 passwd: string; 16 host: string; 17 port: string; 18 path: string; 19 params: string; 20 query: string; 21 frag: string; 22 23 tostring: fn(u: self ref Parsedurl): string; 24 }; 25 26 init: fn(): string; # call before anything else 27 parse: fn(url: string): ref Parsedurl; 28 mkabs: fn(u, base: ref Parsedurl): ref Parsedurl; 29}; 30 31