xref: /inferno-os/module/uris.m (revision 0e96539ff7cff23233d3f0a64bb285b385a3a1f4)
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