/** * Constructor. * * @param string $name The name * @param array|string $value The value * @param RulesetNode|null|array $rules * @param int $index The index * @param FileInfo $currentFileInfo Current file info * @param DebugInfo $debugInfo The debug information * @param bool $isReferenced Is referenced? * @param bool $isRooted Is rooted? */ public function __construct($name, $value, $rules = null, $index = 0, FileInfo $currentFileInfo = null, DebugInfo $debugInfo = null, $isReferenced = false, $isRooted = false) { $this->name = $name; parent::__construct($value); if (null !== $rules) { if (is_array($rules)) { $this->rules = $rules; } else { $this->rules = [$rules]; $selectors = new SelectorNode([], [], null, $index, $currentFileInfo); $this->rules[0]->selectors = $selectors->createEmptySelectors(); } for ($i = 0; $i < count($this->rules); ++$i) { $this->rules[$i]->allowImports = true; } } else { // null $this->rules = $rules; } $this->index = $index; $this->currentFileInfo = $currentFileInfo; $this->debugInfo = $debugInfo; $this->isReferenced = $isReferenced; $this->isRooted = $isRooted; }
/** * Compiles top media * * @param Context $context * @return RulesetNode */ public function compileTop(Context $context) { $result = $this; if (count($context->mediaBlocks) > 1) { $selector = new SelectorNode([], [], null, $this->index, $this->currentFileInfo); $selectors = $selector->createEmptySelectors(); $result = new RulesetNode($selectors, $context->mediaBlocks); $result->multiMedia = true; } $context->mediaBlocks = []; $context->mediaPath = []; return $result; }