|
|
@ -35,8 +35,6 @@ |
|
|
|
/** Error messages */ |
|
|
|
errors = { |
|
|
|
'overflow': 'Overflow: input needs wider integers to process.', |
|
|
|
'ucs2decode': 'UCS-2(decode): illegal sequence', |
|
|
|
'ucs2encode': 'UCS-2(encode): illegal value', |
|
|
|
'not-basic': 'Illegal input >= 0x80 (not a basic code point)', |
|
|
|
'invalid-input': 'Invalid input' |
|
|
|
}, |
|
|
@ -112,15 +110,18 @@ |
|
|
|
extra; |
|
|
|
while (counter < length) { |
|
|
|
value = string.charCodeAt(counter++); |
|
|
|
if ((value & 0xF800) == 0xD800) { |
|
|
|
if ((value & 0xF800) == 0xD800 && counter < length) { |
|
|
|
// high surrogate, and there is a next character
|
|
|
|
extra = string.charCodeAt(counter++); |
|
|
|
if ((value & 0xFC00) != 0xD800 || (extra & 0xFC00) != 0xDC00) { |
|
|
|
error('ucs2decode'); |
|
|
|
} |
|
|
|
value = ((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000; |
|
|
|
if ((extra & 0xFC00) == 0xDC00) { // low surrogate
|
|
|
|
output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000); |
|
|
|
} else { |
|
|
|
output.push(value, extra); |
|
|
|
} |
|
|
|
} else { |
|
|
|
output.push(value); |
|
|
|
} |
|
|
|
} |
|
|
|
return output; |
|
|
|
} |
|
|
|
|
|
|
@ -135,9 +136,6 @@ |
|
|
|
function ucs2encode(array) { |
|
|
|
return map(array, function(value) { |
|
|
|
var output = ''; |
|
|
|
if ((value & 0xF800) == 0xD800) { |
|
|
|
error('ucs2encode'); |
|
|
|
} |
|
|
|
if (value > 0xFFFF) { |
|
|
|
value -= 0x10000; |
|
|
|
output += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800); |
|
|
@ -472,7 +470,7 @@ |
|
|
|
* @memberOf punycode |
|
|
|
* @type String |
|
|
|
*/ |
|
|
|
'version': '1.0.0', |
|
|
|
'version': '1.1.1', |
|
|
|
/** |
|
|
|
* An object of methods to convert from JavaScript's internal character |
|
|
|
* representation (UCS-2) to decimal Unicode code points, and back. |
|
|
|