Exemple #1
0
 /**
  * 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);
 }
Exemple #2
0
 /**
  * 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;
 }
Exemple #3
0
 public function generateJson()
 {
     return parent::generateJson();
 }