2 var $ = require('../internals/export');
3 var uncurryThis = require('../internals/function-uncurry-this');
4 var toString = require('../internals/to-string');
6 var charAt = uncurryThis(''.charAt);
7 var charCodeAt = uncurryThis(''.charCodeAt);
8 var exec = uncurryThis(/./.exec);
9 var numberToString = uncurryThis(1.0.toString);
10 var toUpperCase = uncurryThis(''.toUpperCase);
12 var raw = /[\w*+\-./@]/;
14 var hex = function (code, length) {
15 var result = numberToString(code, 16);
16 while (result.length < length) result = '0' + result;
21 // https://tc39.es/ecma262/#sec-escape-string
23 escape: function escape(string) {
24 var str = toString(string);
26 var length = str.length;
29 while (index < length) {
30 chr = charAt(str, index++);
34 code = charCodeAt(chr, 0);
36 result += '%' + hex(code, 2);
38 result += '%u' + toUpperCase(hex(code, 4));