summary refs log tree commit diff stats
path: root/lib
diff options
context:
space:
mode:
authorenthus1ast <enthus1ast>2017-01-20 00:45:44 +0100
committerenthus1ast <enthus1ast>2017-01-20 00:45:44 +0100
commit9626919cd3ea3bc6c0a0d1e13eda366503b3be7e (patch)
tree74210520f156937bd7aaf36ea72f77fd5d4fb5b3 /lib
parente8a00b805f841a68911026f4461c1cb5c936711b (diff)
downloadNim-9626919cd3ea3bc6c0a0d1e13eda366503b3be7e.tar.gz
added isAbsolute to uri.nim
Diffstat (limited to 'lib')
-rw-r--r--lib/pure/uri.nim15
1 files changed, 15 insertions, 0 deletions
diff --git a/lib/pure/uri.nim b/lib/pure/uri.nim
index e7db39c10..88420530c 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,14 @@ 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 "/search".parseUri().isAbsolute() == false
+    doAssert "file:/dir/file".parseUri().isAbsolute() == true
+    doAssert "file://localhost/dir/file".parseUri().isAbsolute() == true
+    doAssert "https://example.org/URI/resource.txt".parseUri().isAbsolute() == true
+    doAssert "urn:ISSN:1535–3613".parseUri().isAbsolute() == true
+  
\ No newline at end of file