From f6e8da4332eb974a0e2d55872667f21aece57bc8 Mon Sep 17 00:00:00 2001 From: Simon Hafner Date: Tue, 11 Feb 2014 14:16:12 -0600 Subject: Added `$` for seq --- tests/system/toString.nim | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 tests/system/toString.nim (limited to 'tests') diff --git a/tests/system/toString.nim b/tests/system/toString.nim new file mode 100644 index 000000000..2a8ce1c0c --- /dev/null +++ b/tests/system/toString.nim @@ -0,0 +1,5 @@ +discard """ + output:'''@[23, 45]''' +""" + +echo($(@[23, 45])) -- cgit 1.4.1-2-gfad0 From b6e4a5229dabe20514b07a130f8b26b59a427d61 Mon Sep 17 00:00:00 2001 From: Simon Hafner Date: Tue, 11 Feb 2014 14:20:55 -0600 Subject: explicit firstElement for `$` in collections --- lib/system.nim | 12 +++++++++--- tests/system/toString.nim | 4 +++- 2 files changed, 12 insertions(+), 4 deletions(-) (limited to 'tests') diff --git a/lib/system.nim b/lib/system.nim index e7308f5d3..222ed9d8d 100644 --- a/lib/system.nim +++ b/lib/system.nim @@ -1653,11 +1653,13 @@ proc `$`*[T: tuple|object](x: T): string = ## $(23, 45) == "(23, 45)" ## $() == "()" result = "(" + var firstElement = true for name, value in fieldPairs(x): - if result.len > 1: result.add(", ") + if not(firstElement): result.add(", ") result.add(name) result.add(": ") result.add($value) + firstElement = false result.add(")") proc `$`*[T: set](x: T): string = @@ -1667,9 +1669,11 @@ proc `$`*[T: set](x: T): string = ## .. code-block:: nimrod ## ${23, 45} == "{23, 45}" result = "{" + var firstElement = true for value in items(x): - if result.len > 1: result.add(", ") + if not(firstElement): result.add(", ") result.add($value) + firstElement = false result.add("}") proc `$`*[T: seq](x: T): string = @@ -1679,9 +1683,11 @@ proc `$`*[T: seq](x: T): string = ## .. code-block:: nimrod ## $(@[23, 45]) == "@[23, 45]" result = "@[" + var firstElement = true for value in items(x): - if result.len > 2: result.add(", ") + if not(firstElement): result.add(", ") result.add($value) + firstElement = false result.add("]") when false: diff --git a/tests/system/toString.nim b/tests/system/toString.nim index 2a8ce1c0c..24dd903c0 100644 --- a/tests/system/toString.nim +++ b/tests/system/toString.nim @@ -1,5 +1,7 @@ discard """ - output:'''@[23, 45]''' + output:'''@[23, 45] +@[, \"foo\", \"bar\"]''' """ echo($(@[23, 45])) +echo($(@["", "foo", "bar"])) -- cgit 1.4.1-2-gfad0 From 71b69a627f0558bd2286df54caeab267d2ddeb5f Mon Sep 17 00:00:00 2001 From: Simon Hafner Date: Mon, 31 Mar 2014 15:58:52 -0500 Subject: added `$` for arrays --- lib/system.nim | 28 ++++++++++++++-------------- tests/system/toString.nim | 6 +++++- 2 files changed, 19 insertions(+), 15 deletions(-) (limited to 'tests') 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])) -- cgit 1.4.1-2-gfad0