'use strict'; var $ = require('../internals/export'); var fromCharCode = String.fromCharCode; 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 = String(string); var result = ''; var length = str.length; var index = 0; var chr, slice; while (index < length) { chr = str.charAt(index++); if (chr === '%') { if (str.charAt(index) === 'u') { slice = str.slice(index + 1, index + 5); if (hex4.test(slice)) { result += fromCharCode(parseInt(slice, 16)); index += 5; continue; } } else { slice = str.slice(index, index + 2); if (hex2.test(slice)) { result += fromCharCode(parseInt(slice, 16)); index += 2; continue; } } } result += chr; } return result; } });