MCPcopy Index your code
hub / github.com/NativeScript/NativeScript / parseArgumentsList

Function parseArgumentsList

packages/core/css/parser.ts:449–487  ·  view source on GitHub ↗
(text: string, start: number, argument: (value: string, lastIndex: number, index: number) => Parsed<T>)

Source from the content-addressed store, hash-verified

447const closingBracketRegEx = /\s*\)\s*/gy;
448const closingBracketOrCommaRegEx = /\s*([),])\s*/gy;
449function parseArgumentsList<T>(text: string, start: number, argument: (value: string, lastIndex: number, index: number) => Parsed<T>): Parsed<Parsed<T>[]> {
450 openingBracketRegEx.lastIndex = start;
451 const openingBracket = openingBracketRegEx.exec(text);
452 if (!openingBracket) {
453 return null;
454 }
455 let end = openingBracketRegEx.lastIndex;
456 const value: Parsed<T>[] = [];
457
458 closingBracketRegEx.lastIndex = end;
459 const closingBracket = closingBracketRegEx.exec(text);
460 if (closingBracket) {
461 return { start, end, value };
462 }
463
464 // eslint-disable-next-line no-constant-condition
465 for (let index = 0; true; index++) {
466 const arg = argument(text, end, index);
467 if (!arg) {
468 return null;
469 }
470 end = arg.end;
471 value.push(arg);
472
473 closingBracketOrCommaRegEx.lastIndex = end;
474 const closingBracketOrComma = closingBracketOrCommaRegEx.exec(text);
475 if (closingBracketOrComma) {
476 end = closingBracketOrCommaRegEx.lastIndex;
477 if (closingBracketOrComma[1] === ',') {
478 // noinspection UnnecessaryContinueJS
479 continue;
480 } else if (closingBracketOrComma[1] === ')') {
481 return { start, end, value };
482 }
483 } else {
484 return null;
485 }
486 }
487}
488
489export function parseColorStop(text: string, start = 0): Parsed<ColorStop> {
490 const color = parseColor(text, start);

Callers 1

parseLinearGradientFunction · 0.85

Calls 1

pushMethod · 0.45

Tested by

no test coverage detected