| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123 | 
							- <?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\Routing;
 - 
 - use Assetic\Asset\AssetInterface;
 - use Assetic\Factory\LazyAssetManager;
 - use Symfony\Bundle\AsseticBundle\Config\AsseticResource;
 - use Symfony\Component\Config\Loader\Loader;
 - use Symfony\Component\Config\Resource\FileResource;
 - use Symfony\Component\Routing\Route;
 - use Symfony\Component\Routing\RouteCollection;
 - 
 - /**
 -  * Loads routes for all assets.
 -  *
 -  * Assets should only be served through the routing system for ease-of-use
 -  * during development.
 -  *
 -  * For example, add the following to your application's routing_dev.yml:
 -  *
 -  *     _assetic:
 -  *         resource: .
 -  *         type:     assetic
 -  *
 -  * In a production environment you should use the `assetic:dump` command to
 -  * create static asset files.
 -  *
 -  * @author Kris Wallsmith <kris@symfony.com>
 -  */
 - class AsseticLoader extends Loader
 - {
 -     protected $am;
 - 
 -     public function __construct(LazyAssetManager $am)
 -     {
 -         $this->am = $am;
 -     }
 - 
 -     public function load($routingResource, $type = null)
 -     {
 -         $routes = new RouteCollection();
 - 
 -         // resources
 -         foreach ($this->am->getResources() as $resources) {
 -             if (!$resources instanceof \Traversable) {
 -                 $resources = array($resources);
 -             }
 -             foreach ($resources as $resource) {
 -                 $routes->addResource(new AsseticResource($resource));
 -             }
 -         }
 - 
 -         // routes
 -         foreach ($this->am->getNames() as $name) {
 -             $asset = $this->am->get($name);
 -             $formula = $this->am->getFormula($name);
 - 
 -             $this->loadRouteForAsset($routes, $asset, $name);
 - 
 -             $debug = isset($formula[2]['debug']) ? $formula[2]['debug'] : $this->am->isDebug();
 -             $combine = isset($formula[2]['combine']) ? $formula[2]['combine'] : !$debug;
 - 
 -             // add a route for each "leaf" in debug mode
 -             if (!$combine) {
 -                 $i = 0;
 -                 foreach ($asset as $leaf) {
 -                     $this->loadRouteForAsset($routes, $leaf, $name, $i++);
 -                 }
 -             }
 -         }
 - 
 -         return $routes;
 -     }
 - 
 -     /**
 -      * Loads a route to serve an supplied asset.
 -      *
 -      * The fake front controller that {@link UseControllerWorker} adds to the
 -      * target URL will be removed before set as a route pattern.
 -      *
 -      * @param RouteCollection $routes The route collection
 -      * @param AssetInterface  $asset  The asset
 -      * @param string          $name   The name to use
 -      * @param integer         $pos    The leaf index
 -      */
 -     private function loadRouteForAsset(RouteCollection $routes, AssetInterface $asset, $name, $pos = null)
 -     {
 -         $defaults = array(
 -             '_controller' => 'assetic.controller:render',
 -             'name'        => $name,
 -             'pos'         => $pos,
 -         );
 - 
 -         // remove the fake front controller
 -         $pattern = str_replace('_controller/', '', $asset->getTargetPath());
 - 
 -         if ($format = pathinfo($pattern, PATHINFO_EXTENSION)) {
 -             $defaults['_format'] = $format;
 -         }
 - 
 -         $route = '_assetic_'.$name;
 -         if (null !== $pos) {
 -             $route .= '_'.$pos;
 -         }
 - 
 -         $routes->add($route, new Route($pattern, $defaults));
 -     }
 - 
 -     public function supports($resource, $type = null)
 -     {
 -         return 'assetic' == $type;
 -     }
 - }
 
 
  |