MDL-44357 theme: Allow core to compile LESS in PHP
This commit is contained in:
@@ -0,0 +1,97 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Expression
|
||||
*
|
||||
* @package Less
|
||||
* @subpackage tree
|
||||
*/
|
||||
class Less_Tree_Expression extends Less_Tree{
|
||||
|
||||
public $value = array();
|
||||
public $parens = false;
|
||||
public $parensInOp = false;
|
||||
public $type = 'Expression';
|
||||
|
||||
public function __construct( $value, $parens = null ){
|
||||
$this->value = $value;
|
||||
$this->parens = $parens;
|
||||
}
|
||||
|
||||
function accept( $visitor ){
|
||||
$this->value = $visitor->visitArray( $this->value );
|
||||
}
|
||||
|
||||
public function compile($env) {
|
||||
|
||||
$doubleParen = false;
|
||||
|
||||
if( $this->parens && !$this->parensInOp ){
|
||||
Less_Environment::$parensStack++;
|
||||
}
|
||||
|
||||
$returnValue = null;
|
||||
if( $this->value ){
|
||||
|
||||
$count = count($this->value);
|
||||
|
||||
if( $count > 1 ){
|
||||
|
||||
$ret = array();
|
||||
foreach($this->value as $e){
|
||||
$ret[] = $e->compile($env);
|
||||
}
|
||||
$returnValue = new Less_Tree_Expression($ret);
|
||||
|
||||
}else{
|
||||
|
||||
if( ($this->value[0] instanceof Less_Tree_Expression) && $this->value[0]->parens && !$this->value[0]->parensInOp ){
|
||||
$doubleParen = true;
|
||||
}
|
||||
|
||||
$returnValue = $this->value[0]->compile($env);
|
||||
}
|
||||
|
||||
} else {
|
||||
$returnValue = $this;
|
||||
}
|
||||
|
||||
if( $this->parens ){
|
||||
if( !$this->parensInOp ){
|
||||
Less_Environment::$parensStack--;
|
||||
|
||||
}elseif( !Less_Environment::isMathOn() && !$doubleParen ){
|
||||
$returnValue = new Less_Tree_Paren($returnValue);
|
||||
|
||||
}
|
||||
}
|
||||
return $returnValue;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see Less_Tree::genCSS
|
||||
*/
|
||||
function genCSS( $output ){
|
||||
$val_len = count($this->value);
|
||||
for( $i = 0; $i < $val_len; $i++ ){
|
||||
$this->value[$i]->genCSS( $output );
|
||||
if( $i + 1 < $val_len ){
|
||||
$output->add( ' ' );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function throwAwayComments() {
|
||||
|
||||
if( is_array($this->value) ){
|
||||
$new_value = array();
|
||||
foreach($this->value as $v){
|
||||
if( $v instanceof Less_Tree_Comment ){
|
||||
continue;
|
||||
}
|
||||
$new_value[] = $v;
|
||||
}
|
||||
$this->value = $new_value;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user