/** * Adds a chunk to the stack * * @param string $chunk * @param string $fileInfo * @param integer $index * @param mixed $mapLines * @return ILess_Output */ public function add($chunk, ILess_FileInfo $fileInfo = null, $index = 0, $mapLines = null) { // nothing to do if ($chunk == '') { return $this; } $lines = explode("\n", $chunk); $columns = end($lines); if ($fileInfo) { $inputSource = substr($this->contentsMap[$fileInfo->importedFile->getPath()], 0, $index); $sourceLines = explode("\n", $inputSource); $sourceColumns = end($sourceLines); $sourceLinesCount = count($sourceLines); $sourceColumnsLength = strlen($sourceColumns); if (!$mapLines) { $this->generator->addMapping($this->lineNumber + 1, $this->column, $sourceLinesCount, $sourceColumnsLength, $fileInfo->filename); } else { for ($i = 0, $count = count($lines); $i < $count; $i++) { $this->generator->addMapping($this->lineNumber + $i + 1, $i === 0 ? $this->column : 0, $sourceLinesCount + $i, $i === 0 ? $sourceColumnsLength : 0, $fileInfo->filename); } } } if (count($lines) === 1) { $this->column += strlen($columns); } else { $this->lineNumber += count($lines) - 1; $this->column = strlen($columns); } // add only chunk return parent::add($chunk); }
/** * Converts the ruleset to CSS * * @param ILess_Node_Ruleset $ruleset * @param array $variables * @return string The generated CSS code */ protected function toCSS(ILess_Node_Ruleset $ruleset, array $variables) { $this->setupMathAndLocale(); $this->prepareVariables($this->env, $variables); // precompilation visitors foreach ($this->getPreCompileVisitors() as $visitor) { $visitor->run($ruleset); } // compile the ruleset $compiled = $ruleset->compile($this->env); // post compilation visitors foreach ($this->getPostCompileVisitors() as $visitor) { $visitor->run($compiled); } if ($this->getEnvironment()->sourceMap) { $generator = new ILess_SourceMap_Generator($compiled, $this->env->getContentsMap(), $this->env->sourceMapOptions); // will also save file // FIXME: should happen somewhere else? $css = $generator->generateCSS($this->env); } else { $css = $compiled->toCSS($this->env); } if ($this->env->compress) { $css = preg_replace('/(^(\\s)+)|((\\s)+$)/', '', $css); } $this->restoreMathAndLocale(); return $css; }
public function generateJson() { return parent::generateJson(); }