コード例 #1
10
 /**
  * Filters an asset after it has been loaded.
  *
  * @param  \Assetic\Asset\AssetInterface  $asset
  * @return void
  */
 public function filterLoad(AssetInterface $asset)
 {
     $max_nesting_level = ini_get('xdebug.max_nesting_level');
     $memory_limit = ini_get('memory_limit');
     if ($max_nesting_level && $max_nesting_level < 200) {
         ini_set('xdebug.max_nesting_level', 200);
     }
     if ($memory_limit && $memory_limit < 256) {
         ini_set('memory_limit', '256M');
     }
     $root = $asset->getSourceRoot();
     $path = $asset->getSourcePath();
     $dirs = array();
     $lc = new \Less_Parser(array('compress' => true));
     if ($root && $path) {
         $dirs[] = dirname($root . '/' . $path);
     }
     foreach ($this->loadPaths as $loadPath) {
         $dirs[] = $loadPath;
     }
     $lc->SetImportDirs($dirs);
     $url = parse_url($this->getRequest()->getUriForPath(''));
     $absolutePath = str_replace(public_path(), '', $root);
     if (isset($url['path'])) {
         $absolutePath = $url['path'] . $absolutePath;
     }
     $lc->parseFile($root . '/' . $path, $absolutePath);
     $asset->setContent($lc->getCss());
 }
コード例 #2
5
ファイル: Oyejorge.php プロジェクト: kid17/magento2
 /**
  * @param string $sourceFilePath
  * @return string
  */
 public function process($sourceFilePath)
 {
     $options = ['relativeUrls' => false, 'compress' => $this->appState->getMode() !== State::MODE_DEVELOPER];
     try {
         $parser = new \Less_Parser($options);
         $parser->parseFile($sourceFilePath, '');
         return $parser->getCss();
     } catch (\Exception $e) {
         $messagePrefix = 'CSS compilation from LESS ';
         $this->logger->critical($messagePrefix . $e->getMessage());
         return $messagePrefix . $e->getMessage();
     }
 }
コード例 #3
0
ファイル: FixturesTest.php プロジェクト: Flesh192/magento
 /**
  * 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);
     }
 }
コード例 #4
0
ファイル: bootstrap.php プロジェクト: juijs/store.jui.io
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;
}
コード例 #5
0
function parse_less($filename, $file)
{
    global $less_file, $is_dev;
    $options = array();
    if ($is_dev) {
        $options['sourceMap'] = true;
        $options['sourceMapWriteTo'] = '../css/' . $file . '.map';
        $options['sourceMapURL'] = '../css/' . $file . '.map';
    } else {
        $options['compress'] = true;
    }
    $options['cache_dir'] = '../css_cache';
    try {
        $parser = new Less_Parser($options);
        $parser->parseFile($less_file, '../css/');
        ob_start();
        echo $parser->getCss();
        $css = ob_get_contents();
        ob_end_clean();
        header("Content-type: text/css");
        @file_put_contents('../css/' . $file . '.css', $css);
        return $css;
    } catch (Exception $e) {
        header("Content-type: text/css");
        echo '/* LESS ERROR : ' . "\n\n" . $e->getMessage() . "\n\n" . '*/';
        showError($file . '.less');
    }
}
コード例 #6
0
ファイル: Less.php プロジェクト: Crecket/dependency-manager
 /**
  * @return string
  */
 public function getFile()
 {
     // TODO use caching from plugin instead of custom caching to avoid import errors
     // Create less parser
     $parser = new \Less_Parser();
     try {
         // Parse file using direct file path
         $parser->parseFile($this->file['path'], '/');
         // Turn less into css
         $contents = $parser->getCss();
         // get all parsed files
         $parsed_files = $parser::AllParsedFiles();
         // reformat to make them the same format as the scss result parsed files list
         $new_list = array();
         foreach ($parsed_files as $parse_file) {
             $new_list[$parse_file] = filemtime($parse_file);
         }
         // store the new list
         $this->cache->save($this->file['hash'] . "parsed_files", $new_list);
     } catch (\Exception $e) {
         return false;
     }
     // fix absolute paths
     $contents = str_replace(array('../'), str_replace(ROOT, "", dirname($this->file['path'])) . '/../', $contents);
     // return css
     return $contents;
 }
