ucs2length.js (558B)
1 'use strict'; 2 3 // https://mathiasbynens.be/notes/javascript-encoding 4 // https://github.com/bestiejs/punycode.js - punycode.ucs2.decode 5 module.exports = function ucs2length(str) { 6 var length = 0 7 , len = str.length 8 , pos = 0 9 , value; 10 while (pos < len) { 11 length++; 12 value = str.charCodeAt(pos++); 13 if (value >= 0xD800 && value <= 0xDBFF && pos < len) { 14 // high surrogate, and there is a next character 15 value = str.charCodeAt(pos); 16 if ((value & 0xFC00) == 0xDC00) pos++; // low surrogate 17 } 18 } 19 return length; 20 };