FileNameResolver.php 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Framework\View\Asset\PreProcessor;
  7. class FileNameResolver
  8. {
  9. /**
  10. * @var AlternativeSource[]
  11. */
  12. private $alternativeSources;
  13. /**
  14. * FileNameResolver constructor.
  15. * @param array $alternativeSources
  16. * @internal param AlternativeSource $alternativeSource
  17. */
  18. public function __construct(array $alternativeSources = [])
  19. {
  20. $this->alternativeSources = array_map(
  21. function (AlternativeSourceInterface $alternativeSource) {
  22. return $alternativeSource;
  23. },
  24. $alternativeSources
  25. );
  26. }
  27. /**
  28. * Resolve filename
  29. *
  30. * @param string $fileName
  31. * @return string
  32. */
  33. public function resolve($fileName)
  34. {
  35. $compiledFile = $fileName;
  36. $extension = pathinfo($fileName, PATHINFO_EXTENSION);
  37. foreach ($this->alternativeSources as $name => $alternative) {
  38. if (in_array($extension, $alternative->getAlternativesExtensionsNames(), true)
  39. && strpos(basename($fileName), '_') !== 0
  40. ) {
  41. $compiledFile = substr($fileName, 0, strlen($fileName) - strlen($extension) - 1);
  42. $compiledFile = $compiledFile . '.' . $name;
  43. }
  44. }
  45. return $compiledFile;
  46. }
  47. }