protected function compile() { $inputDir = dirname($this->inputFiles[0]); $outputDir = dirname($this->outputFile); $error = null; if (!file_exists($outputDir)) { mkdir($outputDir, 0755, true); } if ($command = self::isInstalled()) { $command = sprintf('%s %s %s 2>&1', $command, escapeshellarg($this->inputFiles[0]), escapeshellarg($this->outputFile)); exec($command, $out, $code); if ($code) { $error = implode("\n", $out); } else { $code = file_get_contents($this->outputFile); file_put_contents($this->outputFile, AutoBuildPrefixer::addPrefixes($code)); } } else { $error = 'Cannot found command "sassc" or "scss".'; } if ($error) { $css = file_get_contents($this->outputFiles[0]); $css .= 'html:after{display:block;position:fixed;bottom:0;left:0;width:100%;padding:1em;font:12px mono;text-align:left;background:#d34;color:white;white-space:pre-wrap;content:' . str_replace('\\n', '\\00000a', json_encode($error)) . '}'; file_put_contents($this->outputFile, $css); } }
protected function compile() { if (!class_exists('scssc')) { require_once __DIR__ . '/scss.inc.php'; } $inputDir = dirname($this->inputFiles[0]); $outputDir = dirname($this->outputFile); $scss = new scssc(); $scss->setFormatter('scss_formatter_compressed'); $scss->setImportPaths($inputDir); if (!file_exists($outputDir)) { mkdir($outputDir, 0755, true); } try { $content = file_get_contents($this->inputFiles[0]); $css = $scss->compile($content); $css = AutoBuildPrefixer::addPrefixes($css); } catch (Exception $e) { $css = file_get_contents($this->outputFiles[0]); $css .= 'html:after{display:block;position:fixed;bottom:0;left:0;width:100%;padding:1em;font:14px sans;text-align:center;background:#d34;color:white;content:' . json_encode($e->getMessage()) . '}'; } file_put_contents($this->outputFile, $css); }