source: frontend/node_modules/core-js-pure/modules/es.regexp.escape.js

Last change on this file was 9af201e, checked in by MBK <marija.karapandzova@…>, 12 days ago

Fix frontend appearance

  • Property mode set to 100644
File size: 2.3 KB
Line 
1'use strict';
2var $ = require('../internals/export');
3var uncurryThis = require('../internals/function-uncurry-this');
4var aString = require('../internals/a-string');
5var hasOwn = require('../internals/has-own-property');
6var padStart = require('../internals/string-pad').start;
7var WHITESPACES = require('../internals/whitespaces');
8
9var $Array = Array;
10var $escape = RegExp.escape;
11var charAt = uncurryThis(''.charAt);
12var charCodeAt = uncurryThis(''.charCodeAt);
13var numberToString = uncurryThis(1.1.toString);
14var join = uncurryThis([].join);
15var FIRST_DIGIT_OR_ASCII = /^[0-9a-z]/i;
16var SYNTAX_SOLIDUS = /^[$()*+./?[\\\]^{|}]/;
17var OTHER_PUNCTUATORS_AND_WHITESPACES = RegExp('^[!"#%&\',\\-:;<=>@`~' + WHITESPACES + ']');
18var exec = uncurryThis(FIRST_DIGIT_OR_ASCII.exec);
19
20var ControlEscape = {
21 '\u0009': 't',
22 '\u000A': 'n',
23 '\u000B': 'v',
24 '\u000C': 'f',
25 '\u000D': 'r'
26};
27
28var escapeChar = function (chr) {
29 var hex = numberToString(charCodeAt(chr, 0), 16);
30 return hex.length < 3 ? '\\x' + padStart(hex, 2, '0') : '\\u' + padStart(hex, 4, '0');
31};
32
33// Avoiding the use of polyfills of the previous iteration of this proposal
34var FORCED = !$escape || $escape('ab') !== '\\x61b';
35
36// `RegExp.escape` method
37// https://tc39.es/ecma262/#sec-regexp.escape
38$({ target: 'RegExp', stat: true, forced: FORCED }, {
39 escape: function escape(S) {
40 aString(S);
41 var length = S.length;
42 var result = $Array(length);
43
44 for (var i = 0; i < length; i++) {
45 var chr = charAt(S, i);
46 if (i === 0 && exec(FIRST_DIGIT_OR_ASCII, chr)) {
47 result[i] = escapeChar(chr);
48 } else if (hasOwn(ControlEscape, chr)) {
49 result[i] = '\\' + ControlEscape[chr];
50 } else if (exec(SYNTAX_SOLIDUS, chr)) {
51 result[i] = '\\' + chr;
52 } else if (exec(OTHER_PUNCTUATORS_AND_WHITESPACES, chr)) {
53 result[i] = escapeChar(chr);
54 } else {
55 var charCode = charCodeAt(chr, 0);
56 // single UTF-16 code unit
57 if ((charCode & 0xF800) !== 0xD800) result[i] = chr;
58 // unpaired surrogate
59 else if (charCode >= 0xDC00 || i + 1 >= length || (charCodeAt(S, i + 1) & 0xFC00) !== 0xDC00) result[i] = escapeChar(chr);
60 // surrogate pair
61 else {
62 result[i] = chr;
63 result[++i] = charAt(S, i);
64 }
65 }
66 }
67
68 return join(result, '');
69 }
70});
Note: See TracBrowser for help on using the repository browser.