mirror of
https://github.com/nim-lang/Nim.git
synced 2026-02-13 23:03:36 +00:00
Merge branch 'devel' of https://github.com/Araq/Nimrod into devel
This commit is contained in:
@@ -1697,12 +1697,23 @@ 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 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
|
||||
@@ -1710,24 +1721,18 @@ proc `$`*[T: set](x: T): string =
|
||||
##
|
||||
## .. code-block:: nimrod
|
||||
## ${23, 45} == "{23, 45}"
|
||||
result = "{"
|
||||
for value in items(x):
|
||||
if result.len > 1: result.add(", ")
|
||||
result.add($value)
|
||||
result.add("}")
|
||||
collectionToString(x, "{", "}")
|
||||
|
||||
when false:
|
||||
proc `$`*[T](a: openArray[T]): string =
|
||||
## generic ``$`` operator for open arrays that is lifted from the elements
|
||||
## of `a`. Example:
|
||||
##
|
||||
## .. code-block:: nimrod
|
||||
## $[23, 45] == "[23, 45]"
|
||||
result = "["
|
||||
for x in items(a):
|
||||
if result.len > 1: result.add(", ")
|
||||
result.add($x)
|
||||
result.add("]")
|
||||
proc `$`*[T: seq](x: T): string =
|
||||
## generic ``$`` operator for seqs that is lifted from the components
|
||||
## of `x`. Example:
|
||||
##
|
||||
## .. code-block:: nimrod
|
||||
## $(@[23, 45]) == "@[23, 45]"
|
||||
collectionToString(x, "@[", "]")
|
||||
|
||||
proc `$`*[T: array](x: T): string =
|
||||
collectionToString(x, "[", "]")
|
||||
|
||||
# ----------------- GC interface ---------------------------------------------
|
||||
|
||||
|
||||
@@ -252,8 +252,10 @@ proc nimIntToStr(x: int): string {.compilerRtl.} =
|
||||
|
||||
proc nimFloatToStr(x: float): string {.compilerproc.} =
|
||||
var buf: array [0..59, char]
|
||||
c_sprintf(buf, "%#.16e", x)
|
||||
return $buf
|
||||
c_sprintf(buf, "%#.f", x)
|
||||
result = $buf
|
||||
if result[len(result)-1] == '.':
|
||||
result.add("0")
|
||||
|
||||
proc nimInt64ToStr(x: int64): string {.compilerRtl.} =
|
||||
result = newString(sizeof(x)*4)
|
||||
|
||||
11
tests/system/toString.nim
Normal file
11
tests/system/toString.nim
Normal file
@@ -0,0 +1,11 @@
|
||||
discard """
|
||||
output:'''@[23, 45]
|
||||
@[, foo, bar]
|
||||
[, foo, bar]
|
||||
[23, 45]'''
|
||||
"""
|
||||
|
||||
echo($(@[23, 45]))
|
||||
echo($(@["", "foo", "bar"]))
|
||||
echo($(["", "foo", "bar"]))
|
||||
echo($([23, 45]))
|
||||
Reference in New Issue
Block a user