/** * 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); }