diff options
author | Simon Hafner <hafnersimon@gmail.com> | 2014-03-31 15:58:52 -0500 |
---|---|---|
committer | Simon Hafner <hafnersimon@gmail.com> | 2014-03-31 15:58:52 -0500 |
commit | 71b69a627f0558bd2286df54caeab267d2ddeb5f (patch) | |
tree | 2d54a25fe82094b70b4929046a69e2db7d14f7f1 | |
parent | ffb36db5a6caa147119aed1728c8042dfa68a3e8 (diff) | |
download | Nim-71b69a627f0558bd2286df54caeab267d2ddeb5f.tar.gz |
added `$` for arrays
-rw-r--r-- | lib/system.nim | 28 | ||||
-rw-r--r-- | tests/system/toString.nim | 6 |
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])) |