12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- '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;
- }
- });
|