%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/MixinRule.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\ArgumentDeclaration; use ScssPhp\ScssPhp\Ast\Sass\SassDeclaration; use ScssPhp\ScssPhp\Ast\Sass\Statement; use ScssPhp\ScssPhp\SourceSpan\FileSpan; use ScssPhp\ScssPhp\Util\SpanUtil; use ScssPhp\ScssPhp\Visitor\StatementVisitor; /** * A mixin declaration. * * This declares a mixin that's invoked using `@include`. * * @internal */ final class MixinRule extends CallableDeclaration implements SassDeclaration { /** * Whether the mixin contains a `@content` rule. * * @var bool|null */ private $content; /** * @param Statement[] $children */ public function __construct(string $name, ArgumentDeclaration $arguments, FileSpan $span, array $children, ?SilentComment $comment = null) { parent::__construct($name, $arguments, $span, $children, $comment); } public function hasContent(): bool { if (!isset($this->content)) { $this->content = (new HasContentVisitor())->visitMixinRule($this) === true; } return $this->content; } public function getNameSpan(): FileSpan { $startSpan = $this->getSpan()->getText()[0] === '=' ? SpanUtil::trimLeft($this->getSpan()->subspan(1)) : SpanUtil::withoutInitialAtRule($this->getSpan()); return SpanUtil::initialIdentifier($startSpan); } public function accept(StatementVisitor $visitor) { return $visitor->visitMixinRule($this); } public function __toString(): string { $buffer = '@mixin ' . $this->getName(); if (!$this->getArguments()->isEmpty()) { $buffer .= "({$this->getArguments()})"; } $buffer .= ' {' . implode(' ', $this->getChildren()) . '}'; return $buffer; } }