summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorSimon Hafner <hafnersimon@gmail.com>2014-03-31 15:58:52 -0500
committerSimon Hafner <hafnersimon@gmail.com>2014-03-31 15:58:52 -0500
commit71b69a627f0558bd2286df54caeab267d2ddeb5f (patch)
tree2d54a25fe82094b70b4929046a69e2db7d14f7f1
parentffb36db5a6caa147119aed1728c8042dfa68a3e8 (diff)
downloadNim-71b69a627f0558bd2286df54caeab267d2ddeb5f.tar.gz
added `$` for arrays
-rw-r--r--lib/system.nim28
-rw-r--r--tests/system/toString.nim6
2 files changed, 19 insertions, 15 deletions
diff --git a/lib/system.nim b/lib/system.nim
index 38839387d..a54a25f2f 100644
--- a/lib/system.nim
+++ b/lib/system.nim
@@ -1705,6 +1705,15 @@ proc `$`*[T: tuple|object](x: T): string =
     result.add($value)
     firstElement = false
   result.add(")")
+  
+proc collectionToString[T](x: T, b, e: string): string =
+  result = b
+  var firstElement = true
+  for value in items(x):
+    if not(firstElement): result.add(", ")
+    result.add($value)
+    firstElement = false
+  result.add(e)
 
 proc `$`*[T: set](x: T): string = 
   ## generic ``$`` operator for sets that is lifted from the components
@@ -1712,13 +1721,7 @@ proc `$`*[T: set](x: T): string =
   ##
   ## .. code-block:: nimrod
   ##   ${23, 45} == "{23, 45}"
-  result = "{"
-  var firstElement = true
-  for value in items(x):
-    if not(firstElement): result.add(", ")
-    result.add($value)
-    firstElement = false
-  result.add("}")
+  collectionToString(x, "{", "}")
 
 proc `$`*[T: seq](x: T): string = 
   ## generic ``$`` operator for seqs that is lifted from the components
@@ -1726,13 +1729,10 @@ proc `$`*[T: seq](x: T): string =
   ##
   ## .. code-block:: nimrod
   ##   $(@[23, 45]) == "@[23, 45]"
-  result = "@["
-  var firstElement = true
-  for value in items(x):
-    if not(firstElement): result.add(", ")
-    result.add($value)
-    firstElement = false
-  result.add("]")
+  collectionToString(x, "@[", "]")
+
+proc `$`*[T: array](x: T): string = 
+  collectionToString(x, "[", "]")
 
 # ----------------- GC interface ---------------------------------------------
 
diff --git a/tests/system/toString.nim b/tests/system/toString.nim
index 24dd903c0..17dcb3cb4 100644
--- a/tests/system/toString.nim
+++ b/tests/system/toString.nim
@@ -1,7 +1,11 @@
 discard """
   output:'''@[23, 45]
-@[, \"foo\", \"bar\"]'''
+@[, foo, bar]
+[, foo, bar]
+[23, 45]'''
 """
 
 echo($(@[23, 45]))
 echo($(@["", "foo", "bar"]))
+echo($(["", "foo", "bar"]))
+echo($([23, 45]))