public function addMacro($name, $begin, $end = NULL, $attr = NULL, $flags = NULL)
{
if (!$begin && !$end && !$attr) {
throw new \InvalidArgumentException("At least one argument must be specified for macro '{$name}'.");
}
foreach ([$begin, $end, $attr] as $arg) {
if ($arg && !is_string($arg)) {
Latte\Helpers::checkCallback($arg);
}
}
$this->macros[$name] = [$begin, $end, $attr];
$this->compiler->addMacro($name, $this, $flags);
return $this;
}