(text: string, start = 0)
| 508 | |
| 509 | const linearGradientStartRegEx = /\s*linear-gradient\s*/gy; |
| 510 | export function parseLinearGradient(text: string, start = 0): Parsed<LinearGradient> { |
| 511 | linearGradientStartRegEx.lastIndex = start; |
| 512 | const lgs = linearGradientStartRegEx.exec(text); |
| 513 | if (!lgs) { |
| 514 | return null; |
| 515 | } |
| 516 | let end = linearGradientStartRegEx.lastIndex; |
| 517 | |
| 518 | let angle = Math.PI; |
| 519 | const colors: ColorStop[] = []; |
| 520 | |
| 521 | const parsedArgs = parseArgumentsList<Angle | ColorStop>(text, end, (text, start, index) => { |
| 522 | if (index === 0) { |
| 523 | // First arg can be gradient direction |
| 524 | const angleArg = parseAngle(text, start) || parseDirection(text, start); |
| 525 | if (angleArg) { |
| 526 | angle = angleArg.value; |
| 527 | |
| 528 | return angleArg; |
| 529 | } |
| 530 | } |
| 531 | |
| 532 | const colorStop = parseColorStop(text, start); |
| 533 | if (colorStop) { |
| 534 | colors.push(colorStop.value); |
| 535 | |
| 536 | return colorStop; |
| 537 | } |
| 538 | |
| 539 | return null; |
| 540 | }); |
| 541 | if (!parsedArgs) { |
| 542 | return null; |
| 543 | } |
| 544 | end = parsedArgs.end; |
| 545 | |
| 546 | return { start, end, value: { angle, colors } }; |
| 547 | } |
| 548 | |
| 549 | const slashRegEx = /\s*(\/)\s*/gy; |
| 550 | function parseSlash(text: string, start: number): Parsed<'/'> { |
no test coverage detected