explicit firstElement for $ in collections

This commit is contained in:
Simon Hafner 2014-02-11 14:20:55 -06:00
commit b6e4a5229d
2 changed files with 12 additions and 4 deletions

View file

@ -1653,11 +1653,13 @@ proc `$`*[T: tuple|object](x: T): string =
## $(23, 45) == "(23, 45)" ## $(23, 45) == "(23, 45)"
## $() == "()" ## $() == "()"
result = "(" result = "("
var firstElement = true
for name, value in fieldPairs(x): for name, value in fieldPairs(x):
if result.len > 1: result.add(", ") if not(firstElement): result.add(", ")
result.add(name) result.add(name)
result.add(": ") result.add(": ")
result.add($value) result.add($value)
firstElement = false
result.add(")") result.add(")")
proc `$`*[T: set](x: T): string = proc `$`*[T: set](x: T): string =
@ -1667,9 +1669,11 @@ proc `$`*[T: set](x: T): string =
## .. code-block:: nimrod ## .. code-block:: nimrod
## ${23, 45} == "{23, 45}" ## ${23, 45} == "{23, 45}"
result = "{" result = "{"
var firstElement = true
for value in items(x): for value in items(x):
if result.len > 1: result.add(", ") if not(firstElement): result.add(", ")
result.add($value) result.add($value)
firstElement = false
result.add("}") result.add("}")
proc `$`*[T: seq](x: T): string = proc `$`*[T: seq](x: T): string =
@ -1679,9 +1683,11 @@ proc `$`*[T: seq](x: T): string =
## .. code-block:: nimrod ## .. code-block:: nimrod
## $(@[23, 45]) == "@[23, 45]" ## $(@[23, 45]) == "@[23, 45]"
result = "@[" result = "@["
var firstElement = true
for value in items(x): for value in items(x):
if result.len > 2: result.add(", ") if not(firstElement): result.add(", ")
result.add($value) result.add($value)
firstElement = false
result.add("]") result.add("]")
when false: when false:

View file

@ -1,5 +1,7 @@
discard """ discard """
output:'''@[23, 45]''' output:'''@[23, 45]
@[, \"foo\", \"bar\"]'''
""" """
echo($(@[23, 45])) echo($(@[23, 45]))
echo($(@["", "foo", "bar"]))