using Printf, URIParser const FIELDS = names(URI) function detailview(uri::URI, indentlen::Int=4) indent = " "^indentlen s = String[] for f in FIELDS d = string(getfield(uri, f)) !isempty(d) || continue f != :port || d != "0" || continue push!(s, @sprintf("%s%s: %s", indent, string(f), d)) end join(s, "\n") end test = ["foo://example.com:8042/over/there?name=ferret#nose", "urn:example:animal:ferret:nose", "jdbc:mysql://test_user:ouupppssss@localhost:3306/sakila?profileSQL=true", "ftp://ftp.is.co.za/rfc/rfc1808.txt", "http://www.ietf.org/rfc/rfc2396.txt#header1", "ldap://[2001:db8::7]/c=GB?objectClass=one&objectClass=two", "mailto:John.Doe@example.com", "news:comp.infosystems.www.servers.unix", "tel:+1-816-555-1212", "telnet://192.0.2.16:80/", "urn:oasis:names:specification:docbook:dtd:xml:4.1.2", "This is not a URI!", "ssh://alice@example.com", "https://bob:pass@example.com/place", "http://example.com/?a=1&b=2+2&c=3&c=4&d=%65%6e%63%6F%64%65%64"] isfirst = true for st in test if isfirst isfirst = false else println() end println("Attempting to parse\n \"", st, "\" as a URI:") uri = try URI(st) catch println("URIParser failed to parse this URI, is it OK?") continue end print("This URI is parsable ") if isvalid(uri) println("and appears to be valid.") else println("but may be invalid.") end println(detailview(uri)) end