Beispiel #1
0
 /**
  * Create an array of FilterInterface objects for a group.
  *
  * @param $name
  * @return array
  */
 protected function createFilterArray($name)
 {
     $config = $this->getConfig($name, 'filters', array());
     $filters = array();
     foreach ($config as $filter) {
         $filters[] = $this->filters->get($filter);
     }
     return $filters;
 }
 /**
  * Get filter by name
  *
  * @param  string $name
  * @return \Assetic\Filter\FilterInterface mixed
  */
 public function get($name)
 {
     if (array_key_exists($name, $this->mappings)) {
         if (is_callable($this->mappings[$name])) {
             // Allow use factory as mapping value
             return $this->mappings[$name]($this->container);
         }
         return $this->container[$this->mappings[$name]];
     }
     return parent::get($name);
 }
 protected function restoreFormulaFilters(array $formula)
 {
     if (!$this->filterManager instanceof FilterManager) {
         return $formula;
     }
     if (!$formula[0] instanceof \Assetic\Asset\FileAsset) {
         return $formula;
     }
     if (!isset($formula[1]) || !is_array($formula[1]) || !count($formula[1])) {
         return $formula;
     }
     $filters = array();
     foreach ($formula[1] as $filterName) {
         $filters[$filterName] = $this->filterManager->get($filterName);
     }
     $assetClass = get_class($formula[0]);
     $new = new $assetClass($formula[0]->getSourceRoot() . DIRECTORY_SEPARATOR . $formula[0]->getSourcePath(), $filters, $formula[0]->getSourceRoot(), $formula[0]->getSourcePath(), $formula[0]->getVars());
     $new->setTargetPath($formula[0]->getTargetPath());
     $formula[0] = $new;
     return $formula;
 }
 public function testFilterDumpWithFilterManager()
 {
     $filterManager = new FilterManager();
     $filterManager->set('css_optimize', $this->filter);
     $expected = 'body{baz:foo;foo:new;too:me}div.other,div.test{border:1px solid black}';
     $inputCss = 'body { foo:bar; too: me;} body { baz:foo; } body { foo: new }
     div.test { border: 1px solid black; }
     div.other { border: 1px solid black} ';
     $asset = new StringAsset($inputCss);
     $asset->ensureFilter($filterManager->get('css_optimize'));
     $result = $asset->dump();
     $this->assertEquals($expected, $result);
 }
 /**
  * Get filters to apply against resource.
  *
  * @param ResourceInterface $resource Resource with filters.
  * @return array Collection of filters to apply on resource.
  */
 private function getFilters(ResourceInterface $resource)
 {
     if (isset($resource->getOptions()['filters']) && count($resource->getOptions()['filters'])) {
         $result = [];
         foreach ($filters = $resource->getOptions()['filters'] as $filter) {
             if (strpos($filter, '?') !== 0 || strpos($filter, '?') === 0 && !$this->options['development']) {
                 $result[$filter] = $this->filterManager->get(ltrim($filter, '?'));
             }
         }
         return $result;
     } else {
         return [];
     }
 }
 /**
  * @param $alias
  *
  * @throws \InvalidArgumentException    When cant retrieve filter from service manager.
  *
  * @return mixed
  */
 public function get($alias)
 {
     if (parent::has($alias)) {
         return parent::get($alias);
     }
     $service = $this->serviceLocator;
     if (!$service->has($alias)) {
         throw new \InvalidArgumentException(sprintf('There is no "%s" filter in ZF2 service manager.', $alias));
     }
     $filter = $service->get($alias);
     if (!$filter instanceof FilterInterface) {
         $givenType = is_object($filter) ? get_class($filter) : gettype($filter);
         $message = 'Retrieved filter "%s" is not instanceof "Assetic\\Filter\\FilterInterface", but type was given %s';
         $message = sprintf($message, $alias, $givenType);
         throw new \InvalidArgumentException($message);
     }
     $this->set($alias, $filter);
     return $filter;
 }
 public function get($name)
 {
     return isset($this->mappings[$name]) ? $this->container->get($this->mappings[$name]) : parent::get($name);
 }