%PDF- %PDF-
Direktori : /home/qgbqkvz/www/wp-content/plugins/wp-scss/scssphp/src/Ast/Selector/ |
Current File : /home/qgbqkvz/www/wp-content/plugins/wp-scss/scssphp/src/Ast/Selector/ComplexSelectorComponent.php |
<?php /** * SCSSPHP * * @copyright 2012-2020 Leaf Corcoran * * @license http://opensource.org/licenses/MIT MIT * * @link http://scssphp.github.io/scssphp */ namespace ScssPhp\ScssPhp\Ast\Selector; use ScssPhp\ScssPhp\Util\Equatable; /** * A component of a {@see ComplexSelector}. * * This a {@see CompoundSelector} with one or more trailing {@see Combinator}s. * * @internal */ final class ComplexSelectorComponent implements Equatable { /** * This component's compound selector. * * @var CompoundSelector * @readonly */ private $selector; /** * This selector's combinators. * * If this is empty, that indicates that it has an implicit descendent * combinator. If it's more than one element, that means it's invalid CSS; * however, we still support this for backwards-compatibility purposes. * * @var list<string> * @phpstan-var list<Combinator::*> * @readonly */ private $combinators; /** * @param CompoundSelector $selector * @param list<string> $combinators * * @phpstan-param list<Combinator::*> $combinators */ public function __construct(CompoundSelector $selector, array $combinators) { $this->selector = $selector; $this->combinators = $combinators; } public function getSelector(): CompoundSelector { return $this->selector; } /** * @return list<string> * @phpstan-return list<Combinator::*> */ public function getCombinators(): array { return $this->combinators; } public function equals(object $other): bool { return $other instanceof ComplexSelectorComponent && $this->selector->equals($other->selector) && $this->combinators === $other->combinators; } /** * Returns a copy of $this with $combinators added to the end of * `$this->combinators`. * * @param list<string> $combinators * * @return ComplexSelectorComponent * * @phpstan-param list<Combinator::*> $combinators */ public function withAdditionalCombinators(array $combinators): ComplexSelectorComponent { if ($combinators === []) { return $this; } return new ComplexSelectorComponent($this->selector, array_merge($this->combinators, $combinators)); } }