Sourcestd/uri.d
URIException:object.Exception;import std.exception : assertThrown;assertThrown!URIException("%ab".decode);
decode(Char)(scope const(Char)[]encodedURI)writeln("foo%20bar".decode);// "foo bar"writeln("%3C%3E.@.%E2%84%A2".decode);// "<>.@.™"writeln("foo&/".decode);// "foo&/"writeln("!@#$&*(".decode);// "!@#$&*("
decodeComponent(Char)(scope const(Char)[]encodedURIComponent)writeln("foo%2F%26".decodeComponent);// "foo/&"writeln("dl%C3%A4ng%20r%C3%B6cks".decodeComponent);// "dläng röcks"writeln("!%40%23%24%25%5E%26*(".decodeComponent);// "!@#$%^&*("
encode(Char)(scope const(Char)[]uri)writeln("foo bar".encode);// "foo%20bar"writeln("<>.@.™".encode);// "%3C%3E.@.%E2%84%A2"writeln("foo/#?a=1&b=2".encode);// "foo/#?a=1&b=2"writeln("dlang+rocks!".encode);// "dlang+rocks!"writeln("!@#$%^&*(".encode);// "!@#$%25%5E&*("
encodeComponent(Char)(scope const(Char)[]uriComponent)writeln("!@#$%^&*(".encodeComponent);// "!%40%23%24%25%5E%26*("writeln("<>.@.™".encodeComponent);// "%3C%3E.%40.%E2%84%A2"writeln("foo/&".encodeComponent);// "foo%2F%26"writeln("dläng röcks".encodeComponent);// "dl%C3%A4ng%20r%C3%B6cks"writeln("dlang+rocks!".encodeComponent);// "dlang%2Brocks!"
uriLength(Char)(scope const(Char)[]s)string s1 ="http://www.digitalmars.com/~fred/fredsRX.html#foo end!";writeln(uriLength(s1));// 49string s2 ="no uri here";writeln(uriLength(s2));// -1assert(uriLength("issue 14924") < 0);
emailLength(Char)(scope const(Char)[]s)ReferencesRFC2822
string s1 ="my.e-mail@www.example-domain.com with garbage added";writeln(emailLength(s1));// 32string s2 ="no email address here";writeln(emailLength(s2));// -1assert(emailLength("issue 14924") < 0);