Example #1
0
 public function testCompile()
 {
     $env = new Context();
     $d = new ImportNode(new UrlNode(new QuotedNode('"foobar.css"', 'foobar.css')));
     $result = $d->compile($env);
     $this->assertInstanceOf('ILess\\Node\\ImportNode', $result);
     $this->assertEquals('@import url("foobar.css");', $result->toCSS($env));
 }
Example #2
0
 private function processImportNode(ImportNode $node, Context $context, $importParent)
 {
     $e = null;
     try {
         $compiledNode = $node->compileForImport($context);
     } catch (Exception $e) {
         $compiledNode = false;
         if (!$e->getCurrentFile()) {
             if ($node->currentFileInfo) {
                 $e->setCurrentFile($node->currentFileInfo, $node->index);
             } else {
                 $e->setIndex($node->index);
             }
         }
         $node->css = true;
         $node->error = $e;
     }
     $inlineCSS = $node->getOption('inline');
     $isPlugin = $node->getOption('plugin');
     if ($compiledNode && (!$compiledNode->css || $inlineCSS)) {
         if ($node->getOption('multiple')) {
             $context->importMultiple = true;
         }
         for ($i = 0; $i < count($importParent->rules); ++$i) {
             if ($importParent->rules[$i] === $node) {
                 $importParent->rules[$i] = $compiledNode;
                 break;
             }
         }
         $tryAppendLessExtension = !$compiledNode->css;
         try {
             // import the file
             list($alreadyImported, $file) = $this->importer->import($compiledNode->getPath(), $tryAppendLessExtension, $compiledNode->currentFileInfo, $compiledNode->options, $compiledNode->index);
             /* @var $file ImportedFile */
             if (!$context->importMultiple) {
                 if ($alreadyImported) {
                     $compiledNode->skip = true;
                 }
             }
             if ($root = $file->getRuleset()) {
                 /* @var $root RulesetNode */
                 $compiledNode->root = $root;
                 $compiledNode->importedFilename = $file->getPath();
                 if (!$inlineCSS && !$isPlugin && ($context->importMultiple || !$alreadyImported)) {
                     $oldEnv = $this->context;
                     $this->context = $context;
                     try {
                         $this->visit($root);
                     } catch (Exception $e) {
                         $this->error = $e;
                     }
                     $this->end = $oldEnv;
                 }
             }
         } catch (ImportException $e) {
             // optional import
             if (isset($compiledNode->options['optional']) && $compiledNode->options['optional']) {
                 // optional import
             } else {
                 $this->error = $e;
             }
         } catch (Exception $e) {
             $this->error = $e;
         }
     }
     --$this->importCount;
     if ($this->isFinished) {
         $this->sequencer->tryRun();
     }
 }