Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ CountCaptures()

void System.Text.RegularExpressions.RegexParser.CountCaptures ( )
inlineprivate

Definition at line 1517 of file RegexParser.cs.

1518 {
1519 NoteCaptureSlot(0, 0);
1520 _autocap = 1;
1521 while (CharsRight() > 0)
1522 {
1523 int pos = Textpos();
1524 switch (RightCharMoveRight())
1525 {
1526 case '\\':
1527 if (CharsRight() > 0)
1528 {
1530 }
1531 break;
1532 case '#':
1533 if (UseOptionX())
1534 {
1535 MoveLeft();
1536 ScanBlank();
1537 }
1538 break;
1539 case '[':
1540 ScanCharClass(caseInsensitive: false, scanOnly: true);
1541 break;
1542 case ')':
1543 if (!EmptyOptionsStack())
1544 {
1545 PopOptions();
1546 }
1547 break;
1548 case '(':
1549 if (CharsRight() >= 2 && RightChar(1) == '#' && RightChar() == '?')
1550 {
1551 MoveLeft();
1552 ScanBlank();
1553 }
1554 else
1555 {
1556 PushOptions();
1557 if (CharsRight() > 0 && RightChar() == '?')
1558 {
1559 MoveRight();
1560 if (CharsRight() > 1 && (RightChar() == '<' || RightChar() == '\''))
1561 {
1562 MoveRight();
1563 char c = RightChar();
1564 if (c != '0' && RegexCharClass.IsWordChar(c))
1565 {
1566 if ((uint)(c - 49) <= 8u)
1567 {
1569 }
1570 else
1571 {
1573 }
1574 }
1575 }
1576 else
1577 {
1578 ScanOptions();
1579 if (CharsRight() > 0)
1580 {
1581 if (RightChar() == ')')
1582 {
1583 MoveRight();
1585 }
1586 else if (RightChar() == '(')
1587 {
1588 _ignoreNextParen = true;
1589 break;
1590 }
1591 }
1592 }
1593 }
1594 else if (!UseOptionN() && !_ignoreNextParen)
1595 {
1596 NoteCaptureSlot(_autocap++, pos);
1597 }
1598 }
1599 _ignoreNextParen = false;
1600 break;
1601 }
1602 }
1604 }
RegexCharClass ScanCharClass(bool caseInsensitive, bool scanOnly)
void NoteCaptureName(string name, int pos)

References System.Text.RegularExpressions.RegexParser._autocap, System.Text.RegularExpressions.RegexParser._ignoreNextParen, System.Text.RegularExpressions.RegexParser.AssignNameSlots(), System.Text.RegularExpressions.RegexParser.CharsRight(), System.Text.RegularExpressions.RegexParser.EmptyOptionsStack(), System.Text.RegularExpressions.RegexCharClass.IsWordChar(), System.Text.RegularExpressions.RegexParser.MoveLeft(), System.Text.RegularExpressions.RegexParser.MoveRight(), System.Text.RegularExpressions.RegexParser.NoteCaptureName(), System.Text.RegularExpressions.RegexParser.NoteCaptureSlot(), System.Text.RegularExpressions.RegexParser.PopKeepOptions(), System.Text.RegularExpressions.RegexParser.PopOptions(), System.Text.RegularExpressions.RegexParser.PushOptions(), System.Text.RegularExpressions.RegexParser.RightChar(), System.Text.RegularExpressions.RegexParser.RightCharMoveRight(), System.Text.RegularExpressions.RegexParser.ScanBackslash(), System.Text.RegularExpressions.RegexParser.ScanBlank(), System.Text.RegularExpressions.RegexParser.ScanCapname(), System.Text.RegularExpressions.RegexParser.ScanCharClass(), System.Text.RegularExpressions.RegexParser.ScanDecimal(), System.Text.RegularExpressions.RegexParser.ScanOptions(), System.Text.RegularExpressions.RegexParser.Textpos(), System.Text.RegularExpressions.RegexParser.UseOptionN(), and System.Text.RegularExpressions.RegexParser.UseOptionX().