MCPcopy Create free account
hub / github.com/Moddable-OpenSource/moddable / fxPatternParserEscape

Function fxPatternParserEscape

xs/sources/xsre.c:2316–2412  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2314}
2315
2316void fxPatternParserEscape(txPatternParser* parser, txBoolean punctuator)
2317{
2318 switch(parser->character) {
2319 case C_EOF:
2320 break;
2321 // control escapes
2322 case 'f':
2323 parser->character = '\f';
2324 break;
2325 case 'n':
2326 parser->character = '\n';
2327 break;
2328 case 'r':
2329 parser->character = '\r';
2330 break;
2331 case 't':
2332 parser->character = '\t';
2333 break;
2334 case 'v':
2335 parser->character = '\v';
2336 break;
2337 // control letters
2338 case 'c': {
2339 txInteger value;
2340 fxPatternParserNext(parser);
2341 value = parser->character;
2342 if ((('a' <= value) && (value <= 'z')) || (('A' <= value) && (value <= 'Z')))
2343 parser->character = value % 32;
2344 else
2345 fxPatternParserError(parser, gxErrors[mxInvalidEscape]);
2346 } break;
2347 // null
2348 case '0': {
2349 txString p = parser->pattern + parser->offset;
2350 if ((*p < '0') || ('9' < *p))
2351 parser->character = 0;
2352 else
2353 fxPatternParserError(parser, gxErrors[mxInvalidEscape]);
2354 } break;
2355 case 'x': {
2356 txString p = parser->pattern + parser->offset;
2357 if (fxParseHexEscape(&p, &parser->character))
2358 parser->offset = mxPtrDiff(p - parser->pattern);
2359 else if (parser->flags & XS_REGEXP_UV)
2360 fxPatternParserError(parser, gxErrors[mxInvalidEscape]);
2361 } break;
2362 case 'u': {
2363 txString p = parser->pattern + parser->offset;
2364 if (fxParseUnicodeEscape(&p, &parser->character, (parser->flags & XS_REGEXP_UV) ? 1 : 0, (parser->flags & XS_REGEXP_UV) ? '\\' : 0))
2365 parser->offset = mxPtrDiff(p - parser->pattern);
2366 else if (parser->flags & XS_REGEXP_UV)
2367 fxPatternParserError(parser, gxErrors[mxInvalidEscape]);
2368 } break;
2369 case '^':
2370 case '$':
2371 case '\\':
2372 case '.':
2373 case '*':

Callers 2

fxCharSetParseEscapeFunction · 0.85
fxCharSetStringsFunction · 0.85

Calls 4

fxPatternParserNextFunction · 0.85
fxPatternParserErrorFunction · 0.85
fxParseHexEscapeFunction · 0.85
fxParseUnicodeEscapeFunction · 0.85

Tested by

no test coverage detected