2 namespace Robo\Task\Assets;
12 * 'less/default.less' => 'css/default.css'
18 * Use one of both less compilers in your project:
21 * "leafo/lessphp": "~0.5",
22 * "oyejorge/less.php": "~1.5"
25 * Specify directory (string or array) for less imports lookup:
30 * 'less/default.less' => 'css/default.css'
33 * ->compiler('lessphp')
38 * You can implement additional compilers by extending this task and adding a
39 * method named after them and overloading the lessCompilers() method to
40 * inject the name there.
42 class Less extends CssPreprocessor
44 const FORMAT_NAME = 'less';
49 protected $compilers = [
50 'less', // https://github.com/oyejorge/less.php
51 'lessphp', //https://github.com/leafo/lessphp
56 * @link https://github.com/leafo/lessphp
62 protected function lessphp($file)
64 if (!class_exists('\lessc')) {
65 return Result::errorMissingPackage($this, 'lessc', 'leafo/lessphp');
68 $lessCode = file_get_contents($file);
71 if (isset($this->compilerOptions['importDirs'])) {
72 $less->setImportDir($this->compilerOptions['importDirs']);
75 return $less->compile($lessCode);
80 * @link https://github.com/oyejorge/less.php
86 protected function less($file)
88 if (!class_exists('\Less_Parser')) {
89 return Result::errorMissingPackage($this, 'Less_Parser', 'oyejorge/less.php');
92 $lessCode = file_get_contents($file);
94 $parser = new \Less_Parser();
95 $parser->SetOptions($this->compilerOptions);
96 if (isset($this->compilerOptions['importDirs'])) {
98 foreach ($this->compilerOptions['importDirs'] as $dir) {
99 $importDirs[$dir] = $dir;
101 $parser->SetImportDirs($importDirs);
104 $parser->parse($lessCode);
106 return $parser->getCss();