コード例 #1
0
 /**
  * Filter resource.
  *
  * Filter resource, applying filters and saving output into output location.
  *
  * @param ResourceInterface $resource Resource to filter.
  * @return ResourceInterface Resulting filtered resources.
  */
 private function filterResource(ResourceInterface $resource, array $filters)
 {
     if ($resource instanceof FileResource) {
         $asset = new FileAsset($resource->getSource(), $filters);
     } elseif ($resource instanceof HttpResource) {
         $asset = new HttpAsset($resource->getSource(), $filters);
     } elseif ($resource instanceof StringResource) {
         $asset = new StringAsset($resource->getSource(), $filters, $resource->getSourceRoot());
     } else {
         throw new InvalidArgumentException(sprintf('Instance of "%s" expected, "%s" given.', implode('", "', array('RunOpenCode\\AssetsInjection\\Resource\\FileResource', 'RunOpenCode\\AssetsInjection\\Resource\\HttpResource', 'RunOpenCode\\AssetsInjection\\Resource\\StringResource')), get_class($resource)));
     }
     $asset->setTargetPath($this->calculateTargetFilename($resource));
     $path = sprintf('%s%s%s', $this->options['output_dir'], DIRECTORY_SEPARATOR, $asset->getTargetPath());
     if (!file_exists($path) || filectime($path) !== $resource->getLastModified()) {
         $this->assetWriter->writeAsset($asset);
         touch($path, $resource->getLastModified() ? $resource->getLastModified() : time());
     }
     return new FileResource($path);
 }