Вход Регистрация
Файл: concrete5.7.5.6/concrete/vendor/gettext/gettext/src/Utils/PhpFunctionsScanner.php
Строк: 72
<?php
namespace GettextUtils;

class 
PhpFunctionsScanner extends FunctionsScanner
{
    protected 
$tokens;

    
/**
     * Constructor
     *
     * @param string $code The php code to scan
     */
    
public function __construct($code)
    {
        
$this->tokens token_get_all($code);
    }

    
/**
     * {@inheritDoc}
     */
    
public function getFunctions()
    {
        
$count count($this->tokens);
        
$bufferFunctions = array();
        
$functions = array();

        for (
$k 0$k $count$k++) {
            
$value $this->tokens[$k];

            
//close the current function
            
if (is_string($value)) {
                if (
$value === ')' && isset($bufferFunctions[0])) {
                    
$functions[] = array_shift($bufferFunctions);
                }

                continue;
            }

            
//add an argument to the current function
            
if (isset($bufferFunctions[0]) && ($value[0] === T_CONSTANT_ENCAPSED_STRING)) {
                
$val $value[1];

                if (
$val[0] === '"') {
                    
$val str_replace('\"''"'$val);
                } else {
                    
$val str_replace("\'""'"$val);
                }

                
$bufferFunctions[0][2][] = substr($val1, -1);
                continue;
            }

            
//new function found
            
if (($value[0] === T_STRING) && is_string($this->tokens[$k 1]) && ($this->tokens[$k 1] === '(')) {
                
array_unshift($bufferFunctions, array($value[1], $value[2], array()));
                
$k++;

                continue;
            }
        }

        return 
$functions;
    }
}
Онлайн: 1
Реклама