コード例 #7
0
ファイル: Processor.php プロジェクト: Doability/magento2dev
 /**
  * @inheritdoc
  * @throws ContentProcessorException
  */
 public function processContent(File $asset)
 {
     $path = $asset->getPath();
     try {
         $parser = new \Less_Parser(['relativeUrls' => false, 'compress' => $this->appState->getMode() !== State::MODE_DEVELOPER]);
         $content = $this->assetSource->getContent($asset);
         if (trim($content) === '') {
             return '';
         }
         $tmpFilePath = $this->temporaryFile->createFile($path, $content);
         gc_disable();
         $parser->parseFile($tmpFilePath, '');
         $content = $parser->getCss();
         gc_enable();
         if (trim($content) === '') {
             $errorMessage = PHP_EOL . self::ERROR_MESSAGE_PREFIX . PHP_EOL . $path;
             $this->logger->critical($errorMessage);
             throw new ContentProcessorException(new Phrase($errorMessage));
         }
         return $content;
     } catch (\Exception $e) {
         $errorMessage = PHP_EOL . self::ERROR_MESSAGE_PREFIX . PHP_EOL . $path . PHP_EOL . $e->getMessage();
         $this->logger->critical($errorMessage);
         throw new ContentProcessorException(new Phrase($errorMessage));
     }
 }
コード例 #8
0
ファイル: CompilerLess.php プロジェクト: nagumo/Phest
 public function compile($source, $pathname)
 {
     $less = new \Less_Parser();
     $less->SetImportDirs(array(dirname($pathname) => './'));
     $less->parse($source);
     return $less->getCss();
 }
コード例 #9
0
 function compile_botstrap_less_adm($theme, $input, $output = '', $compress = false)
 {
     global $cfg;
     $output = empty($output) ? $input : $output;
     $output = $cfg['themes_dir'] . '/admin/' . $theme . '/css/' . $output . '.css';
     $input = $cfg['themes_dir'] . '/admin/' . $theme . '/less/' . $input . '.less';
     if (file_exists($output) && file_exists($input)) {
         $filetimecss = filemtime($output);
         $filetimeless = filemtime($input);
         //	cot_print('css', cot_date('datetime_full', $filetimecss), 'less', cot_date('datetime_full', $filetimeless), cot_date('datetime_full'), $filetimecss > $filetimeless);
         if ($filetimecss > $filetimeless) {
             return false;
         } else {
             unlink($output);
             //	cot_print("deleted");
         }
     }
     $options = array('relativeUrls' => false);
     if ($compress) {
         $options['compress'] = true;
     }
     $parser = new Less_Parser($options);
     $parser->SetImportDirs(array($cfg['themes_dir'] . '/admin/' . $theme . '/less' => $cfg['themes_dir'] . '/admin/' . $theme . '/less', $cfg['plugins_dir'] . "/bootstrap/bootstrap/less" => $cfg['plugins_dir'] . "/bootstrap/bootstrap/less"));
     $parser->parseFile($input);
     $css = $parser->getCss();
     if (!file_exists($cfg['themes_dir'] . '/admin/' . $theme . '/css')) {
         mkdir($cfg['themes_dir'] . '/admin/' . $theme . '/css');
     }
     file_put_contents($output, $css);
     return true;
 }
コード例 #10
0
ファイル: Oyejorge.php プロジェクト: shabbirvividads/magento2
 /**
  * @param string $sourceFilePath
  * @return string
  */
 public function process($sourceFilePath)
 {
     $options = ['relativeUrls' => false, 'compress' => $this->appState->getMode() !== State::MODE_DEVELOPER];
     $parser = new \Less_Parser($options);
     $parser->parseFile($sourceFilePath, '');
     return $parser->getCss();
 }
コード例 #11
0
ファイル: lesscache.php プロジェクト: Tommar/remate
 public static function Cache(&$less_files, $parser_options = array())
 {
     //prepare the processor
     if (!class_exists('Less_Parser')) {
         include_once 'Less.php';
     }
     $parser = new Less_Parser($parser_options);
     $parser->SetCacheDir(self::$cache_dir);
     $parser->SetImportDirs(self::$import_dirs);
     // combine files
     try {
         foreach ($less_files as $file_path => $uri_or_less) {
             //treat as less markup if there are newline characters
             if (strpos($uri_or_less, "\n") !== false) {
                 $parser->Parse($uri_or_less);
                 continue;
             }
             $parser->ParseFile($file_path, $uri_or_less);
         }
         $compiled = $parser->getCss();
     } catch (Exception $e) {
         self::$error = $e;
         return false;
     }
     $less_files = $parser->allParsedFiles();
     return $compiled;
 }
コード例 #12
0
ファイル: LessCompiler.php プロジェクト: Umz/ImpressPages
 /**
  * @param string $themeName
  * @param string $lessFile
  * @return string
  */
 public function compileFile($themeName, $lessFile)
 {
     $model = Model::instance();
     $theme = $model->getTheme($themeName);
     $options = $theme->getOptionsAsArray();
     $configModel = ConfigModel::instance();
     $config = $configModel->getAllConfigValues($themeName);
     $less = "@import '{$lessFile}';";
     $less .= $this->generateLessVariables($options, $config);
     $css = '';
     try {
         require_once ipFile('Ip/Lib/less.php/Less.php');
         $themeDir = ipFile('Theme/' . $themeName . '/assets/');
         $ipContentDir = ipFile('Ip/Internal/Core/assets/ipContent/');
         // creating new context to pass theme assets directory dynamically to a static callback function
         $context = $this;
         $callback = function ($parseFile) use($context, $themeDir) {
             return $context->overrideImportDirectory($themeDir, $parseFile);
         };
         $parserOptions = array('import_callback' => $callback, 'cache_dir' => ipFile('file/tmp/less/'), 'relativeUrls' => false, 'sourceMap' => true);
         $parser = new \Less_Parser($parserOptions);
         $directories = array($themeDir => '', $ipContentDir => '');
         $parser->SetImportDirs($directories);
         $parser->parse($less);
         $css = $parser->getCss();
         $css = "/* Edit {$lessFile}, not this file. */" . "\n" . $css;
     } catch (\Exception $e) {
         ipLog()->error('Less compilation error: Theme - ' . $e->getMessage());
     }
     return $css;
 }
コード例 #13
0
 public function Compile($less_files, $out_name, $modify_vars = [], $bootstrap_less = "mixins", $mediawiki_less = "mixins")
 {
     $lessphp = new \Less_Parser($this->cache_dir);
     switch ($bootstrap_less) {
         case "mixins":
             $lessphp->parseFile($this->bootstrap_dir . "/variables.less", "");
             $lessphp->parseFile(__DIR__ . "/custom_variables.less", "");
             $lessphp->parseFile($this->bootstrap_mixin, $this->bootstrap_mixin_url);
             break;
         case "full":
             $lessphp->SetImportDirs([$this->bootstrap_dir]);
             $lessphp->parseFile(__DIR__ . "/bootstrap.less", "");
             break;
         case "off":
             break;
     }
     switch ($mediawiki_less) {
         case "mixins":
             $lessphp->parseFile($this->mediawiki_mixin, $this->mediawiki_mixin_url);
             break;
         case "off":
             break;
     }
     foreach ($less_files as $less => $url) {
         $lessphp->parseFile($less, $url);
     }
     if ($modify_vars) {
         $lessphp->ModifyVars($modify_vars);
     }
     $css = $lessphp->getCss();
     file_put_contents($out_name, $css);
 }
コード例 #14
0
ファイル: Less.php プロジェクト: difra-org/difra
 /**
  * Convert LESS to CSS
  * @param string $string
  * @return string
  */
 public static function compile($string)
 {
     self::init();
     $parser = new \Less_Parser();
     $parser->SetOptions(['compress' => !Debugger::isEnabled()]);
     $parser->parse($string);
     return $parser->getCss();
 }
コード例 #15
0
ファイル: less.php プロジェクト: shamsbd71/canvas-framework
 public static function compile($source, $path, $todir, $importdirs)
 {
     $parser = new Less_Parser();
     $parser->SetImportDirs($importdirs);
     $parser->parse($source, CANVASLess::relativePath($todir, dirname($path)) . basename($path));
     $output = $parser->getCss();
     return $output;
 }
コード例 #16
0
 /**
  * Compile the asset and return true on success
  *
  * @throws \Exception
  */
 protected function compile()
 {
     require_once TL_ROOT . '/' . $this->getParserPath();
     $parser = new \Less_Parser();
     $parser->parseFile(TL_ROOT . '/' . $this->getSourceFile()->path);
     $file = $this->getTemporaryFile();
     $file->write($parser->getCss());
 }
コード例 #17
0
ファイル: less.php プロジェクト: grlf/eyedock
 public static function compile($source, $importdirs)
 {
     $parser = new Less_Parser();
     $parser->SetImportDirs($importdirs);
     $parser->parse($source);
     $output = $parser->getCss();
     return $output;
 }
コード例 #18
0
ファイル: LessGenerator.php プロジェクト: Silwereth/core
 /**
  * This function generates from the customized bootstrap.less und font-awesome.less a combined css file
  *
  * @param string|null $writeTo Where to dump the generated file.
  */
 public static function generateCombinedBootstrapFontAwesomeCSS($writeTo = null)
 {
     // Also change build.xml if you change the default writeTo path here!
     $writeTo = is_string($writeTo) ? $writeTo : 'src/web/bootstrap-font-awesome.css';
     $parser = new \Less_Parser();
     $parser->setOptions(array('relativeUrls' => false, 'compress' => true));
     $parser->parseFile('src/style/bootstrap-font-awesome.less');
     file_put_contents($writeTo, $parser->getCss());
 }
コード例 #19
0
ファイル: LessFilter.php プロジェクト: hiveclick/mojavi
 /**
  * Execute this filter.
  *
  * @param FilterChain The filter chain.
  *
  * @return void
  *
  * @throws <b>FilterException</b> If an erro occurs during execution.
  */
 public function execute($filterChain)
 {
     static $loaded;
     if (!isset($loaded)) {
         // load the filter
         $start_time = microtime(true);
         $need_to_rebuild = true;
         $loaded = true;
         $css_file = $this->getParameter('css_file', null);
         $less_file = $this->getParameter('less_file', null);
         if (!is_null($css_file) && !is_null($less_file)) {
             if (file_exists($less_file)) {
                 if (file_exists($css_file)) {
                     if (filemtime($css_file) >= filemtime($less_file)) {
                         // css file is newer, so skip to the next filter
                         $filterChain->execute();
                         $need_to_rebuild = false;
                     }
                 }
                 if ($need_to_rebuild) {
                     if (file_exists(MO_WEBAPP_DIR . "/vendor/oyejorge/less.php/lib/Less/Autoloader.php")) {
                         \Mojavi\Logging\LoggerManager::error(__METHOD__ . " :: " . sprintf("Building new CSS file because date is %s and less file date is %s", filemtime($css_file), filemtime($less_file)));
                         try {
                             require_once MO_WEBAPP_DIR . "/vendor/oyejorge/less.php/lib/Less/Autoloader.php";
                             \Less_Autoloader::register();
                             $parser = new \Less_Parser(array('compress' => true));
                             $parser->parseFile($less_file, '/');
                             $css = $parser->getCss();
                             file_put_contents($css_file, $css);
                             \Mojavi\Logging\LoggerManager::error(__METHOD__ . " :: " . sprintf("Generated less file in %ss", number_format(microtime(true) - $start_time, 4)));
                         } catch (\Exception $e) {
                             \Mojavi\Logging\LoggerManager::error(__METHOD__ . " :: " . $e->getMessage());
                         }
                         // completed the caching, move on to the next filter
                         $filterChain->execute();
                     } else {
                         // we already loaded this filter, skip to the next filter
                         \Mojavi\Logging\LoggerManager::error(__METHOD__ . " :: " . "Missing Less vendor library, use composer require oyejorge/less.php");
                         $filterChain->execute();
                     }
                 }
             } else {
                 // less file doesn't exist so skip to the next filter
                 \Mojavi\Logging\LoggerManager::error(__METHOD__ . " :: " . "Cannot find less file to compile: " . $less_file);
                 $filterChain->execute();
             }
         } else {
             // less file or css file is not defined, so skip to the next filter
             \Mojavi\Logging\LoggerManager::error(__METHOD__ . " :: " . "less_file or css_file parameter is not defined");
             $filterChain->execute();
         }
     } else {
         // we already loaded this filter, skip to the next filter
         $filterChain->execute();
     }
 }
コード例 #20
0
 /**
  * main() method.
  *
  * @return bool|int Success or error code.
  */
 public function main()
 {
     $config = ['custom_bootstrap_less' => Configure::read('App.webroot') . '/css/vendor/bootstrap/less/custom_bootstrap.less', 'target_css' => Configure::read('App.webroot') . '/css/vendor/bootstrap/css/bootstrap_custom.css', 'compress' => false];
     $this->out('Using custom bootstrap.less: ' . $config['custom_bootstrap_less']);
     $lessPhpOptions = ['compress' => $config['compress']];
     $parser = new \Less_Parser($lessPhpOptions);
     $parser->parseFile($config['custom_bootstrap_less']);
     file_put_contents($config['target_css'], $parser->getCss());
     $this->out('Wrote compiled file to: ' . $config['target_css']);
 }
コード例 #21
0
ファイル: FunctionTest.php プロジェクト: Flesh192/magento
 /**
  * Test
  */
 public function testFunction()
 {
     echo "\nBegin Tests";
     $less_file = $this->fixtures_dir . '/functions/less/f1.less';
     $expected_css = file_get_contents($this->fixtures_dir . '/functions/css/f1.css');
     $parser = new Less_Parser();
     $parser->registerFunction('myfunc-reverse', array(__CLASS__, 'reverse'));
     $parser->parseFile($less_file);
     $generated_css = $parser->getCss();
     $this->assertEquals($expected_css, $generated_css);
 }
コード例 #22
0
 /**
  * Runs `lessc` 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.
  * @return string
  * @throws \Exception
  */
 public function input($filename, $input)
 {
     if (substr($filename, strlen($this->_settings['ext']) * -1) !== $this->_settings['ext']) {
         return $input;
     }
     if (!class_exists('\\Less_Parser')) {
         throw new \Exception('Cannot not load "\\Less_Parser" class. Make sure https://github.com/oyejorge/less.php is installed.');
     }
     $parser = new \Less_Parser();
     return $parser->parseFile($filename)->getCss();
 }
コード例 #23
0
ファイル: generate-less.php プロジェクト: adwleg/site
/**
 * Created by PhpStorm.
 * User: duonglh
 * Date: 8/23/14
 * Time: 3:01 PM
 */
function cupid_generate_less()
{
    require_once 'Less.php';
    $cupid_data = of_get_options();
    try {
        $primary_color = $cupid_data['primary-color'];
        $secondary_color = $cupid_data['secondary-color'];
        $button_color = $cupid_data['button-color'];
        $bullet_color = $cupid_data['bullet-color'];
        $icon_box_color = $cupid_data['icon-box-color'];
        $site_logo_url = $cupid_data['site-logo'];
        $site_logo_white_url = $cupid_data['site-logo-white'];
        $site_logo_url = str_replace(THEME_URL, '', $site_logo_url);
        $site_logo_white_url = str_replace(THEME_URL, '', $site_logo_white_url);
        $css = '@primary_color:' . $primary_color . ';';
        $css .= '@secondary_color:' . $secondary_color . ';';
        $css .= '@button_color:' . $button_color . ';';
        $css .= '@bullet_color:' . $bullet_color . ';';
        $css .= '@icon_box_color:' . $icon_box_color . ';';
        $css .= "@logo_url : '" . $site_logo_url . "';@logo_white_url : '" . $site_logo_white_url . "';";
        $css .= '@theme_url:"' . THEME_URL . '";';
        $style = $css;
        require_once ABSPATH . 'wp-admin/includes/file.php';
        require_once THEME_DIR . "lib/inc-generate-less/custom-css.php";
        $custom_css = cupid_custom_css();
        WP_Filesystem();
        global $wp_filesystem;
        $options = array('compress' => true);
        $parser = new Less_Parser($options);
        $parser->parse($css);
        $parser->parseFile(THEME_DIR . 'assets/css/less/style.less');
        $parser->parse($custom_css);
        $css = $parser->getCss();
        if (!$wp_filesystem->put_contents(THEME_DIR . "style.min.css", $css, FS_CHMOD_FILE)) {
            echo __('Could not save file', 'cupid');
            return '0';
        }
        /*$theme_info = $wp_filesystem->get_contents( THEME_DIR . "theme-info.txt" );
                $parser = new Less_Parser();
                $parser->parse($style);
                $parser->parseFile(THEME_DIR . 'assets/css/less/style.less',THEME_URL);
                $style = $parser->getCss();
        		$parser->parse($custom_css);
                $style = $theme_info . "\n" . $style;
                $style = str_replace("\r\n","\n", $style);
                $wp_filesystem->put_contents( THEME_DIR.   "style.css", $style, FS_CHMOD_FILE);*/
        return '1';
    } catch (Exception $e) {
        echo 'Caught exception: ', $e->getMessage(), "\n";
        return '0';
    }
}
コード例 #24
0
ファイル: Oyejorge.php プロジェクト: whoople/magento2-testing
 /**
  * @param string $sourceFilePath
  * @return string
  */
 public function process($sourceFilePath)
 {
     $options = ['relativeUrls' => false, 'compress' => $this->appState->getMode() !== State::MODE_DEVELOPER];
     try {
         $parser = new \Less_Parser($options);
         $parser->parseFile($sourceFilePath, '');
         return $parser->getCss();
     } catch (\Exception $e) {
         $errorMessage = self::ERROR_MESSAGE_PREFIX . $e->getMessage();
         $this->logger->critical($errorMessage);
         return $errorMessage;
     }
 }
コード例 #25
0
ファイル: BxDolInstallView.php プロジェクト: blas-dmx/trident
 protected function _getInlineCSS()
 {
     require_once $this->_sDirPlugins . 'lessphp/Less.php';
     $oLessParser = new Less_Parser();
     $oConfigBase = new BxBaseConfig();
     $oLessParser->ModifyVars($oConfigBase->aLessConfig);
     foreach ($this->_aFilesCss as $sFile) {
         if (substr($sFile, -5) !== '.less') {
             continue;
         }
         $oLessParser->parseFile($this->_sPathCss . $sFile, $this->_sUrlCss);
     }
     return $oLessParser->getCss();
 }
