diff options
author | Darius Jahandarie <djahandarie@gmail.com> | 2023-11-03 23:32:33 +0900 |
---|---|---|
committer | Darius Jahandarie <djahandarie@gmail.com> | 2023-11-03 23:52:30 +0900 |
commit | 376151096431d4362e4baaacf0cef4a534e169f7 (patch) | |
tree | 18536a224fd4d833aaf691d0363a3a4b59175dd7 /ext/lib/ucs2length.js | |
parent | b64f51c3b13a46af4dd7f1e43048ac19c781ca7b (diff) |
Replace JsonSchema with ajv for dictionary validation
Diffstat (limited to 'ext/lib/ucs2length.js')
-rw-r--r-- | ext/lib/ucs2length.js | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/ext/lib/ucs2length.js b/ext/lib/ucs2length.js new file mode 100644 index 00000000..120a64d4 --- /dev/null +++ b/ext/lib/ucs2length.js @@ -0,0 +1,16 @@ +export default function ucs2length(str) { + const len = str.length; + let length = 0; + let pos = 0; + let value; + while (pos < len) { + length++; + value = str.charCodeAt(pos++); + if (value >= 0xd800 && value <= 0xdbff && pos < len) { + // high surrogate, and there is a next character + value = str.charCodeAt(pos); + if ((value & 0xfc00) === 0xdc00) pos++; // low surrogate + } + } + return length; +} |