public function testCompileForImport() { $env = new Context(); $d = new ImportNode(new UrlNode(new QuotedNode('"foobar.css"', 'foobar.css'))); $result = $d->compileForImport($env); $this->assertInstanceOf('ILess\\Node\\ImportNode', $result); }
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(); } }