diff options
author | Dominik Picheta <dominikpicheta@googlemail.com> | 2017-01-21 11:44:52 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-01-21 11:44:52 +0100 |
commit | e634ee858cf09e87e1fb5cbe09fcd79e59700049 (patch) | |
tree | cf21b9a9ea34f5402384ec777f5e80da198c8ff3 /lib | |
parent | ebcc88238e26078a1ac2c7199773a0962b5b0c88 (diff) | |
parent | f2ce8eb3723656237702638f5f81f95b9f44e06d (diff) | |
download | Nim-e634ee858cf09e87e1fb5cbe09fcd79e59700049.tar.gz |
Merge pull request #5255 from enthus1ast/devel
added isAbsolute to uri.nim
Diffstat (limited to 'lib')
-rw-r--r-- | lib/pure/uri.nim | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/lib/pure/uri.nim b/lib/pure/uri.nim index e7db39c10..ba745cfd3 100644 --- a/lib/pure/uri.nim +++ b/lib/pure/uri.nim @@ -245,6 +245,10 @@ proc combine*(uris: varargs[Uri]): Uri = for i in 1 .. <uris.len: result = combine(result, uris[i]) +proc isAbsolute*(uri: Uri): bool = + ## returns true if URI is absolute, false otherwise + return uri.scheme != "" and (uri.hostname != "" or uri.path != "") + proc `/`*(x: Uri, path: string): Uri = ## Concatenates the path specified to the specified URI's path. ## @@ -452,3 +456,44 @@ when isMainModule: block: let foo = parseUri("http://example.com") / "/baz" doAssert foo.path == "/baz" + + # isAbsolute tests + block: + doAssert "www.google.com".parseUri().isAbsolute() == false + doAssert "http://www.google.com".parseUri().isAbsolute() == true + doAssert "file:/dir/file".parseUri().isAbsolute() == true + doAssert "file://localhost/dir/file".parseUri().isAbsolute() == true + doAssert "urn:ISSN:1535-3613".parseUri().isAbsolute() == true + + # path-relative URL *relative + doAssert "about".parseUri().isAbsolute == false + doAssert "about/staff.html".parseUri().isAbsolute == false + doAssert "about/staff.html?".parseUri().isAbsolute == false + doAssert "about/staff.html?parameters".parseUri().isAbsolute == false + + # absolute-path-relative URL *relative + doAssert "/".parseUri().isAbsolute == false + doAssert "/about".parseUri().isAbsolute == false + doAssert "/about/staff.html".parseUri().isAbsolute == false + doAssert "/about/staff.html?".parseUri().isAbsolute == false + doAssert "/about/staff.html?parameters".parseUri().isAbsolute == false + + # scheme-relative URL *relative + doAssert "//username:password@example.com:8888".parseUri().isAbsolute == false + doAssert "//username@example.com".parseUri().isAbsolute == false + doAssert "//example.com".parseUri().isAbsolute == false + doAssert "//example.com/".parseUri().isAbsolute == false + doAssert "//example.com/about".parseUri().isAbsolute == false + doAssert "//example.com/about/staff.html".parseUri().isAbsolute == false + doAssert "//example.com/about/staff.html?".parseUri().isAbsolute == false + doAssert "//example.com/about/staff.html?parameters".parseUri().isAbsolute == false + + # absolute URL *absolute + doAssert "https://username:password@example.com:8888".parseUri().isAbsolute == true + doAssert "https://username@example.com".parseUri().isAbsolute == true + doAssert "https://example.com".parseUri().isAbsolute == true + doAssert "https://example.com/".parseUri().isAbsolute == true + doAssert "https://example.com/about".parseUri().isAbsolute == true + doAssert "https://example.com/about/staff.html".parseUri().isAbsolute == true + doAssert "https://example.com/about/staff.html?".parseUri().isAbsolute == true + doAssert "https://example.com/about/staff.html?parameters".parseUri().isAbsolute == true \ No newline at end of file |