예제 #1
0
 /**
  * Compare the parser results with the expected css
  *
  */
 function CompareFile($expected_file)
 {
     $less_file = $this->TranslateFile($expected_file);
     $expected_css = trim(file_get_contents($expected_file));
     // Check with standard parser
     echo "\n  " . basename($expected_file);
     echo "\n    - Standard Compiler";
     $parser = new Less_Parser();
     $parser->parseFile($less_file);
     $css = $parser->getCss();
     $css = trim($css);
     $this->assertEquals($expected_css, $css);
     // Check with cache
     if ($this->cache_dir) {
         $options = array('cache_dir' => $this->cache_dir);
         $files = array($less_file => '');
         echo "\n    - Regenerating Cache";
         $css_file_name = Less_Cache::Regen($files, $options);
         $css = file_get_contents($this->cache_dir . '/' . $css_file_name);
         $css = trim($css);
         $this->assertEquals($expected_css, $css);
         // Check using the cached data
         echo "\n    - Using Cache";
         $css_file_name = Less_Cache::Get($files, $options);
         $css = file_get_contents($this->cache_dir . '/' . $css_file_name);
         $css = trim($css);
         $this->assertEquals($expected_css, $css);
     }
 }
예제 #2
0
 /**
  * Compile a LESS file inside a theme.
  *
  * @param string $theme Theme containing file
  * @param string $less  Relative path to LESS file
  *
  * @return void
  */
 protected function compileFile($theme, $less)
 {
     $parts = explode(':', $less);
     $less = $parts[0];
     $finalOutDir = $this->basePath . '/themes/' . $theme . '/css/';
     list($fileName, ) = explode('.', $less);
     $finalFile = $finalOutDir . $fileName . '.css';
     $this->logMessage("\tcompiling '" . $less . "' into '" . $finalFile . "'");
     $start = microtime(true);
     $directories = [];
     $info = new ThemeInfo($this->basePath . '/themes', $theme);
     foreach (array_keys($info->getThemeInfo()) as $curTheme) {
         $directories["{$this->basePath}/themes/{$curTheme}/less/"] = $this->fakePath . "themes/{$curTheme}/css/less";
     }
     $lessDir = $this->basePath . '/themes/' . $theme . '/less/';
     if (!file_exists($lessDir . $less)) {
         $this->logMessage("\t\t" . $lessDir . $less . ' does not exist; skipping.');
         return;
     }
     $outFile = \Less_Cache::Regen([$lessDir . $less => $this->fakePath . "themes/{$theme}/css/less"], ['cache_dir' => $this->tempPath, 'cache_method' => false, 'compress' => true, 'import_dirs' => $directories]);
     $css = file_get_contents($this->tempPath . '/' . $outFile);
     if (!is_dir(dirname($finalFile))) {
         mkdir(dirname($finalFile));
     }
     file_put_contents($finalFile, $this->makeRelative($css, $less));
     $this->logMessage("\t\t" . (microtime(true) - $start) . ' sec');
 }