Вход Регистрация
Файл: contao-3.5.8/vendor/oyejorge/less.php/lib/Less/Tree/Call.php
Строк: 142
<?php


/**
 * Call
 *
 * @package Less
 * @subpackage tree
 */
class Less_Tree_Call extends Less_Tree{
    public 
$value;

    protected 
$name;
    protected 
$args;
    protected 
$index;
    protected 
$currentFileInfo;
    public 
$type 'Call';

    public function 
__construct($name$args$index$currentFileInfo null ){
        
$this->name $name;
        
$this->args $args;
        
$this->index $index;
        
$this->currentFileInfo $currentFileInfo;
    }

    public function 
accept$visitor ){
        
$this->args $visitor->visitArray$this->args );
    }

    
//
    // When evaluating a function call,
    // we either find the function in `tree.functions` [1],
    // in which case we call it, passing the  evaluated arguments,
    // or we simply print it out as it appeared originally [2].
    //
    // The *functions.js* file contains the built-in functions.
    //
    // The reason why we evaluate the arguments, is in the case where
    // we try to pass a variable to a function, like: `saturate(@color)`.
    // The function should receive the value, not the variable.
    //
    
public function compile($env=null){
        
$args = array();
        foreach(
$this->args as $a){
            
$args[] = $a->compile($env);
        }

        
$nameLC strtolower($this->name);
        switch(
$nameLC){
            case 
'%':
            
$nameLC '_percent';
            break;

            case 
'get-unit':
            
$nameLC 'getunit';
            break;

            case 
'data-uri':
            
$nameLC 'datauri';
            break;

            case 
'svg-gradient':
            
$nameLC 'svggradient';
            break;
        }

        
$result null;
        if( 
$nameLC === 'default' ){
            
$result Less_Tree_DefaultFunc::compile();

        }else{

            if( 
method_exists('Less_Functions',$nameLC) ){ // 1.
                
try {

                    
$func = new Less_Functions($env$this->currentFileInfo);
                    
$result call_user_func_array( array($func,$nameLC),$args);

                } catch (
Exception $e) {
                    throw new 
Less_Exception_Compiler('error evaluating function `' $this->name '` '.$e->getMessage().' index: '$this->index);
                }
            } elseif( isset( 
$env->functions[$nameLC] ) && is_callable$env->functions[$nameLC] ) ) {
                try {
                    
$result call_user_func_array$env->functions[$nameLC], $args );
                } catch (
Exception $e) {
                    throw new 
Less_Exception_Compiler('error evaluating function `' $this->name '` '.$e->getMessage().' index: '$this->index);
                }
            }
        }

        if( 
$result !== null ){
            return 
$result;
        }


        return new 
Less_Tree_Call$this->name$args$this->index$this->currentFileInfo );
    }

    
/**
     * @see Less_Tree::genCSS
     */
    
public function genCSS$output ){

        
$output->add$this->name '('$this->currentFileInfo$this->index );
        
$args_len count($this->args);
        for(
$i 0$i $args_len$i++ ){
            
$this->args[$i]->genCSS$output );
            if( 
$i $args_len ){
                
$output->add', ' );
            }
        }

        
$output->add')' );
    }


    
//public function toCSS(){
    //    return $this->compile()->toCSS();
    //}

}
Онлайн: 0
Реклама