1*0e96539fSCharles.ForsythURIs: module 2*0e96539fSCharles.Forsyth{ 3*0e96539fSCharles.Forsyth PATH: con "/dis/lib/w3c/uris.dis"; 4*0e96539fSCharles.Forsyth 5*0e96539fSCharles.Forsyth # URI Generic Syntax (RFC 3986) 6*0e96539fSCharles.Forsyth # 7*0e96539fSCharles.Forsyth # scheme://authority/path?query#fragment 8*0e96539fSCharles.Forsyth # 9*0e96539fSCharles.Forsyth URI: adt 10*0e96539fSCharles.Forsyth { 11*0e96539fSCharles.Forsyth scheme: string; 12*0e96539fSCharles.Forsyth userinfo: string; # authority, part I 13*0e96539fSCharles.Forsyth host: string; # authority, part II 14*0e96539fSCharles.Forsyth port: string; # authority, part III 15*0e96539fSCharles.Forsyth path: string; # starts with / if path-abempty or path-absolute 16*0e96539fSCharles.Forsyth query: string; # includes ? if not nil 17*0e96539fSCharles.Forsyth fragment: string; # includes # if not nil 18*0e96539fSCharles.Forsyth 19*0e96539fSCharles.Forsyth parse: fn(s: string): ref URI; 20*0e96539fSCharles.Forsyth text: fn(u: self ref URI): string; 21*0e96539fSCharles.Forsyth authority: fn(u: self ref URI): string; 22*0e96539fSCharles.Forsyth addbase: fn(u: self ref URI, base: ref URI): ref URI; 23*0e96539fSCharles.Forsyth copy: fn(u: self ref URI): ref URI; 24*0e96539fSCharles.Forsyth hasauthority: fn(u: self ref URI): int; 25*0e96539fSCharles.Forsyth isabsolute: fn(u: self ref URI): int; 26*0e96539fSCharles.Forsyth nodots: fn(u: self ref URI): ref URI; 27*0e96539fSCharles.Forsyth pathonly: fn(u: self ref URI): ref URI; 28*0e96539fSCharles.Forsyth userpw: fn(u: self ref URI): (string, string); # ``deprecated format'' 29*0e96539fSCharles.Forsyth eq: fn(u: self ref URI, v: ref URI): int; 30*0e96539fSCharles.Forsyth eqf: fn(u: self ref URI, v: ref URI): int; 31*0e96539fSCharles.Forsyth }; 32*0e96539fSCharles.Forsyth 33*0e96539fSCharles.Forsyth init: fn(); 34*0e96539fSCharles.Forsyth dec: fn(s: string): string; 35*0e96539fSCharles.Forsyth enc: fn(s: string, safe: string): string; 36*0e96539fSCharles.Forsyth}; 37