101 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			101 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
/**
 | 
						|
 * This file is part of the Peast package
 | 
						|
 *
 | 
						|
 * (c) Marco Marchiò <marco.mm89@gmail.com>
 | 
						|
 *
 | 
						|
 * For the full copyright and license information refer to the LICENSE file
 | 
						|
 * distributed with this source code
 | 
						|
 */
 | 
						|
namespace Peast\Syntax\Node;
 | 
						|
 | 
						|
use Peast\Syntax\Utils;
 | 
						|
 | 
						|
/**
 | 
						|
 * A node that represents an identifier.
 | 
						|
 * 
 | 
						|
 * @author Marco Marchiò <marco.mm89@gmail.com>
 | 
						|
 */
 | 
						|
class Identifier extends Node implements Expression, Pattern
 | 
						|
{
 | 
						|
    /**
 | 
						|
     * Map of node properties
 | 
						|
     * 
 | 
						|
     * @var array 
 | 
						|
     */
 | 
						|
    protected $propertiesMap = array(
 | 
						|
        "name" => false,
 | 
						|
        "rawName" => false,
 | 
						|
    );
 | 
						|
    
 | 
						|
    /**
 | 
						|
     * The identifier's name
 | 
						|
     * 
 | 
						|
     * @var string
 | 
						|
     */
 | 
						|
    protected $name;
 | 
						|
    
 | 
						|
    /**
 | 
						|
     * The identifier's raw name
 | 
						|
     * 
 | 
						|
     * @var string
 | 
						|
     */
 | 
						|
    protected $rawName;
 | 
						|
    
 | 
						|
    /**
 | 
						|
     * Returns the identifier's name
 | 
						|
     * 
 | 
						|
     * @return string
 | 
						|
     */
 | 
						|
    public function getName()
 | 
						|
    {
 | 
						|
        return $this->name;
 | 
						|
    }
 | 
						|
    
 | 
						|
    /**
 | 
						|
     * Sets the identifier's name
 | 
						|
     * 
 | 
						|
     * @param string $name The name to set
 | 
						|
     * 
 | 
						|
     * @return $this
 | 
						|
     */
 | 
						|
    public function setName($name)
 | 
						|
    {
 | 
						|
        $this->name = $this->rawName = $name;
 | 
						|
        return $this;
 | 
						|
    }
 | 
						|
    
 | 
						|
    /**
 | 
						|
     * Returns the identifier's raw name
 | 
						|
     * 
 | 
						|
     * @return string
 | 
						|
     */
 | 
						|
    public function getRawName()
 | 
						|
    {
 | 
						|
        return $this->rawName;
 | 
						|
    }
 | 
						|
    
 | 
						|
    /**
 | 
						|
     * Sets the identifier's raw name
 | 
						|
     * 
 | 
						|
     * @param string $name The raw name to set
 | 
						|
     * 
 | 
						|
     * @return $this
 | 
						|
     */
 | 
						|
    public function setRawName($name)
 | 
						|
    {
 | 
						|
        $this->rawName = $name;
 | 
						|
        if (strpos($name, "\\") !== false) {
 | 
						|
            $this->name = preg_replace_callback(
 | 
						|
                "#\\\\u(?:\{([a-fA-F0-9]+)\}|([a-fA-F0-9]{4}))#",
 | 
						|
                function ($match) {
 | 
						|
                    return Utils::unicodeToUtf8(hexdec($match[1] ? : $match[2]));
 | 
						|
                },
 | 
						|
                $name
 | 
						|
            );
 | 
						|
        } else {
 | 
						|
            $this->name = $name;
 | 
						|
        }
 | 
						|
        return $this;
 | 
						|
    }
 | 
						|
} |