/** * Begins or continues (if parameter omitted) a foreach block around the node. * @param HtmlNode $node Node. * @param TemplateNode|null $value Macro parameter. */ public function _foreach(HtmlNode $node, TemplateNode $value) { if (!isset($value)) { if ($node->prev instanceof ForeachNode) { $foreachNode = $node->prev; $node->detach(); $foreachNode->append($node); return; } throw new InvalidTemplateException(tr('Empty foreach-node must folow another foreach-node')); } $foreachNode = new ForeachNode(PhpNode::expr($value)->code); $node->replaceWith($foreachNode); $foreachNode->append($node); }