mirror of
https://github.com/nim-lang/Nim.git
synced 2026-04-19 22:10:33 +00:00
fix ropes format errors (#16106) [backport:1.0]
* fix rope index
* add testcase
* fix ropes format
(cherry picked from commit 0c6c4be0e7)
This commit is contained in:
@@ -262,7 +262,7 @@ proc `%`*(frmt: string, args: openArray[Rope]): Rope {.
|
||||
while true:
|
||||
j = j * 10 + ord(frmt[i]) - ord('0')
|
||||
inc(i)
|
||||
if frmt[i] notin {'0'..'9'}: break
|
||||
if i >= frmt.len or frmt[i] notin {'0'..'9'}: break
|
||||
add(result, args[j-1])
|
||||
of '{':
|
||||
inc(i)
|
||||
|
||||
73
tests/stdlib/tropes.nim
Normal file
73
tests/stdlib/tropes.nim
Normal file
@@ -0,0 +1,73 @@
|
||||
import ropes
|
||||
|
||||
|
||||
block:
|
||||
let r: Rope = nil
|
||||
doAssert r[0] == '\0'
|
||||
|
||||
block:
|
||||
var
|
||||
r1 = rope("Hello")
|
||||
r2 = rope("Nim-Lang")
|
||||
|
||||
let r = r1 & r2
|
||||
let s = $r
|
||||
for i in 0 ..< r.len:
|
||||
doAssert r[i] == s[i]
|
||||
|
||||
doAssert r[66] == '\0'
|
||||
|
||||
block:
|
||||
let r = rope("Hello, Nim-Lang")
|
||||
|
||||
let s = $r
|
||||
for i in 0 ..< r.len:
|
||||
doAssert r[i] == s[i]
|
||||
|
||||
doAssert r[66] == '\0'
|
||||
|
||||
block:
|
||||
var r: Rope
|
||||
r.add rope("Nim ")
|
||||
r.add rope("is ")
|
||||
r.add rope("a ")
|
||||
r.add rope("great ")
|
||||
r.add rope("language")
|
||||
|
||||
let s = $r
|
||||
for i in 0 ..< r.len:
|
||||
doAssert r[i] == s[i]
|
||||
|
||||
doAssert r[66] == '\0'
|
||||
|
||||
block:
|
||||
var r: Rope
|
||||
r.add rope("My Conquest")
|
||||
r.add rope(" is ")
|
||||
r.add rope("the Sea of Stars")
|
||||
|
||||
let s = $r
|
||||
for i in 0 ..< r.len:
|
||||
doAssert r[i] == s[i]
|
||||
|
||||
doAssert r[66] == '\0'
|
||||
|
||||
block:
|
||||
var r: Rope
|
||||
r.add rope("My Conquest")
|
||||
r.add rope(" is ")
|
||||
r.add rope("the Sea of Stars")
|
||||
|
||||
var i: int
|
||||
for item in r:
|
||||
doAssert r[i] == item
|
||||
inc i
|
||||
|
||||
doAssert r[66] == '\0'
|
||||
|
||||
block:
|
||||
let r1 = "$1 $2 $3" % [rope("Nim"), rope("is"), rope("a great language")]
|
||||
doAssert $r1 == "Nim is a great language"
|
||||
|
||||
let r2 = "$# $# $#" % [rope("Nim"), rope("is"), rope("a great language")]
|
||||
doAssert $r2 == "Nim is a great language"
|
||||
Reference in New Issue
Block a user