diff options
-rw-r--r-- | lib/packages/docutils/rstgen.nim | 2 | ||||
-rw-r--r-- | lib/pure/strutils.nim | 9 | ||||
-rw-r--r-- | tests/stdlib/tstrutils.nim | 3 |
3 files changed, 9 insertions, 5 deletions
diff --git a/lib/packages/docutils/rstgen.nim b/lib/packages/docutils/rstgen.nim index f5ff9aa03..d1f2a7511 100644 --- a/lib/packages/docutils/rstgen.nim +++ b/lib/packages/docutils/rstgen.nim @@ -763,7 +763,7 @@ proc stripTocHtml(s: string): string = if last < 0: # Abort, since we didn't found a closing angled bracket. return - result.delete(first, last) + result.delete(first..last) first = result.find('<', first) proc renderHeadline(d: PDoc, n: PRstNode, result: var string) = diff --git a/lib/pure/strutils.nim b/lib/pure/strutils.nim index b6c0d6917..abdeed5b4 100644 --- a/lib/pure/strutils.nim +++ b/lib/pure/strutils.nim @@ -1648,7 +1648,7 @@ func removePrefix*(s: var string, chars: set[char] = Newlines) {.rtl, var start = 0 while start < s.len and s[start] in chars: start += 1 - if start > 0: s.delete(0, start - 1) + if start > 0: s.delete(0..start - 1) func removePrefix*(s: var string, c: char) {.rtl, extern: "nsuRemovePrefixChar".} = @@ -1675,8 +1675,8 @@ func removePrefix*(s: var string, prefix: string) {.rtl, var answers = "yesyes" answers.removePrefix("yes") doAssert answers == "yes" - if s.startsWith(prefix): - s.delete(0, prefix.len - 1) + if s.startsWith(prefix) and prefix.len > 0: + s.delete(0..prefix.len - 1) func removeSuffix*(s: var string, chars: set[char] = Newlines) {.rtl, extern: "nsuRemoveSuffixCharSet".} = @@ -2469,7 +2469,8 @@ func trimZeros*(x: var string; decimalSep = '.') = var pos = last while pos >= 0 and x[pos] == '0': dec(pos) if pos > sPos: inc(pos) - x.delete(pos, last) + if last >= pos: + x.delete(pos..last) type BinaryPrefixMode* = enum ## The different names for binary prefixes. diff --git a/tests/stdlib/tstrutils.nim b/tests/stdlib/tstrutils.nim index 32929ef17..4e88197ff 100644 --- a/tests/stdlib/tstrutils.nim +++ b/tests/stdlib/tstrutils.nim @@ -433,6 +433,9 @@ template main() = x = "1e0" x.trimZeros() doAssert x == "1e0" + x = "1.23" + x.trimZeros() + doAssert x == "1.23" block: # countLines proc assertCountLines(s: string) = doAssert s.countLines == s.splitLines.len |