2 var $ = require('../internals/export');
3 var uncurryThis = require('../internals/function-uncurry-this');
4 var toString = require('../internals/to-string');
6 var fromCharCode = String.fromCharCode;
7 var charAt = uncurryThis(''.charAt);
8 var exec = uncurryThis(/./.exec);
9 var stringSlice = uncurryThis(''.slice);
11 var hex2 = /^[\da-f]{2}$/i;
12 var hex4 = /^[\da-f]{4}$/i;
15 // https://tc39.es/ecma262/#sec-unescape-string
17 unescape: function unescape(string) {
18 var str = toString(string);
20 var length = str.length;
23 while (index < length) {
24 chr = charAt(str, index++);
26 if (charAt(str, index) === 'u') {
27 part = stringSlice(str, index + 1, index + 5);
28 if (exec(hex4, part)) {
29 result += fromCharCode(parseInt(part, 16));
34 part = stringSlice(str, index, index + 2);
35 if (exec(hex2, part)) {
36 result += fromCharCode(parseInt(part, 16));