Skip to content

Commit

Permalink
Add twig functions
Browse files Browse the repository at this point in the history
  • Loading branch information
kylekatarnls committed Aug 4, 2016
1 parent 6f05016 commit de4bb7c
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 1 deletion.
20 changes: 19 additions & 1 deletion src/Jade/JadeSymfonyEngine.php
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,23 @@ public function __construct($kernel)
*/
public function preRender($pugCode)
{
return preg_replace('/(?<=\=\>|[=\.,:\?\(])\s*asset\s*\(/', '$view[\'assets\']->getUrl(', $pugCode);
foreach (array(
'random' => 'mt_rand',
'asset' => '$view[\'assets\']->getUrl',
'asset_version' => '$view[\'assets\']->getVersion',
'csrf_token' => '$view[\'form\']->csrfToken',
'logout_url' => '$view[\'logout\']->url',
'logout_path' => '$view[\'logout\']->path',
'url' => '$view[\'router\']->url',
'path' => '$view[\'router\']->path',
'absolute_url' => '$view[\'http\']->generateAbsoluteUrl',
'relative_path' => '$view[\'http\']->generateRelativePath',
'is_granted' => '$view[\'security\']->isGranted',
) as $name => $function) {
$pugCode = preg_replace('/(?<=\=\>|[=\.,:\?\(])\s*' . preg_quote($name, '/') . '\s*\(/', $function . '(', $pugCode);
}

return $pugCode;
}

protected function registerHelpers(ContainerInterface $services, $helpers)
Expand All @@ -102,6 +118,8 @@ protected function registerHelpers(ContainerInterface $services, $helpers)
$this->helpers[$helper] = $instance;
}
}
$this->helpers['logout'] = new Logout($this->helpers['logout_url']);
$this->helpers['http'] = new HttpFoundationExtension($services->get('request_stack'), $services->get('router.request_context'));
foreach ($helpers as $helper) {
$name = preg_replace('`^(?:.+\\\\)([^\\\\]+?)(?:Helper)?$`', '$1', get_class($helper));
$name = strtolower(substr($name, 0, 1)) . substr($name, 1);
Expand Down
25 changes: 25 additions & 0 deletions src/Jade/Symfony/Logout.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
<?php

namespace Jade\Symfony;

use Symfony\Bundle\SecurityBundle\Templating\Helper\LogoutUrlHelper;

class Logout
{
protected $logoutUrlHelper;

public function __construct(LogoutUrlHelper $logoutUrlHelper)
{
$this->logoutUrlHelper = $logoutUrlHelper;
}

public function url($key = null)
{
return $this->logoutUrlHelper->getLogoutUrl($key);
}

public function path($key = null)
{
return $this->logoutUrlHelper->getLogoutPath($key);
}
}

0 comments on commit de4bb7c

Please sign in to comment.