| @@ 3388-3403 (lines=16) @@ | ||
| 3385 | ||
| 3386 | // a bunch of guards that are and'd together |
|
| 3387 | // TODO rename to guardGroup |
|
| 3388 | protected function guardGroup(&$guardGroup) { |
|
| 3389 | $s = $this->seek(); |
|
| 3390 | $guardGroup = array(); |
|
| 3391 | while ($this->guard($guard)) { |
|
| 3392 | $guardGroup[] = $guard; |
|
| 3393 | if (!$this->literal("and")) break; |
|
| 3394 | } |
|
| 3395 | ||
| 3396 | if (count($guardGroup) == 0) { |
|
| 3397 | $guardGroup = null; |
|
| 3398 | $this->seek($s); |
|
| 3399 | return false; |
|
| 3400 | } |
|
| 3401 | ||
| 3402 | return true; |
|
| 3403 | } |
|
| 3404 | ||
| 3405 | protected function guard(&$guard) { |
|
| 3406 | $s = $this->seek(); |
|
| @@ 3652-3668 (lines=17) @@ | ||
| 3649 | } |
|
| 3650 | ||
| 3651 | // comma separated list of selectors |
|
| 3652 | protected function selectors(&$out) { |
|
| 3653 | $s = $this->seek(); |
|
| 3654 | $selectors = array(); |
|
| 3655 | while ($this->selector($sel)) { |
|
| 3656 | $selectors[] = $sel; |
|
| 3657 | if (!$this->literal(",")) break; |
|
| 3658 | while ($this->literal(",")); // ignore extra |
|
| 3659 | } |
|
| 3660 | ||
| 3661 | if (count($selectors) == 0) { |
|
| 3662 | $this->seek($s); |
|
| 3663 | return false; |
|
| 3664 | } |
|
| 3665 | ||
| 3666 | $out = $selectors; |
|
| 3667 | return true; |
|
| 3668 | } |
|
| 3669 | ||
| 3670 | // whitespace separated list of selectorSingle |
|
| 3671 | protected function selector(&$out) { |
|