Welcome! Log In Create A New Profile

Advanced

[njs] Updated the list of space separators in String.prototype.trim().

Valentin Bartenev
July 28, 2019 06:18AM
details: https://hg.nginx.org/njs/rev/ac39f4c902b5
branches:
changeset: 1078:ac39f4c902b5
user: Valentin Bartenev <vbart@nginx.com>
date: Sun Jul 28 13:17:13 2019 +0300
description:
Updated the list of space separators in String.prototype.trim().

According to the specification it must include all Unicode code points listed
in the "Space_Separator" (Zs) category.

diffstat:

njs/njs_string.c | 30 ++++++++++++++++++++++++++++++
njs/test/njs_unit_test.c | 10 ++++++++++
2 files changed, 40 insertions(+), 0 deletions(-)

diffs (71 lines):

diff -r 575c018f2206 -r ac39f4c902b5 njs/njs_string.c
--- a/njs/njs_string.c Sat Jul 27 21:12:32 2019 +0300
+++ b/njs/njs_string.c Sun Jul 28 13:17:13 2019 +0300
@@ -2425,8 +2425,23 @@ njs_string_prototype_trim(njs_vm_t *vm,
case 0x000D: /* <CR> */
case 0x0020: /* <SP> */
case 0x00A0: /* <NBSP> */
+ case 0x1680:
+ case 0x2000:
+ case 0x2001:
+ case 0x2002:
+ case 0x2003:
+ case 0x2004:
+ case 0x2005:
+ case 0x2006:
+ case 0x2007:
+ case 0x2008:
+ case 0x2009:
+ case 0x200A:
case 0x2028: /* <LS> */
case 0x2029: /* <PS> */
+ case 0x202F:
+ case 0x205F:
+ case 0x3000:
case 0xFEFF: /* <BOM> */
trim++;
continue;
@@ -2448,8 +2463,23 @@ njs_string_prototype_trim(njs_vm_t *vm,
case 0x000D: /* <CR> */
case 0x0020: /* <SP> */
case 0x00A0: /* <NBSP> */
+ case 0x1680:
+ case 0x2000:
+ case 0x2001:
+ case 0x2002:
+ case 0x2003:
+ case 0x2004:
+ case 0x2005:
+ case 0x2006:
+ case 0x2007:
+ case 0x2008:
+ case 0x2009:
+ case 0x200A:
case 0x2028: /* <LS> */
case 0x2029: /* <PS> */
+ case 0x202F:
+ case 0x205F:
+ case 0x3000:
case 0xFEFF: /* <BOM> */
trim++;
continue;
diff -r 575c018f2206 -r ac39f4c902b5 njs/test/njs_unit_test.c
--- a/njs/test/njs_unit_test.c Sat Jul 27 21:12:32 2019 +0300
+++ b/njs/test/njs_unit_test.c Sun Jul 28 13:17:13 2019 +0300
@@ -5653,6 +5653,16 @@ static njs_unit_test_t njs_test[] =
{ nxt_string("'\\u2029abc\\uFEFF\\u2028'.trim()"),
nxt_string("abc") },

+#if (!NXT_HAVE_MEMORY_SANITIZER) /* very long test under MSAN */
+ { nxt_string("var a = [], code;"
+ "for (code = 0; code <= 1114111; code++) {"
+ " var ws = String.fromCodePoint(code);"
+ " if ((ws + '-' + ws).trim() === '-')"
+ " a.push(code);"
+ "} a"),
+ nxt_string("9,10,11,12,13,32,160,5760,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8232,8233,8239,8287,12288,65279") },
+#endif
+
{ nxt_string("'abcdefgh'.search()"),
nxt_string("0") },

_______________________________________________
nginx-devel mailing list
nginx-devel@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-devel
Subject Author Views Posted

[njs] Updated the list of space separators in String.prototype.trim().

Valentin Bartenev 261 July 28, 2019 06:18AM



Sorry, you do not have permission to post/reply in this forum.

Online Users

Guests: 145
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready