本文整理汇总了PHP中Less_Parser类的典型用法代码示例。如果您正苦于以下问题:PHP Less_Parser类的具体用法?PHP Less_Parser怎么用?PHP Less_Parser使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Less_Parser类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: filterLoad
/**
* 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: process
/**
* @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: CompareFile
/**
* 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: CssPreprocessor
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: parse_less
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: getFile
/**
* @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: processContent
/**
* @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: compile
public function compile($source, $pathname)
{
$less = new \Less_Parser();
$less->SetImportDirs(array(dirname($pathname) => './'));
$less->parse($source);
return $less->getCss();
}
示例9: compile_botstrap_less_adm
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: process
/**
* @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: Cache
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: compileFile
/**
* @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: Compile
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: compile
/**
* 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: compile
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;
}