浏览代码

[AsseticBundle] added configuration for cssembed filter

Kris Wallsmith 14 年之前
父节点
当前提交
663f8a052e

+ 2 - 0
src/Symfony/Bundle/AsseticBundle/AsseticBundle.php

@@ -15,6 +15,7 @@ use Symfony\Bundle\AsseticBundle\DependencyInjection\Compiler\AssetFactoryPass;
 use Symfony\Bundle\AsseticBundle\DependencyInjection\Compiler\AssetManagerPass;
 use Symfony\Bundle\AsseticBundle\DependencyInjection\Compiler\CheckYuiFilterPass;
 use Symfony\Bundle\AsseticBundle\DependencyInjection\Compiler\FilterManagerPass;
+use Symfony\Bundle\AsseticBundle\DependencyInjection\Compiler\CheckCssEmbedFilterPass;
 use Symfony\Bundle\AsseticBundle\DependencyInjection\Compiler\CheckClosureFilterPass;
 use Symfony\Bundle\AsseticBundle\DependencyInjection\Compiler\TemplatingPass;
 use Symfony\Component\DependencyInjection\ContainerBuilder;
@@ -32,6 +33,7 @@ class AsseticBundle extends Bundle
         parent::build($container);
 
         $container->addCompilerPass(new CheckClosureFilterPass());
+        $container->addCompilerPass(new CheckCssEmbedFilterPass());
         $container->addCompilerPass(new CheckYuiFilterPass());
         $container->addCompilerPass(new TemplatingPass());
         $container->addCompilerPass(new AssetFactoryPass());

+ 31 - 0
src/Symfony/Bundle/AsseticBundle/DependencyInjection/Compiler/CheckCssEmbedFilterPass.php

@@ -0,0 +1,31 @@
+<?php
+
+/*
+ * This file is part of the Symfony framework.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * This source file is subject to the MIT license that is bundled
+ * with this source code in the file LICENSE.
+ */
+
+namespace Symfony\Bundle\AsseticBundle\DependencyInjection\Compiler;
+
+use Symfony\Component\DependencyInjection\ContainerBuilder;
+use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
+
+/**
+ * Checks that the location of the CssEmbed JAR has been configured.
+ *
+ * @author Kris Wallsmith <kris@symfony.com>
+ */
+class CheckCssEmbedFilterPass implements CompilerPassInterface
+{
+    public function process(ContainerBuilder $container)
+    {
+        if ($container->hasDefinition('assetic.filter.cssembed') &&
+            !$container->getParameterBag()->resolveValue($container->getParameter('assetic.filter.cssembed.jar'))) {
+            throw new \RuntimeException('The "assetic.filters.cssembed" configuration requires a "jar" value.');
+        }
+    }
+}

+ 20 - 0
src/Symfony/Bundle/AsseticBundle/Resources/config/filters/cssembed.xml

@@ -0,0 +1,20 @@
+<?xml version="1.0" ?>
+
+<container xmlns="http://symfony.com/schema/dic/services"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
+
+    <parameters>
+        <parameter key="assetic.filter.cssembed.class">Assetic\Filter\CssEmbedFilter</parameter>
+        <parameter key="assetic.filter.cssembed.java">%assetic.java.bin%</parameter>
+        <parameter key="assetic.filter.cssembed.jar" />
+    </parameters>
+
+    <services>
+        <service id="assetic.filter.cssembed" class="%assetic.filter.cssembed.class%">
+            <tag name="assetic.filter" alias="cssembed" />
+            <argument>%assetic.filter.cssembed.jar%</argument>
+            <argument>%assetic.filter.cssembed.java%</argument>
+        </service>
+    </services>
+</container>