Mercurial > hg > isophonics-drupal-site
diff core/lib/Drupal/Core/Asset/LibraryDiscovery.php @ 0:4c8ae668cc8c
Initial import (non-working)
author | Chris Cannam |
---|---|
date | Wed, 29 Nov 2017 16:09:58 +0000 |
parents | |
children | 129ea1e6d783 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/core/lib/Drupal/Core/Asset/LibraryDiscovery.php Wed Nov 29 16:09:58 2017 +0000 @@ -0,0 +1,70 @@ +<?php + +namespace Drupal\Core\Asset; + +use Drupal\Core\Cache\CacheCollectorInterface; + +/** + * Discovers available asset libraries in Drupal. + */ +class LibraryDiscovery implements LibraryDiscoveryInterface { + + /** + * The library discovery cache collector. + * + * @var \Drupal\Core\Cache\CacheCollectorInterface + */ + protected $collector; + + /** + * The final library definitions, statically cached. + * + * hook_library_info_alter() and hook_js_settings_alter() allows modules + * and themes to dynamically alter a library definition (once per request). + * + * @var array + */ + protected $libraryDefinitions = []; + + /** + * Constructs a new LibraryDiscovery instance. + * + * @param \Drupal\Core\Cache\CacheCollectorInterface $library_discovery_collector + * The library discovery cache collector. + */ + public function __construct(CacheCollectorInterface $library_discovery_collector) { + $this->collector = $library_discovery_collector; + } + + /** + * {@inheritdoc} + */ + public function getLibrariesByExtension($extension) { + if (!isset($this->libraryDefinitions[$extension])) { + $libraries = $this->collector->get($extension); + $this->libraryDefinitions[$extension] = []; + foreach ($libraries as $name => $definition) { + $this->libraryDefinitions[$extension][$name] = $definition; + } + } + + return $this->libraryDefinitions[$extension]; + } + + /** + * {@inheritdoc} + */ + public function getLibraryByName($extension, $name) { + $extension = $this->getLibrariesByExtension($extension); + return isset($extension[$name]) ? $extension[$name] : FALSE; + } + + /** + * {@inheritdoc} + */ + public function clearCachedDefinitions() { + $this->libraryDefinitions = []; + $this->collector->clear(); + } + +}