. /** * Moodle implementation of SCSS. * * @package core * @copyright 2016 Frédéric Massart * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ defined('MOODLE_INTERNAL') || die(); /** * Moodle SCSS compiler class. * * @package core * @copyright 2016 Frédéric Massart * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ class core_scss extends \Leafo\ScssPhp\Compiler { /** @var string The path to the SCSS file. */ protected $scssfile; /** @var array Bits of SCSS content to prepend. */ protected $scssprepend = array(); /** @var array Bits of SCSS content. */ protected $scsscontent = array(); /** * Add variables. * * @param array $scss Associative array of variables and their values. * @return void */ public function add_variables(array $variables) { $this->setVariables($variables); } /** * Append raw SCSS to what's to compile. * * @param string $scss SCSS code. * @return void */ public function append_raw_scss($scss) { $this->scsscontent[] = $scss; } /** * Prepend raw SCSS to what's to compile. * * @param string $scss SCSS code. * @return void */ public function prepend_raw_scss($scss) { $this->scssprepend[] = $scss; } /** * Set the file to compile from. * * The purpose of this method is to provide a way to import the * content of a file without messing with the import directories. * * @param string $filepath The path to the file. * @return void */ public function set_file($filepath) { $this->scssfile = $filepath; $this->setImportPaths([dirname($filepath)]); } /** * Compiles to CSS. * * @return string */ public function to_css() { $content = implode(';', $this->scssprepend); if (!empty($this->scssfile)) { $content .= file_get_contents($this->scssfile); } $content .= implode(';', $this->scsscontent); return $this->compile($content); } }