public static function addExtensions(Twig_Environment $twig) { // create our own twig extension to get the full path for an asset $twig->addFunction(new Twig_Function('asset', function ($asset) { return TwigExtensions::getFullHost() . '/' . ltrim($asset, '/'); })); $twig->addFunction(new Twig_Function('match', function ($pattern, $subject) { preg_match($pattern, $subject, $matches); return count($matches) > 0 ? $matches[0] : ''; })); $twig->addFunction(new Twig_Function('matches', function ($pattern, $subject) { return preg_match($pattern, $subject) == 1; })); $twig->addFunction(new Twig_Function('replace', function ($pattern, $replacement, $subject) { return preg_replace($pattern, $replacement, $subject); })); $twig->addFunction(new Twig_Function('accountIcon', function ($type) { return TwigExtensions::getAccountIcon($type); })); $twig->addFunction(new Twig_Function('transactionIcon', function ($type) { return TwigExtensions::getTransactionIcon($type); })); $twig->addFunction(new Twig_Function('bankImage', function ($iban) { return TwigExtensions::getBankImage($iban); })); // delimit an iban string on each 4th character with a space $twig->addFilter(new Twig_Filter('iban', function ($value) { $chars = 4; $parts = array(); for ($i = 0; $i < ceil(strlen($value) / $chars); $i++) { $parts[] = substr($value, $i * $chars, $chars); } return join(' ', $parts); })); return $twig; }