public static function install(Latte\Compiler $compiler)
{
$me = new static($compiler);
$me->addMacro('if', [$me, 'macroIf'], [$me, 'macroEndIf']);
$me->addMacro('elseif', '} elseif (%node.args) {');
$me->addMacro('else', [$me, 'macroElse']);
$me->addMacro('ifset', 'if (isset(%node.args)) {', '}');
$me->addMacro('elseifset', '} elseif (isset(%node.args)) {');
$me->addMacro('ifcontent', [$me, 'macroIfContent'], [$me, 'macroEndIfContent']);
$me->addMacro('switch', '$this->global->switch[] = (%node.args); if (FALSE) {', '} array_pop($this->global->switch)');
$me->addMacro('case', '} elseif (end($this->global->switch) === (%node.args)) {');
$me->addMacro('foreach', '', [$me, 'macroEndForeach']);
$me->addMacro('for', 'for (%node.args) {', '}');
$me->addMacro('while', [$me, 'macroWhile'], [$me, 'macroEndWhile']);
$me->addMacro('continueIf', [$me, 'macroBreakContinueIf']);
$me->addMacro('breakIf', [$me, 'macroBreakContinueIf']);
$me->addMacro('first', 'if ($iterator->isFirst(%node.args)) {', '}');
$me->addMacro('last', 'if ($iterator->isLast(%node.args)) {', '}');
$me->addMacro('sep', 'if (!$iterator->isLast(%node.args)) {', '}');
$me->addMacro('var', [$me, 'macroVar']);
$me->addMacro('default', [$me, 'macroVar']);
$me->addMacro('dump', [$me, 'macroDump']);
$me->addMacro('debugbreak', [$me, 'macroDebugbreak']);
$me->addMacro('l', '?>{<?php');
$me->addMacro('r', '?>}<?php');
$me->addMacro('_', [$me, 'macroTranslate'], [$me, 'macroTranslate']);
$me->addMacro('=', [$me, 'macroExpr']);
$me->addMacro('?', [$me, 'macroExpr']);
$me->addMacro('capture', [$me, 'macroCapture'], [$me, 'macroCaptureEnd']);
$me->addMacro('spaceless', [$me, 'macroSpaceless'], [$me, 'macroSpaceless']);
$me->addMacro('include', [$me, 'macroInclude']);
$me->addMacro('use', [$me, 'macroUse']);
$me->addMacro('contentType', [$me, 'macroContentType'], NULL, NULL, self::ALLOWED_IN_HEAD);
$me->addMacro('status', [$me, 'macroStatus']);
$me->addMacro('php', [$me, 'macroExpr']);
$me->addMacro('class', NULL, NULL, [$me, 'macroClass']);
$me->addMacro('attr', NULL, NULL, [$me, 'macroAttr']);
}