Browse Source

[AsseticBundle] added configuration for automatically apply filters to assets based on target path

Kris Wallsmith 14 năm trước cách đây
mục cha
commit
4ae40f1ea4

+ 10 - 0
src/Symfony/Bundle/AsseticBundle/DependencyInjection/AsseticExtension.php

@@ -15,6 +15,7 @@ use Symfony\Component\Config\FileLocator;
 use Symfony\Component\Config\Definition\Processor;
 use Symfony\Component\DependencyInjection\ContainerBuilder;
 use Symfony\Component\DependencyInjection\Definition;
+use Symfony\Component\DependencyInjection\DefinitionDecorator;
 use Symfony\Component\DependencyInjection\Loader\XmlFileLoader;
 use Symfony\Component\DependencyInjection\Reference;
 use Symfony\Component\HttpKernel\DependencyInjection\Extension;
@@ -79,6 +80,15 @@ class AsseticExtension extends Extension
                 unset($filter['file']);
             }
 
+            if (isset($filter['apply_to'])) {
+                $worker = new DefinitionDecorator('assetic.worker.ensure_filter');
+                $worker->replaceArgument(0, '/'.$filter['apply_to'].'/');
+                $worker->replaceArgument(1, new Reference('assetic.filter.'.$name));
+                $worker->addTag('assetic.factory_worker');
+
+                $container->setDefinition('assetic.filter.'.$name.'.worker', $worker);
+            }
+
             foreach ($filter as $key => $value) {
                 $container->setParameter('assetic.filter.'.$name.'.'.$key, $value);
             }

+ 6 - 0
src/Symfony/Bundle/AsseticBundle/Resources/config/assetic.xml

@@ -15,6 +15,7 @@
         <parameter key="assetic.coalescing_directory_resource.class">Assetic\Factory\Resource\CoalescingDirectoryResource</parameter>
         <parameter key="assetic.directory_resource.class">Symfony\Bundle\AsseticBundle\Factory\Resource\DirectoryResource</parameter>
         <parameter key="assetic.filter_manager.class">Symfony\Bundle\AsseticBundle\FilterManager</parameter>
+        <parameter key="assetic.worker.ensure_filter.class">Assetic\Factory\Worker\EnsureFilterWorker</parameter>
 
         <parameter key="assetic.node.paths" type="collection"></parameter>
         <parameter key="assetic.cache_dir">%kernel.cache_dir%/assetic</parameter>
@@ -54,5 +55,10 @@
             <tag name="kernel.cache_warmer" priority="10" />
             <argument type="service" id="service_container" />
         </service>
+
+        <service id="assetic.worker.ensure_filter" class="%assetic.worker.ensure_filter.class%" abstract="true" public="false">
+            <argument /> <!-- pattern -->
+            <argument /> <!-- filter -->
+        </service>
     </services>
 </container>

+ 2 - 1
src/Symfony/Bundle/AsseticBundle/Tests/Resources/config/config.yml

@@ -32,7 +32,8 @@ assetic:
             inputs: css/widget.sass
             filters: sass
     filters:
-        sass: ~
+        sass:
+            apply_to: "\.sass$"
         yui_css:
             jar: %kernel.root_dir/java/yui-compressor-2.4.6.jar
     twig: