%PDF- %PDF-
Direktori : /home/q/g/b/qgbqkvz/www/wp-content/plugins/wp-scss/scssphp/src/Ast/Sass/Statement/ |
Current File : /home/q/g/b/qgbqkvz/www/wp-content/plugins/wp-scss/scssphp/src/Ast/Sass/Statement/IfRule.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\Sass\Statement; use ScssPhp\ScssPhp\Ast\Sass\Statement; use ScssPhp\ScssPhp\SourceSpan\FileSpan; use ScssPhp\ScssPhp\Visitor\StatementVisitor; /** * An `@if` rule. * * This conditionally executes a block of code. * * @internal */ final class IfRule implements Statement { /** * @var IfClause[] * @readonly */ private $clauses; /** * @var ElseClause|null * @readonly */ private $lastClause; /** * @var FileSpan * @readonly */ private $span; /** * @param IfClause[] $clauses */ public function __construct(array $clauses, FileSpan $span, ?ElseClause $lastClause = null) { $this->clauses = $clauses; $this->span = $span; $this->lastClause = $lastClause; } /** * The `@if` and `@else if` clauses. * * The first clause whose expression evaluates to `true` will have its * statements executed. If no expression evaluates to `true`, `lastClause` * will be executed if it's not `null`. * * @return IfClause[] */ public function getClauses(): array { return $this->clauses; } /** * The final, unconditional `@else` clause. * * This is `null` if there is no unconditional `@else`. * * @return ElseClause|null */ public function getLastClause(): ?ElseClause { return $this->lastClause; } public function getSpan(): FileSpan { return $this->span; } public function accept(StatementVisitor $visitor) { return $visitor->visitIfRule($this); } public function __toString(): string { $parts = []; foreach ($this->clauses as $index => $clause) { $parts[] = ($index === 0 ? '@if ' : '@else if ') . $clause->getExpression() . '{' . implode(' ', $clause->getChildren()) . '}'; } if ($this->lastClause !== null) { $parts[] = $this->lastClause; } return implode(' ', $parts); } }