'use strict'; var $ = require('../internals/export'); var uncurryThis = require('../internals/function-uncurry-this'); var toString = require('../internals/to-string'); var charAt = uncurryThis(''.charAt); var charCodeAt = uncurryThis(''.charCodeAt); var exec = uncurryThis(/./.exec); var numberToString = uncurryThis(1.0.toString); var toUpperCase = uncurryThis(''.toUpperCase); var raw = /[\w*+\-./@]/; var hex = function (code, length) { var result = numberToString(code, 16); while (result.length < length) result = '0' + result; return result; }; // `escape` method // https://tc39.es/ecma262/#sec-escape-string $({ global: true }, { escape: function escape(string) { var str = toString(string); var result = ''; var length = str.length; var index = 0; var chr, code; while (index < length) { chr = charAt(str, index++); if (exec(raw, chr)) { result += chr; } else { code = charCodeAt(chr, 0); if (code < 256) { result += '%' + hex(code, 2); } else { result += '%u' + toUpperCase(hex(code, 4)); } } } return result; } });