123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- 'use strict';
- var $ = require('../internals/export');
- var uncurryThis = require('../internals/function-uncurry-this');
- var toString = require('../internals/to-string');
-
- var fromCharCode = String.fromCharCode;
- var charAt = uncurryThis(''.charAt);
- var exec = uncurryThis(/./.exec);
- var stringSlice = uncurryThis(''.slice);
-
- var hex2 = /^[\da-f]{2}$/i;
- var hex4 = /^[\da-f]{4}$/i;
-
- // `unescape` method
- // https://tc39.es/ecma262/#sec-unescape-string
- $({ global: true }, {
- unescape: function unescape(string) {
- var str = toString(string);
- var result = '';
- var length = str.length;
- var index = 0;
- var chr, part;
- while (index < length) {
- chr = charAt(str, index++);
- if (chr === '%') {
- if (charAt(str, index) === 'u') {
- part = stringSlice(str, index + 1, index + 5);
- if (exec(hex4, part)) {
- result += fromCharCode(parseInt(part, 16));
- index += 5;
- continue;
- }
- } else {
- part = stringSlice(str, index, index + 2);
- if (exec(hex2, part)) {
- result += fromCharCode(parseInt(part, 16));
- index += 2;
- continue;
- }
- }
- }
- result += chr;
- } return result;
- }
- });
|