From 8d4dae9f2ace9dd389c136b4d740910303462069 Mon Sep 17 00:00:00 2001 From: Kris Wallsmith Date: Sat, 5 Mar 2011 13:46:50 +0100 Subject: [PATCH] [AsseticBundle] finished and enabled php templating support --- .../DependencyInjection/AsseticExtension.php | 2 +- .../Loader/AsseticHelperFormulaLoader.php | 81 +++++++++++++++++++ .../{ => Resource}/DirectoryResource.php | 2 +- .../DirectoryResourceIterator.php | 2 +- .../Factory/{ => Resource}/FileResource.php | 2 +- .../Resources/config/assetic.xml | 2 +- .../Resources/config/templating_php.xml | 4 +- .../Resources/config/templating_twig.xml | 1 - .../AsseticBundle/Tests/FunctionalTest.php | 2 - .../Tests/Resources/config/config.yml | 2 +- 10 files changed, 89 insertions(+), 11 deletions(-) create mode 100644 src/Symfony/Bundle/AsseticBundle/Factory/Loader/AsseticHelperFormulaLoader.php rename src/Symfony/Bundle/AsseticBundle/Factory/{ => Resource}/DirectoryResource.php (95%) rename src/Symfony/Bundle/AsseticBundle/Factory/{ => Resource}/DirectoryResourceIterator.php (95%) rename src/Symfony/Bundle/AsseticBundle/Factory/{ => Resource}/FileResource.php (97%) diff --git a/src/Symfony/Bundle/AsseticBundle/DependencyInjection/AsseticExtension.php b/src/Symfony/Bundle/AsseticBundle/DependencyInjection/AsseticExtension.php index 07872aa73a..efe658b111 100644 --- a/src/Symfony/Bundle/AsseticBundle/DependencyInjection/AsseticExtension.php +++ b/src/Symfony/Bundle/AsseticBundle/DependencyInjection/AsseticExtension.php @@ -37,7 +37,7 @@ class AsseticExtension extends Extension $loader = new XmlFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config')); $loader->load('assetic.xml'); $loader->load('templating_twig.xml'); - // $loader->load('templating_php.xml'); // not ready yet + $loader->load('templating_php.xml'); $config = self::processConfigs($configs, $container->getParameter('kernel.debug'), array_keys($container->getParameter('kernel.bundles'))); diff --git a/src/Symfony/Bundle/AsseticBundle/Factory/Loader/AsseticHelperFormulaLoader.php b/src/Symfony/Bundle/AsseticBundle/Factory/Loader/AsseticHelperFormulaLoader.php new file mode 100644 index 0000000000..e418a090ed --- /dev/null +++ b/src/Symfony/Bundle/AsseticBundle/Factory/Loader/AsseticHelperFormulaLoader.php @@ -0,0 +1,81 @@ + + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + +namespace Symfony\Bundle\AsseticBundle\Factory\Loader; + +use Assetic\Factory\Loader\BasePhpFormulaLoader; + +/** + * Loads formulae from Symfony2 PHP templates. + * + * @author Kris Wallsmith + */ +class AsseticHelperFormulaLoader extends BasePhpFormulaLoader +{ + protected function registerPrototypes() + { + return array( + '$view[\'assetic\']->assets(*)' => array(), + '$view[\'assetic\']->javascripts(*)' => array('output' => 'js/*.js'), + '$view[\'assetic\']->stylesheets(*)' => array('output' => 'css/*.css'), + '$view["assetic"]->assets(*)' => array(), + '$view["assetic"]->javascripts(*)' => array('output' => 'js/*.js'), + '$view["assetic"]->stylesheets(*)' => array('output' => 'css/*.css'), + '$view->get(\'assetic\')->assets(*)' => array(), + '$view->get(\'assetic\')->javascripts(*)' => array('output' => 'js/*.js'), + '$view->get(\'assetic\')->stylesheets(*)' => array('output' => 'css/*.css'), + '$view->get("assetic")->assets(*)' => array(), + '$view->get("assetic")->javascripts(*)' => array('output' => 'js/*.js'), + '$view->get("assetic")->stylesheets(*)' => array('output' => 'css/*.css'), + ); + } + + protected function registerSetupCode() + { + return <<<'EOF' +class Helper +{ + public function assets() + { + global $_call; + $_call = func_get_args(); + } + + public function javascripts() + { + global $_call; + $_call = func_get_args(); + } + + public function stylesheets() + { + global $_call; + $_call = func_get_args(); + } +} + +class View extends ArrayObject +{ + public function __construct(Helper $helper) + { + parent::__construct(array('assetic' => $helper)); + } + + public function get() + { + return $this['assetic']; + } +} + +$view = new View(new Helper()); +EOF; + } +} diff --git a/src/Symfony/Bundle/AsseticBundle/Factory/DirectoryResource.php b/src/Symfony/Bundle/AsseticBundle/Factory/Resource/DirectoryResource.php similarity index 95% rename from src/Symfony/Bundle/AsseticBundle/Factory/DirectoryResource.php rename to src/Symfony/Bundle/AsseticBundle/Factory/Resource/DirectoryResource.php index 72b1ee68f8..55c13bea0d 100644 --- a/src/Symfony/Bundle/AsseticBundle/Factory/DirectoryResource.php +++ b/src/Symfony/Bundle/AsseticBundle/Factory/Resource/DirectoryResource.php @@ -9,7 +9,7 @@ * with this source code in the file LICENSE. */ -namespace Symfony\Bundle\AsseticBundle\Factory; +namespace Symfony\Bundle\AsseticBundle\Factory\Resource; use Assetic\Factory\Resource\DirectoryResource as BaseDirectoryResource; use Symfony\Component\Templating\Loader\LoaderInterface; diff --git a/src/Symfony/Bundle/AsseticBundle/Factory/DirectoryResourceIterator.php b/src/Symfony/Bundle/AsseticBundle/Factory/Resource/DirectoryResourceIterator.php similarity index 95% rename from src/Symfony/Bundle/AsseticBundle/Factory/DirectoryResourceIterator.php rename to src/Symfony/Bundle/AsseticBundle/Factory/Resource/DirectoryResourceIterator.php index 635a9b115b..9e54074e9b 100644 --- a/src/Symfony/Bundle/AsseticBundle/Factory/DirectoryResourceIterator.php +++ b/src/Symfony/Bundle/AsseticBundle/Factory/Resource/DirectoryResourceIterator.php @@ -9,7 +9,7 @@ * with this source code in the file LICENSE. */ -namespace Symfony\Bundle\AsseticBundle\Factory; +namespace Symfony\Bundle\AsseticBundle\Factory\Resource; use Symfony\Component\Templating\Loader\LoaderInterface; diff --git a/src/Symfony/Bundle/AsseticBundle/Factory/FileResource.php b/src/Symfony/Bundle/AsseticBundle/Factory/Resource/FileResource.php similarity index 97% rename from src/Symfony/Bundle/AsseticBundle/Factory/FileResource.php rename to src/Symfony/Bundle/AsseticBundle/Factory/Resource/FileResource.php index 6465ca49d2..0aa3153f8b 100644 --- a/src/Symfony/Bundle/AsseticBundle/Factory/FileResource.php +++ b/src/Symfony/Bundle/AsseticBundle/Factory/Resource/FileResource.php @@ -9,7 +9,7 @@ * with this source code in the file LICENSE. */ -namespace Symfony\Bundle\AsseticBundle\Factory; +namespace Symfony\Bundle\AsseticBundle\Factory\Resource; use Assetic\Factory\Resource\ResourceInterface; use Symfony\Bundle\FrameworkBundle\Templating\TemplateReference; diff --git a/src/Symfony/Bundle/AsseticBundle/Resources/config/assetic.xml b/src/Symfony/Bundle/AsseticBundle/Resources/config/assetic.xml index 176be667d1..8682eadda5 100644 --- a/src/Symfony/Bundle/AsseticBundle/Resources/config/assetic.xml +++ b/src/Symfony/Bundle/AsseticBundle/Resources/config/assetic.xml @@ -11,7 +11,7 @@ Assetic\Factory\Loader\CachedFormulaLoader Assetic\Cache\ConfigCache Symfony\Bundle\AsseticBundle\CacheWarmer\AssetManagerCacheWarmer - Symfony\Bundle\AsseticBundle\Factory\DirectoryResource + Symfony\Bundle\AsseticBundle\Factory\Resource\DirectoryResource Assetic\Filter\CoffeeScriptFilter Assetic\Filter\CssRewriteFilter diff --git a/src/Symfony/Bundle/AsseticBundle/Resources/config/templating_php.xml b/src/Symfony/Bundle/AsseticBundle/Resources/config/templating_php.xml index bfa800ed80..6122725ad4 100644 --- a/src/Symfony/Bundle/AsseticBundle/Resources/config/templating_php.xml +++ b/src/Symfony/Bundle/AsseticBundle/Resources/config/templating_php.xml @@ -6,8 +6,7 @@ Symfony\Bundle\AsseticBundle\Templating\AsseticHelper - Symfony\Bundle\AsseticBundle\Templating\FormulaLoader - + Symfony\Bundle\AsseticBundle\Factory\Loader\AsseticHelperFormulaLoader @@ -28,6 +27,7 @@ + diff --git a/src/Symfony/Bundle/AsseticBundle/Resources/config/templating_twig.xml b/src/Symfony/Bundle/AsseticBundle/Resources/config/templating_twig.xml index 5a77911206..e5f8ec9030 100644 --- a/src/Symfony/Bundle/AsseticBundle/Resources/config/templating_twig.xml +++ b/src/Symfony/Bundle/AsseticBundle/Resources/config/templating_twig.xml @@ -8,7 +8,6 @@ Symfony\Bundle\AsseticBundle\Twig\DynamicExtension Symfony\Bundle\AsseticBundle\Twig\StaticExtension Assetic\Extension\Twig\TwigFormulaLoader - diff --git a/src/Symfony/Bundle/AsseticBundle/Tests/FunctionalTest.php b/src/Symfony/Bundle/AsseticBundle/Tests/FunctionalTest.php index 8f96fcc6d0..c16bb94c2f 100644 --- a/src/Symfony/Bundle/AsseticBundle/Tests/FunctionalTest.php +++ b/src/Symfony/Bundle/AsseticBundle/Tests/FunctionalTest.php @@ -90,8 +90,6 @@ class FunctionalTest extends \PHPUnit_Framework_TestCase public function testPhpRenderDebug() { - $this->markTestIncomplete('PHP templating is not ready yet.'); - $kernel = new TestKernel('test', true); $kernel->boot(); $container = $kernel->getContainer(); diff --git a/src/Symfony/Bundle/AsseticBundle/Tests/Resources/config/config.yml b/src/Symfony/Bundle/AsseticBundle/Tests/Resources/config/config.yml index 39f3048055..8b75ff262f 100644 --- a/src/Symfony/Bundle/AsseticBundle/Tests/Resources/config/config.yml +++ b/src/Symfony/Bundle/AsseticBundle/Tests/Resources/config/config.yml @@ -6,7 +6,7 @@ framework: secret: xxxxxxxxxx router: { resource: "%kernel.root_dir%/config/routing.yml" } validation: { enabled: true, annotations: true } - templating: { engines: ['twig'] } + templating: { engines: ['twig', 'php'] } session: default_locale: en lifetime: 3600