%PDF- %PDF-
| Direktori : /home/qgbqkvz/www/wp-content/plugins/wp-scss/scssphp/src/Ast/Sass/Statement/ |
| Current File : /home/qgbqkvz/www/wp-content/plugins/wp-scss/scssphp/src/Ast/Sass/Statement/ParentStatement.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\Import\DynamicImport;
use ScssPhp\ScssPhp\Ast\Sass\Statement;
/**
* A {@see Statement} that can have child statements.
*
* This has a generic parameter so that its subclasses can choose whether or
* not their children lists are nullable.
*
* @template T
* @psalm-template T of (Statement[]|null)
*
* @internal
*/
abstract class ParentStatement implements Statement
{
/**
* @var T
* @readonly
*/
private $children;
/**
* @var bool
* @readonly
*/
private $declarations;
/**
* @param T $children
*/
public function __construct(?array $children)
{
$this->children = $children;
if ($children === null) {
$this->declarations = false;
return;
}
foreach ($children as $child) {
if ($child instanceof VariableDeclaration || $child instanceof FunctionRule || $child instanceof MixinRule) {
$this->declarations = true;
return;
}
if ($child instanceof ImportRule) {
foreach ($child->getImports() as $import) {
if ($import instanceof DynamicImport) {
$this->declarations = true;
return;
}
}
}
}
$this->declarations = false;
}
/**
* @return T
*/
final public function getChildren()
{
return $this->children;
}
final public function hasDeclarations(): bool
{
return $this->declarations;
}
}