diff options
author | hlaaftana <10591326+hlaaftana@users.noreply.github.com> | 2020-05-05 11:34:37 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-05-05 10:34:37 +0200 |
commit | 6b7b5fb4fa7865d17f2433ddc49bac1483b19a01 (patch) | |
tree | 7c4b08bcb436421740a39fba44433d1280183e52 | |
parent | eefada8a8816873c6c9c3e1e7c479fefae96c93b (diff) | |
download | Nim-6b7b5fb4fa7865d17f2433ddc49bac1483b19a01.tar.gz |
Clarify JS cstring len (#14184)
-rw-r--r-- | doc/backends.rst | 2 | ||||
-rw-r--r-- | lib/pure/cstrutils.nim | 4 | ||||
-rw-r--r-- | lib/system.nim | 13 |
3 files changed, 10 insertions, 9 deletions
diff --git a/doc/backends.rst b/doc/backends.rst index 52c16b9f7..d34a06238 100644 --- a/doc/backends.rst +++ b/doc/backends.rst @@ -82,7 +82,7 @@ available. This includes: * proper 64 bit integer arithmetic To compensate, the standard library has modules `catered to the JS backend -<https://nim-lang.org/docs/lib.html#pure-libraries-modules-for-js-backend>`_ +<lib.html#pure-libraries-modules-for-js-backend>`_ and more support will come in the future (for instance, Node.js bindings to get OS info). diff --git a/lib/pure/cstrutils.nim b/lib/pure/cstrutils.nim index 345a9be7f..601508e2e 100644 --- a/lib/pure/cstrutils.nim +++ b/lib/pure/cstrutils.nim @@ -69,7 +69,7 @@ proc cmpIgnoreStyle*(a, b: cstring): int {.noSideEffect, ## | > 0 if a > b ## ## Not supported for JS backend, use `strutils.cmpIgnoreStyle - ## <https://nim-lang.org/docs/strutils.html#cmpIgnoreStyle%2Cstring%2Cstring>`_ instead. + ## <strutils.html#cmpIgnoreStyle%2Cstring%2Cstring>`_ instead. var i = 0 var j = 0 while true: @@ -91,7 +91,7 @@ proc cmpIgnoreCase*(a, b: cstring): int {.noSideEffect, ## | > 0 if a > b ## ## Not supported for JS backend, use `strutils.cmpIgnoreCase - ## <https://nim-lang.org/docs/strutils.html#cmpIgnoreCase%2Cstring%2Cstring>`_ instead. + ## <strutils.html#cmpIgnoreCase%2Cstring%2Cstring>`_ instead. var i = 0 while true: var aa = toLowerAscii(a[i]) diff --git a/lib/system.nim b/lib/system.nim index da44baa10..3f5015542 100644 --- a/lib/system.nim +++ b/lib/system.nim @@ -692,6 +692,11 @@ proc len*(x: string): int {.magic: "LengthStr", noSideEffect.} proc len*(x: cstring): int {.magic: "LengthStr", noSideEffect.} ## Returns the length of a compatible string. This is sometimes ## an O(n) operation. + ## + ## **Note:** On the JS backend this currently counts UTF-16 code points + ## instead of bytes at runtime (not at compile time). For now, if you + ## need the byte length of the UTF-8 encoding, convert to string with + ## `$` first then call `len`. ## ## .. code-block:: Nim ## var str: cstring = "Hello world!" @@ -2137,16 +2142,12 @@ when notJSnotNims: when not defined(js): proc cmp(x, y: string): int = - when defined(nimscript): + when nimvm: if x < y: result = -1 elif x > y: result = 1 else: result = 0 else: - when nimvm: - if x < y: result = -1 - elif x > y: result = 1 - else: result = 0 - else: + when not defined(nimscript): # avoid semantic checking let minlen = min(x.len, y.len) result = int(nimCmpMem(x.cstring, y.cstring, cast[csize_t](minlen))) if result == 0: |