function CssPreprocessor($content, $type) { if ($type == 'css') { } else { if ($type == 'less') { try { $parser = new Less_Parser(); $parser->parse($content); $content = $parser->getCss(); } catch (Exception $e) { var_dump($e->getMessage()); } } else { if ($type == 'sass') { $scss = new scssc(); $content = $scss->compile($content); } else { if ($type == 'stylus') { $stylus = new Stylus(); $content = $stylus->fromString($content)->toString(); } } } } return $content; }
/** * Compile SCSS * * @return string */ function mob_admin_compile_scss($scss_folder, $css_folder, $format_style = "scss_formatter") { // scssc will be loaded automatically via Composer $scss_compiler = new scssc(); // set the path where your _mixins are $scss_compiler->setImportPaths($scss_folder); // set css formatting (normal, nested or minimized), @see http://leafo.net/scssphp/docs/#output_formatting $scss_compiler->setFormatter($format_style); // get all .scss files from scss folder $filelist = glob($scss_folder . "*.scss"); try { // step through all .scss files in that folder foreach ($filelist as $file_path) { // get path elements from that file $file_path_elements = pathinfo($file_path); // get file's name without extension $file_name = $file_path_elements['filename']; // get .scss's content, put it into $string_sass $string_sass = mob_file_read($scss_folder . $file_name . ".scss"); // compile this SASS code to CSS $string_css = $scss_compiler->compile($string_sass); // write CSS into file with the same filename, but .css extension mob_file_write($css_folder . $file_name . ".css", $string_css); } } catch (Exception $e) { return $e->getMessage(); } }
/** * Compiles all .scss files in a given folder into .css files in a given folder * * @param string $scss_folder source folder where you have your .scss files * @param string $css_folder destination folder where you want your .css files * @param string $format_style CSS output format, see http://leafo.net/scssphp/docs/#output_formatting for more. */ public static function run($scss_folder, $css_folder, $format_style = "scss_formatter", $file_append = false) { // scssc will be loaded automatically via Composer $scss_compiler = new scssc(); // set the path where your _mixins are $scss_compiler->setImportPaths($scss_folder); // set css formatting (normal, nested or minimized), @see http://leafo.net/scssphp/docs/#output_formatting $scss_compiler->setFormatter($format_style); // create master css file if (!is_dir($css_folder) && $file_append == false) { file_put_contents($css_folder, ""); } if (is_dir($scss_folder)) { $scan = scandir($scss_folder); } else { $scan = [$scss_folder]; } if (!file_exists($scss_folder)) { throw new Exception("Arquivo inexistente: {$scss_folder}"); } foreach ($scan as $file) { if (in_array($file, array(".", ".."))) { continue; } if (is_dir($scss_folder)) { if (!file_exists($css_folder . $file)) { if (is_dir($css_folder)) { if (!mkdir($css_folder . $file . "/")) { throw new Exception("Falha ao compilar arquivo .scss. Não foi possível criar a pasta {$css_folder}{$file}/"); } if (!chmod($css_folder . $file, 0755)) { throw new Exception("Falha ao compilar arquivo .scss. Não foi possível mudar a permissão do arquivo {$css_folder}{$file}/ para 755 (rwxr-xr-x)"); } } } if (is_dir($css_folder)) { self::run($scss_folder . $file . "/", $css_folder . $file . "/", $format_style); } else { self::run($scss_folder . $file, $css_folder, $format_style); } } else { if (preg_match('/(.*).scss$/', $file) and $file[0] != '.') { // get path elements from that file $file_path_elements = pathinfo($file); // get file's name without extension $file_name = $file_path_elements['filename']; // get .scss's content, put it into $string_sass $string_sass = file_get_contents($scss_folder); // compile this SASS code to CSS $string_css = $scss_compiler->compile($string_sass); // write CSS into file with the same filename, but .css extension if (is_dir($css_folder)) { file_put_contents($css_folder . $file_name . ".css", $string_css); } else { file_put_contents($css_folder, $string_css, FILE_APPEND); } } } } }
public static function compile_sass($parent) { if (!empty(self::$path)) { require "scssphp/scss.inc.php"; $scss = new scssc(); $scss->setImportPaths(self::$path); if (!$parent->args['dev_mode']) { $scss->setFormatter("scss_formatter_compressed"); } $new_css = ''; foreach (self::$import as $import) { $new_css .= $scss->compile($import); } if ($new_css != '') { if ($parent->args['sass']['page_output']) { echo '<style type="text/css" id="redux-' . $parent->args['opt_name'] . '">' . $new_css . '</style>'; } else { //Redux_Functions::initWpFilesystem(); //global $wp_filesystem; $filesystem = $parent->filesystem; $css_file = Redux_Helpers::cleanFilePath(ReduxFramework::$_upload_dir . $parent->args['opt_name'] . '-redux.css'); //$ret_val = $wp_filesystem->put_contents($css_file, $new_css, FS_CHMOD_FILE); $ret_val = $filesystem->execute('put_contents', $css_file, array('content' => $new_css)); } } } }
public static function compile_sass($parent) { if (!empty(self::$path)) { if (!class_exists('scssc') && !isset($GLOBALS['redux_scss_compiler'])) { $GLOBALS['redux_scss_compiler'] = true; require "scssphp/scss.inc.php"; } $scss = new scssc(); $scss->setImportPaths(self::$path); if (!$parent->args['dev_mode']) { $scss->setFormatter("scss_formatter_compressed"); } $new_css = ''; foreach (self::$import as $import) { $new_css .= $scss->compile($import); } if ($new_css != '') { if ($parent->args['sass']['page_output']) { echo '<style type="text/css" id="redux-' . $parent->args['opt_name'] . '">' . $new_css . '</style>'; } else { $filesystem = $parent->filesystem; $css_file = Redux_Helpers::cleanFilePath(ReduxFramework::$_upload_dir . $parent->args['opt_name'] . '-redux.css'); $ret_val = $filesystem->execute('put_contents', $css_file, array('content' => $new_css)); } } } }
/** * Compiles all .scss files in a given folder into .css files in a given folder * * @param string $scss_folder source folder where you have your .scss files * @param string $css_folder destination folder where you want your .css files * @param string $format_style CSS output format, see http://leafo.net/scssphp/docs/#output_formatting for more. */ public static function run($scss_folder, $css_folder, $format_style = "scss_formatter") { // scssc will be loaded automatically via Composer $scss_compiler = new scssc(); // set the path where your _mixins are $scss_compiler->setImportPaths($scss_folder); // set css formatting (normal, nested or minimized), @see http://leafo.net/scssphp/docs/#output_formatting $scss_compiler->setFormatter($format_style); // get all .scss files from scss folder $filelist = glob($scss_folder . "*.scss"); // step through all .scss files in that folder foreach ($filelist as $file_path) { // get path elements from that file $file_path_elements = pathinfo($file_path); // get file's name without extension $file_name = $file_path_elements['filename']; // get .scss's content, put it into $string_sass $string_sass = file_get_contents($scss_folder . $file_name . ".scss"); // compile this SASS code to CSS $string_css = $scss_compiler->compile($string_sass); // create target directory if doesn't exist if (!is_dir($css_folder)) { mkdir($css_folder, 0777, true); } // write CSS into file with the same filename, but .css extension file_put_contents($css_folder . $file_name . ".css", $string_css); } }
/** * @see PreFileFilter::__invoke() */ public function __invoke($code, \Lohini\WebLoader\WebLoader $loader, $file = NULL) { if ($file === NULL || strtolower(pathinfo($file, PATHINFO_EXTENSION)) != 'scss') { return $code; } $filter = new \scssc($file); return $filter->compile(); }
function compileScss() { require "scss.inc.php"; $scss = new scssc(); $scss->setImportPaths(get_stylesheet_directory() . '/assets/scss/'); $scss->setFormatter('scss_formatter_compressed'); file_put_contents(get_stylesheet_directory() . '/assets/css/global-gen.css', $scss->compile('@import "global.scss"')); }
public function init($css = '') { require "compass/vendor/autoload.php"; require "compass/compass.inc.php"; $scss = new scssc(); new scss_compass($scss); return $scss->compile('@import "compass";' . $css); }
/** Default RudraX Plug * * @RequestMapping(url="scss/{mdfile}",type=css) * */ function serveStyle($mdfile) { include_once LIB_PATH . "/leafo/scssphp/scss.inc.php"; $scss = new scssc(); $scss->setFormatter("scss_formatter_compressed"); $server = new scss_server(get_include_path(), get_include_path() . BUILD_PATH . "/scss/", $scss); $server->serve(); }
public function filterLoad(AssetInterface $asset) { $root = $asset->getSourceRoot(); $path = $asset->getSourcePath(); $lc = new \scssc(); if ($root && $path) { $lc->addImportPath(dirname($root . '/' . $path)); } $asset->setContent($lc->compile($asset->getContent())); }
function jetpack_sass_css_preprocess($sass) { require_once dirname(__FILE__) . '/preprocessors/scss.inc.php'; $compiler = new scssc(); try { return $compiler->compile($sass); } catch (Exception $e) { return $sass; } }
/** * Set values for Wp_Scss::properties * * @param string scss_dir - path to source directory for scss files * @param string css_dir - path to output directory for css files * @param string method - type of compile (compressed, expanded, etc) * * @var object scssc - instantiate the compiling object. * * @var array compile_errors - catches errors from compile */ public function __construct($scss_dir, $css_dir, $compile_method) { $this->scss_dir = $scss_dir; $this->css_dir = $css_dir; $this->compile_method = $compile_method; global $scssc; $scssc = new scssc(); $scssc->setFormatter($compile_method); $scssc->setImportPaths($scss_dir); $this->compile_errors = array(); }
/** * @return scssc */ private function get_compiler() { if (is_null($this->compiler)) { if (!class_exists('scssc')) { require_once dirname(__FILE__) . '/Compiler/lib/scssphp/scss.inc.php'; } $this->compiler = new scssc(); $this->compiler->setImportPaths($this->get_import_paths()); $this->compiler->setFormatter('scss_formatter_compressed'); } return $this->compiler; }
public static function parse($source, $isFile = true) { $parser = new scssc(); if ($isFile) { $parser->setImportPaths(dirname($source)); } try { return $isFile ? $parser->compile('@import "' . basename($source) . '"') : $parser->compile($source); } catch (Exception $e) { return '/** SASS PARSE ERROR: ' . $e->getMessage() . ' **/'; } }
/** * Runs `scssc` against any files that match the configured extension. * * @param string $filename The name of the input file. * @param string $input The content of the file. * @throws Exception * @return string */ public function input($filename, $input) { if (substr($filename, strlen($this->_settings['ext']) * -1) !== $this->_settings['ext']) { return $input; } App::import('Vendor', 'scssc', array('file' => $this->_settings['path'])); if (!class_exists('scssc')) { throw new Exception(sprintf('Cannot not load filter class "%s".', 'scssc')); } $sc = new scssc(); $sc->addImportPath(dirname($filename)); return $sc->compile($input); }
public function filterLoad(AssetInterface $asset) { $lc = new \scssc(); if ($this->compass) { new \scss_compass($lc); } if ($dir = $asset->getSourceDirectory()) { $lc->addImportPath($dir); } foreach ($this->importPaths as $path) { $lc->addImportPath($path); } $asset->setContent($lc->compile($asset->getContent())); }
public function run_compiler($scss_dir, $sass_vars, $sass_import_file, $css_name, $compile_method = 'scss_formatter_nested') { require_once WPCSC_PLUGIN_DIR . '/scssphp/scss.inc.php'; $scss = new scssc(); $scss->setImportPaths($scss_dir); $scss->setFormatter($compile_method); $scss->setVariables($sass_vars); $new_css = $scss->compile($sass_import_file); /* Write the CSS to the Database */ $wpcscOptions = get_option('wpcsc1208_option_settings'); /* Sanitze the CSS before going into the Database Refer to this doc, http://wptavern.com/wordpress-theme-review-team-sets-new-guidelines-for-custom-css-boxes */ $wpcscOptions['wpcsc_content'][$css_name] = wp_kses($new_css, array('\'', '\\"')); update_option('wpcsc1208_option_settings', $wpcscOptions); }
/** * Compile the SCSS. * * @return string */ protected function compile_scss() { if (!class_exists('scssc') && !class_exists('scss_formatter_nested')) { include_once 'libs/class-scss.php'; } // Get options $colors = WC_Colors::get_options(get_option('woocommerce_colors')); ob_start(); include 'views/scss.php'; $scss = ob_get_clean(); $compiler = new scssc(); $compiler->setFormatter('scss_formatter_compressed'); $compiled_css = $compiler->compile(trim($scss)); return $compiled_css; }
protected function compile($css) { $scss = new scssc(); $scss->setImportPaths(maxButtons::get_plugin_path() . "assets/scss"); //$scss->setFormatter('scss_formatter_compressed'); $compile = " @import '_mixins.scss'; " . $css; maxButtonsUtils::addTime("CSSParser: Compile start "); try { $css = $scss->compile($compile); } catch (Exception $e) { $css = $this->output_css; } maxButtonsUtils::addTime("CSSParser: Compile end "); return $css; }
/** * Process scss file * * @param string $filename * @return array */ public static function serve($filename) { $result = ['success' => false, 'error' => [], 'data' => '']; // try to get scss file $scss_string = file_get_contents($filename); if ($scss_string === false) { $result['error'][] = 'Scss file does not exists!'; } else { $scss_compiler = new scssc(); $scss_compiler->setFormatter('scss_formatter'); $result['data'] = $scss_compiler->compile($scss_string); $result['success'] = true; } return $result; }
public function compile($scss_folder, $scss_filename, $stylename, $format_style = "scss_formatter") { require_once plugin_dir_path(__FILE__) . 'lib/scssphp/scss.inc.php'; $scss_compiler = new scssc(); $scss_compiler->setImportPaths($scss_folder); $scss_compiler->setFormatter($format_style); try { $file = $scss_filename; $content = file_get_contents($file); $string_css = $scss_compiler->compile($content); file_put_contents($stylename, $string_css); } catch (Exception $e) { echo $e->getMessage(); } }
public function compile() { // go on even if user "stops" the script by closing the browser, closing the terminal etc. ignore_user_abort(true); // set script running time to unlimited set_time_limit(0); $root_dir = $this->root_dir; $scss_compiler = new scssc(); $scss_compiler->setNumberPrecision(10); $scss_compiler->stripComments = $this->strip_comments; $scss_compiler->addImportPath(function ($path) use($root_dir) { $path = $root_dir . $path . '.scss'; $path_parts = pathinfo($path); $underscore_file = $path_parts['dirname'] . '/_' . $path_parts['basename']; if (file_exists($underscore_file)) { $path = $underscore_file; } if (!file_exists($path)) { return null; } return $path; }); // set the path to your to-be-imported mixins. please note: custom paths are coming up on future releases! //$scss_compiler->setImportPaths($scss_folder); // set css formatting (normal, nested or minimized), @see http://leafo.net/scssphp/docs/#output_formatting $scss_compiler->setFormatter($this->formatter); // get .scss's content, put it into $string_sass $string_sass = ''; if (is_array($this->scss_file)) { foreach ($this->scss_file as $scss_file) { $string_sass .= file_get_contents($scss_file); } } else { $string_sass = file_get_contents($this->scss_file); } // try/catch block to prevent script stopping when scss compiler throws an error try { // compile this SASS code to CSS $string_css = $scss_compiler->compile($string_sass) . "\n"; // $string_css = csscrush_string($string_css, $options = array('minify' => true)); // write CSS into file with the same filename, but .css extension file_put_contents($this->css_file, $string_css); } catch (Exception $e) { // here we could put the exception message, but who cares ... echo $e->getMessage(); exit; } }
/** * Compile function. Returns a compile content, or writes it to a file if path is specified. * * @param null|string $file * @return string|true */ public function compile($path = null) { parent::compile(); $file = $this->getMinifiedResource(); $file->rewind(); $scss = new \scssc(); $string = $scss->compile($file->read()); if (null !== $path) { $file2 = new FileObject($path, 'w+'); $file2->write($string); $string = true; } unset($file); unset($file2); return $string; }
public function compile($scss_folder, $css_folder, $dynamic_scss_file, $scss_files, $css_file, $format_style = "scss_formatter") { // load the compiler script (scssphp), more here: http://www.leafo.net/scssphp require_once "scssphp/scss.inc.php"; $scss_compiler = new scssc(); // set the path to your to-be-imported mixins. please note: custom paths are coming up on future releases! $scss_compiler->setImportPaths($scss_folder); // set css formatting (normal, nested or minimized), @see http://leafo.net/scssphp/docs/#output_formatting $scss_compiler->setFormatter($format_style); $string_sass = ''; $string_css = ''; if (file_exists($dynamic_scss_file)) { $string_sass .= file_get_contents($dynamic_scss_file); } // step through all .scss files in that folder foreach ($scss_files as $file) { $file_path = $scss_folder . $file; if (!file_exists($file_path)) { continue; } // get .scss's content, put it into $string_sass $string_sass .= file_get_contents($file_path); } // try/catch block to prevent script stopping when scss compiler throws an error try { // compile this SASS code to CSS $string_css = $scss_compiler->compile($string_sass); // write CSS into file with the same filename, but .css extension file_put_contents($css_folder . $css_file, $string_css); } catch (Exception $e) { $this->print_error($e->getMessage()); } }
/** * Process file content * * @param File $asset * @return string */ public function processContent(File $asset) { $path = $asset->getPath(); try { $compiler = new \scssc(); $content = $this->assetSource->getContent($asset); if (trim($content) === '') { return ''; } return $compiler->compile($content); } catch (\Exception $e) { $errorMessage = PHP_EOL . self::ERROR_MESSAGE_PREFIX . PHP_EOL . $path . PHP_EOL . $e->getMessage(); $this->logger->critical($errorMessage); return $errorMessage; } }
/** * Compile the SCSS * @param \Contao\ThemeModel * @param boolean */ public static function compile(\Contao\ThemeModel $objTheme, $blnForce = false) { if (!self::confirmDependencies()) { return; } //Get file key $strKey = self::getKey($objTheme); //Set file path $strCSSPath = 'assets/foundation/css/' . $strKey . '.css'; //Compile the scss if (!file_exists(TL_ROOT . '/' . $strCSSPath) || $blnForce) { //Gather up the SCSS files in the assets/foundation/scss folder //This allows to work with different configs and edit defaults //Without affecting the original source $strBasePath = COMPOSER_DIR_RELATIVE . '/vendor/zurb/foundation/scss'; $strCopyPath = 'assets/foundation/scss/' . $strKey; //Create new folder if not exists and clean it out $objNew = new \Folder($strCopyPath); $objNew->purge(); $objOriginal = new \Folder($strBasePath); $objOriginal->copyTo($strCopyPath); //Apply the config self::applyConfig($objTheme, $strCopyPath); $strFoundationCSS = ''; $strNormalizeCSS = ''; //Create the SCSS compiler if (class_exists('scssc')) { $objCompiler = new \scssc(); $objCompiler->setImportPaths(TL_ROOT . '/' . $strCopyPath); $objCompiler->setFormatter(\Config::get('debugMode') ? 'scss_formatter' : 'scss_formatter_compressed'); } else { $objCompiler = new Compiler(); $objCompiler->setImportPaths(TL_ROOT . '/' . $strCopyPath); $objCompiler->setFormatter(\Config::get('debugMode') ? 'Leafo\\ScssPhp\\Formatter\\Expanded' : 'Leafo\\ScssPhp\\Formatter\\Compressed'); } $strFoundationContent = file_get_contents(TL_ROOT . '/' . $strCopyPath . '/foundation.scss'); $strNormalizeContent = file_get_contents(TL_ROOT . '/' . $strCopyPath . '/normalize.scss'); //Compile $strFoundationCSS = $objCompiler->compile($strFoundationContent); $strNormalizeCSS = $objCompiler->compile($strNormalizeContent); //Write to single CSS file cache $objFile = new \File($strCSSPath); $objFile->write($strNormalizeCSS . "\n" . $strFoundationCSS); $objFile->close(); } return $strCSSPath; }
public function filterLoad(AssetInterface $asset) { $sc = new \scssc(); if ($this->compass) { new \scss_compass($sc); } if ($dir = $asset->getSourceDirectory()) { $sc->addImportPath($dir); } foreach ($this->importPaths as $path) { $sc->addImportPath($path); } foreach ($this->customFunctions as $name => $callable) { $sc->registerFunction($name, $callable); } $asset->setContent($sc->compile($asset->getContent())); }
function cuttz_scss_compile() { if (!current_user_can('update_themes')) { return; } $scss = new scssc(); $scss->setFormatter('scss_formatter'); if (file_exists(CHILD_DIR . '/lib/stylesheet-core/style.scss')) { if (filemtime(CHILD_DIR . '/lib/stylesheet-core/style.scss') > filemtime(CHILD_DIR . '/style.css')) { $css = "@charset \"UTF-8\"; \n\n/*S********************************************************************************\n******************** Make all your changes to themes/cuttz/lib/stylesheet-core/style.scss **************************\n**** This file will be overwritten by style.scss and your changes will be lost ****\n**********************************************************************************/\n\n"; $css = ''; $css .= $scss->compile('@import "' . CHILD_DIR . '/lib/stylesheet-core/style.scss' . '"'); file_put_contents(CHILD_DIR . '/style.css', $css); if (function_exists('w3tc_browsercache_flush')) { //check if W3Total cache is installed and active w3tc_browsercache_flush(); //flush the w3tc browser cache to fetch the new css } } } if (file_exists(cuttz_current_skin_path() . '/style.scss')) { if (filemtime(cuttz_current_skin_path() . '/style.scss') > @filemtime(cuttz_current_skin_path() . '/autogenerated.css')) { $css = "@charset \"UTF-8\"; \n\n/*D*********************************************************************************\n******************** Make all your changes to style.scss **************************\n**** This file will be overwritten by style.scss and your changes will be lost ****\n**********************************************************************************/\n\n"; $css .= $scss->compile('@import "' . cuttz_current_skin_path() . '/style.scss' . '"'); file_put_contents(cuttz_current_skin_path() . '/autogenerated.css', $css); if (function_exists('w3tc_browsercache_flush')) { //check if W3Total cache is installed and active w3tc_browsercache_flush(); //flush the w3tc browser cache to fetch the new css } } } $user_dir = cuttz_get_res('dir'); if (file_exists($user_dir . 'style.scss')) { if (filemtime($user_dir . 'style.scss') > @filemtime($user_dir . 'autogenerated.css')) { $css = "@charset \"UTF-8\"; \n\n/*U********************************************************************************\n******************** Make all your changes to style.scss **************************\n**** This file will be overwritten by style.scss and your changes will be lost ****\n**********************************************************************************/\n\n"; $css .= $scss->compile('@import "' . $user_dir . 'style.scss' . '"'); file_put_contents($user_dir . 'autogenerated.css', $css); if (function_exists('w3tc_browsercache_flush')) { //check if W3Total cache is installed and active w3tc_browsercache_flush(); //flush the w3tc browser cache to fetch the new css } } } }
private function compile($css) { $scss = new scssc(); $scss->setImportPaths(maxButtons::get_plugin_path() . "assets/"); $compile = " @import 'mixins.scss'; " . $css; $css = $scss->compile($compile); /* try { } catch (Exception $e) { //print_R($e); echo "Warning: Parse failed"; //throw new compileException("Compile failed"); } */ return $css; }