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