%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/Stylesheet.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\Exception\SassFormatException; use ScssPhp\ScssPhp\Logger\LoggerInterface; use ScssPhp\ScssPhp\Parser\CssParser; use ScssPhp\ScssPhp\Parser\ScssParser; use ScssPhp\ScssPhp\SourceSpan\FileSpan; use ScssPhp\ScssPhp\SourceSpan\SourceFile; use ScssPhp\ScssPhp\Syntax; use ScssPhp\ScssPhp\Visitor\StatementVisitor; /** * A Sass stylesheet. * * This is the root Sass node. It contains top-level statements. * * @extends ParentStatement<Statement[]> * * @internal */ final class Stylesheet extends ParentStatement { /** * @var bool * @readonly */ private $plainCss; /** * @var FileSpan * @readonly */ private $span; /** * @param Statement[] $children */ public function __construct(array $children, FileSpan $span, bool $plainCss = false) { $this->span = $span; $this->plainCss = $plainCss; parent::__construct($children); } public function isPlainCss(): bool { return $this->plainCss; } public function getSpan(): FileSpan { return $this->span; } public function accept(StatementVisitor $visitor) { return $visitor->visitStylesheet($this); } /** * @param Syntax::* $syntax * * @throws SassFormatException when parsing fails */ public static function parse(string $contents, string $syntax, ?LoggerInterface $logger = null, ?string $sourceUrl = null): self { switch ($syntax) { case Syntax::SASS: return self::parseSass($contents, $logger, $sourceUrl); case Syntax::SCSS: return self::parseScss($contents, $logger, $sourceUrl); case Syntax::CSS: return self::parseCss($contents, $logger, $sourceUrl); default: throw new \InvalidArgumentException("Unknown syntax $syntax."); } } /** * @throws SassFormatException when parsing fails */ public static function parseSass(string $contents, ?LoggerInterface $logger = null, ?string $sourceUrl = null): self { $file = new SourceFile($contents, $sourceUrl); $span = $file->span(0, 0); throw new SassFormatException('The Sass indented syntax is not implemented.', $span); } /** * @throws SassFormatException when parsing fails */ public static function parseScss(string $contents, ?LoggerInterface $logger = null, ?string $sourceUrl = null): self { return (new ScssParser($contents, $logger, $sourceUrl))->parse(); } /** * @throws SassFormatException when parsing fails */ public static function parseCss(string $contents, ?LoggerInterface $logger = null, ?string $sourceUrl = null): self { return (new CssParser($contents, $logger, $sourceUrl))->parse(); } public function __toString(): string { return implode(' ', $this->getChildren()); } }