Initial Drupal 11 with DDEV setup
This commit is contained in:
		
							
								
								
									
										144
									
								
								vendor/mck89/peast/lib/Peast/Syntax/Node/TemplateLiteral.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										144
									
								
								vendor/mck89/peast/lib/Peast/Syntax/Node/TemplateLiteral.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1,144 @@
 | 
			
		||||
<?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;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * A node that represents a template literal.
 | 
			
		||||
 * For example: `this is a ${test()} template`
 | 
			
		||||
 * 
 | 
			
		||||
 * @author Marco Marchiò <marco.mm89@gmail.com>
 | 
			
		||||
 */
 | 
			
		||||
class TemplateLiteral extends Node implements Expression
 | 
			
		||||
{
 | 
			
		||||
    /**
 | 
			
		||||
     * Map of node properties
 | 
			
		||||
     * 
 | 
			
		||||
     * @var array 
 | 
			
		||||
     */
 | 
			
		||||
    protected $propertiesMap = array(
 | 
			
		||||
        "parts" => true,
 | 
			
		||||
        "quasis" => false,
 | 
			
		||||
        "expressions" => false
 | 
			
		||||
    );
 | 
			
		||||
    
 | 
			
		||||
    /**
 | 
			
		||||
     * Array of quasis that are the literal parts of the template
 | 
			
		||||
     * 
 | 
			
		||||
     * @var TemplateElement[] 
 | 
			
		||||
     */
 | 
			
		||||
    protected $quasis = array();
 | 
			
		||||
    
 | 
			
		||||
    /**
 | 
			
		||||
     * Array of expressions inside the template
 | 
			
		||||
     * 
 | 
			
		||||
     * @var Expression[] 
 | 
			
		||||
     */
 | 
			
		||||
    protected $expressions = array();
 | 
			
		||||
    
 | 
			
		||||
    /**
 | 
			
		||||
     * Returns the array of quasis that are the literal parts of the template
 | 
			
		||||
     * 
 | 
			
		||||
     * @return TemplateElement[] 
 | 
			
		||||
     */
 | 
			
		||||
    public function getQuasis()
 | 
			
		||||
    {
 | 
			
		||||
        return $this->quasis;
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    /**
 | 
			
		||||
     * Sets the array of quasis that are the literal parts of the template
 | 
			
		||||
     * 
 | 
			
		||||
     * @param TemplateElement[] $quasis Quasis
 | 
			
		||||
     * 
 | 
			
		||||
     * @return $this
 | 
			
		||||
     */
 | 
			
		||||
    public function setQuasis($quasis)
 | 
			
		||||
    {
 | 
			
		||||
        $this->assertArrayOf($quasis, "TemplateElement");
 | 
			
		||||
        $this->quasis = $quasis;
 | 
			
		||||
        return $this;
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    /**
 | 
			
		||||
     * Returns the array of expressions inside the template
 | 
			
		||||
     * 
 | 
			
		||||
     * @return Expression[]
 | 
			
		||||
     */
 | 
			
		||||
    public function getExpressions()
 | 
			
		||||
    {
 | 
			
		||||
        return $this->expressions;
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    /**
 | 
			
		||||
     * Sets the array of expressions inside the template
 | 
			
		||||
     * 
 | 
			
		||||
     * @param Expression[] $expressions Expressions
 | 
			
		||||
     * 
 | 
			
		||||
     * @return $this
 | 
			
		||||
     */
 | 
			
		||||
    public function setExpressions($expressions)
 | 
			
		||||
    {
 | 
			
		||||
        $this->assertArrayOf($expressions, "Expression");
 | 
			
		||||
        $this->expressions = $expressions;
 | 
			
		||||
        return $this;
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    /**
 | 
			
		||||
     * Returns an array of the template parts (quasis and expressions)
 | 
			
		||||
     * 
 | 
			
		||||
     * @return array
 | 
			
		||||
     */
 | 
			
		||||
    public function getParts()
 | 
			
		||||
    {
 | 
			
		||||
        // It must be a list of quasis and expressions alternated
 | 
			
		||||
        $parts = array();
 | 
			
		||||
        foreach ($this->quasis as $k => $val) {
 | 
			
		||||
            $parts[] = $val;
 | 
			
		||||
            if (isset($this->expressions[$k])) {
 | 
			
		||||
                $parts[] = $this->expressions[$k];
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        return $parts;
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    /**
 | 
			
		||||
     * Sets the array of the template parts (quasis and expressions)
 | 
			
		||||
     * 
 | 
			
		||||
     * @param array Template parts
 | 
			
		||||
     * 
 | 
			
		||||
     * @return $this
 | 
			
		||||
     */
 | 
			
		||||
    public function setParts($parts)
 | 
			
		||||
    {
 | 
			
		||||
        $this->assertArrayOf($parts, array("Expression", "TemplateElement"));
 | 
			
		||||
        $quasis = $expressions = array();
 | 
			
		||||
        foreach ($parts as $part) {
 | 
			
		||||
            if ($part instanceof TemplateElement) {
 | 
			
		||||
                $quasis[] = $part;
 | 
			
		||||
            } else {
 | 
			
		||||
                $expressions[] = $part;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        return $this->setQuasis($quasis)->setExpressions($expressions);
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    /**
 | 
			
		||||
     * Returns a serializable version of the node
 | 
			
		||||
     * 
 | 
			
		||||
     * @return array
 | 
			
		||||
     */
 | 
			
		||||
    #[\ReturnTypeWillChange]
 | 
			
		||||
    public function jsonSerialize()
 | 
			
		||||
    {
 | 
			
		||||
        $ret = parent::jsonSerialize();
 | 
			
		||||
        unset($ret["parts"]);
 | 
			
		||||
        return $ret;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user