class Twig_Node in Translation template extractor 6.3
Same name and namespace in other branches
- 7.3 vendor/Twig/Node.php \Twig_Node
Represents a node in the AST.
@author Fabien Potencier <fabien@symfony.com>
Hierarchy
- class \Twig_Node implements Twig_NodeInterface
Expanded class hierarchy of Twig_Node
2 string references to 'Twig_Node'
- Twig_NodeVisitor_Optimizer::enterNode in vendor/
Twig/ NodeVisitor/ Optimizer.php - Called before child nodes are visited.
- Twig_NodeVisitor_Optimizer::leaveNode in vendor/
Twig/ NodeVisitor/ Optimizer.php - Called after child nodes are visited.
File
- vendor/
Twig/ Node.php, line 18
View source
class Twig_Node implements Twig_NodeInterface {
protected $nodes;
protected $attributes;
protected $lineno;
protected $tag;
/**
* Constructor.
*
* The nodes are automatically made available as properties ($this->node).
* The attributes are automatically made available as array items ($this['name']).
*
* @param array $nodes An array of named nodes
* @param array $attributes An array of attributes (should not be nodes)
* @param int $lineno The line number
* @param string $tag The tag name associated with the Node
*/
public function __construct(array $nodes = array(), array $attributes = array(), $lineno = 0, $tag = null) {
$this->nodes = $nodes;
$this->attributes = $attributes;
$this->lineno = $lineno;
$this->tag = $tag;
}
public function __toString() {
$attributes = array();
foreach ($this->attributes as $name => $value) {
$attributes[] = sprintf('%s: %s', $name, str_replace("\n", '', var_export($value, true)));
}
$repr = array(
get_class($this) . '(' . implode(', ', $attributes),
);
if (count($this->nodes)) {
foreach ($this->nodes as $name => $node) {
$len = strlen($name) + 4;
$noderepr = array();
foreach (explode("\n", (string) $node) as $line) {
$noderepr[] = str_repeat(' ', $len) . $line;
}
$repr[] = sprintf(' %s: %s', $name, ltrim(implode("\n", $noderepr)));
}
$repr[] = ')';
}
else {
$repr[0] .= ')';
}
return implode("\n", $repr);
}
/**
* @deprecated since 1.16.1 (to be removed in 2.0)
*/
public function toXml($asDom = false) {
$dom = new DOMDocument('1.0', 'UTF-8');
$dom->formatOutput = true;
$dom
->appendChild($xml = $dom
->createElement('twig'));
$xml
->appendChild($node = $dom
->createElement('node'));
$node
->setAttribute('class', get_class($this));
foreach ($this->attributes as $name => $value) {
$node
->appendChild($attribute = $dom
->createElement('attribute'));
$attribute
->setAttribute('name', $name);
$attribute
->appendChild($dom
->createTextNode($value));
}
foreach ($this->nodes as $name => $n) {
if (null === $n) {
continue;
}
$child = $n
->toXml(true)
->getElementsByTagName('node')
->item(0);
$child = $dom
->importNode($child, true);
$child
->setAttribute('name', $name);
$node
->appendChild($child);
}
return $asDom ? $dom : $dom
->saveXml();
}
public function compile(Twig_Compiler $compiler) {
foreach ($this->nodes as $node) {
$node
->compile($compiler);
}
}
public function getLine() {
return $this->lineno;
}
public function getNodeTag() {
return $this->tag;
}
/**
* Returns true if the attribute is defined.
*
* @param string The attribute name
*
* @return bool true if the attribute is defined, false otherwise
*/
public function hasAttribute($name) {
return array_key_exists($name, $this->attributes);
}
/**
* Gets an attribute.
*
* @param string The attribute name
*
* @return mixed The attribute value
*/
public function getAttribute($name) {
if (!array_key_exists($name, $this->attributes)) {
throw new LogicException(sprintf('Attribute "%s" does not exist for Node "%s".', $name, get_class($this)));
}
return $this->attributes[$name];
}
/**
* Sets an attribute.
*
* @param string The attribute name
* @param mixed The attribute value
*/
public function setAttribute($name, $value) {
$this->attributes[$name] = $value;
}
/**
* Removes an attribute.
*
* @param string The attribute name
*/
public function removeAttribute($name) {
unset($this->attributes[$name]);
}
/**
* Returns true if the node with the given identifier exists.
*
* @param string The node name
*
* @return bool true if the node with the given name exists, false otherwise
*/
public function hasNode($name) {
return array_key_exists($name, $this->nodes);
}
/**
* Gets a node by name.
*
* @param string The node name
*
* @return Twig_Node A Twig_Node instance
*/
public function getNode($name) {
if (!array_key_exists($name, $this->nodes)) {
throw new LogicException(sprintf('Node "%s" does not exist for Node "%s".', $name, get_class($this)));
}
return $this->nodes[$name];
}
/**
* Sets a node.
*
* @param string The node name
* @param Twig_Node A Twig_Node instance
*/
public function setNode($name, $node = null) {
$this->nodes[$name] = $node;
}
/**
* Removes a node by name.
*
* @param string The node name
*/
public function removeNode($name) {
unset($this->nodes[$name]);
}
public function count() {
return count($this->nodes);
}
public function getIterator() {
return new ArrayIterator($this->nodes);
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
Twig_Node:: |
protected | property | ||
Twig_Node:: |
protected | property | ||
Twig_Node:: |
protected | property | ||
Twig_Node:: |
protected | property | ||
Twig_Node:: |
public | function |
Compiles the node to PHP. Overrides Twig_NodeInterface:: |
33 |
Twig_Node:: |
public | function | ||
Twig_Node:: |
public | function | Gets an attribute. | |
Twig_Node:: |
public | function | ||
Twig_Node:: |
public | function |
Overrides Twig_NodeInterface:: |
|
Twig_Node:: |
public | function | Gets a node by name. | |
Twig_Node:: |
public | function |
Overrides Twig_NodeInterface:: |
|
Twig_Node:: |
public | function | Returns true if the attribute is defined. | |
Twig_Node:: |
public | function | Returns true if the node with the given identifier exists. | |
Twig_Node:: |
public | function | Removes an attribute. | |
Twig_Node:: |
public | function | Removes a node by name. | |
Twig_Node:: |
public | function | Sets an attribute. | |
Twig_Node:: |
public | function | Sets a node. | |
Twig_Node:: |
public | function | ||
Twig_Node:: |
public | function | Constructor. | 33 |
Twig_Node:: |
public | function |