/** * Calculates new file name for resource that will be dumped onto new location. * * @param ResourceInterface $resource Resource which will be dumped in new location. * @return string New file name. */ private function calculateTargetFilename(ResourceInterface $resource) { if ($resource instanceof StringResource) { $filename = isset($resource->getOptions()['filename']) ? $resource->getOptions()['filename'] : $resource->getKey(); if ($resource instanceof JavascriptStringResource) { $extension = AssetType::JAVASCRIPT; } elseif ($resource instanceof StylesheetStringResource) { $extension = AssetType::STYLESHEET; } else { throw new InvalidArgumentException(sprintf('Unable to determine resource type, instance of "%s" expected, "%s" given.', implode('", "', array('RunOpenCode\\AssetsInjection\\Resource\\JavascriptStringResource', 'RunOpenCode\\AssetsInjection\\Resource\\StylesheetStringResource')), get_class($resource))); } } else { $filename = pathinfo($resource->getSource(), PATHINFO_FILENAME); $extension = AssetType::guessAssetType($resource->getSource()); } $environment = $this->options['development'] ? $this->options['development_environment_extension_suffix'] : $this->options['production_environment_extension_suffix']; return sprintf('%s%s%s%s', $resource->getKey() . '.', $filename . '.', $environment ? $environment . '.' : '', $extension); }