コード例 #26
0
 function css($file, $media = null)
 {
     /**
      * Only initiate automatically if:
      * - webiste is in dev mode
      * - or a ?flush is called
      */
     if (preg_match('/\\.less$/i', $file) || Director::isDev() || isset($_GET['flush'])) {
         /* If file is CSS, check if there is a LESS file */
         if (preg_match('/\\.css$/i', $file)) {
             $less = preg_replace('/\\.css$/i', '.less', $file);
             if (is_file(Director::getAbsFile($less))) {
                 $file = $less;
             }
         }
         /* If less file exists, then check/compile it */
         if (preg_match('/\\.less$/i', $file)) {
             $out = preg_replace('/\\.less$/i', '.css', $file);
             $css_file = Director::getAbsFile($out);
             $options = array();
             /* Automatically compress if in live mode */
             if (Director::isLive()) {
                 $options['compress'] = true;
             }
             try {
                 /* Force recompile & only write to css if updated */
                 if (isset($_GET['flush']) || !Director::isLive()) {
                     /* Create instance */
                     $parser = new Less_Parser($options);
                     if (!empty(self::$variables)) {
                         $parser->ModifyVars(self::$variables);
                     }
                     /* calculate the LESS file's parent URL */
                     $css_dir = rtrim(Director::baseURL(), '/') . Director::makeRelative(dirname(Director::getAbsFile($file)) . '/');
                     $parser->parseFile(Director::getAbsFile($file), $css_dir);
                     $css = $parser->getCss();
                     if (!is_file($css_file) || md5_file($css_file) != md5($css)) {
                         file_put_contents($css_file, $css);
                     }
                 }
             } catch (Exception $ex) {
                 trigger_error("Less.php fatal error: " . $ex->getMessage(), E_USER_ERROR);
             }
             $file = $out;
         }
     }
     /* Return css path */
     return parent::css($file, $media);
 }
コード例 #27
0
 public static function Cache(&$less_files, $parser_options = array()) {
   $file = dirname(__FILE__) . '/Less.php';
   if (file_exists($file) && !class_exists('Less_Parser')) {
     require_once($file);
   }$parser_options['cache_dir'] = Less_Cache::$cache_dir;
   $parser = new Less_Parser($parser_options);
   foreach ($less_files as $file_path => $uri_or_less) {
     if (strpos($uri_or_less, "\n") !== false) {
       $parser->Parse($uri_or_less);
       continue;
     }$parser->ParseFile($file_path, $uri_or_less);
   }$compiled = $parser->getCss();
   $less_files = $parser->allParsedFiles();
   return $compiled;
 }
コード例 #28
0
ファイル: Lesser_APF.php プロジェクト: benallfree/wp-lesser
 function processSubmit($mode)
 {
     $data = get_option('Lesser_APF');
     $less = $data['lesser_' . $mode . '_less'];
     $parser = new Less_Parser();
     try {
         $parser->parse($less);
         $css = $parser->getCss();
         $data['lesser_' . $mode . '_css'] = $css;
         $data = apply_filters('lesser_before_' . $mode . '_save', $data);
         update_option('Lesser_APF', $data);
     } catch (Exception $e) {
         $this->setSettingNotice('LESS parse error: ' . $e->getMessage());
     }
 }
コード例 #29
0
ファイル: Condition.php プロジェクト: shomimn/builder
 public function compile($env)
 {
     $a = $this->lvalue->compile($env);
     $b = $this->rvalue->compile($env);
     switch ($this->op) {
         case 'and':
             $result = $a && $b;
             break;
         case 'or':
             $result = $a || $b;
             break;
         default:
             if (Less_Parser::is_method($a, 'compare')) {
                 $result = $a->compare($b);
             } elseif (Less_Parser::is_method($b, 'compare')) {
                 $result = $b->compare($a);
             } else {
                 throw new Less_Exception_Compiler('Unable to perform comparison', null, $this->index);
             }
             switch ($result) {
                 case -1:
                     $result = $this->op === '<' || $this->op === '=<' || $this->op === '<=';
                     break;
                 case 0:
                     $result = $this->op === '=' || $this->op === '>=' || $this->op === '=<' || $this->op === '<=';
                     break;
                 case 1:
                     $result = $this->op === '>' || $this->op === '>=';
                     break;
             }
             break;
     }
     return $this->negate ? !$result : $result;
 }
コード例 #30
0
ファイル: Assigment.php プロジェクト: satokora/IT354Project
 public function compile($env)
 {
     if (Less_Parser::is_method($this->value, 'compile')) {
         return new Less_Tree_Assignment($this->key, $this->value->compile($env));
     }
     return $this;
 }