public function LibraryDependencyResolver::getMinimalRepresentativeSubset in Drupal 8
Same name and namespace in other branches
- 9 core/lib/Drupal/Core/Asset/LibraryDependencyResolver.php \Drupal\Core\Asset\LibraryDependencyResolver::getMinimalRepresentativeSubset()
- 10 core/lib/Drupal/Core/Asset/LibraryDependencyResolver.php \Drupal\Core\Asset\LibraryDependencyResolver::getMinimalRepresentativeSubset()
Gets the minimal representative subset of the given libraries.
A minimal representative subset means that any library in the given set of libraries that is a dependency of another library in the set, is removed.
Hence a minimal representative subset is the most compact representation possible of a set of libraries.
(Each asset library has dependencies and can therefore be seen as a tree. Hence the given list of libraries represent a forest. This function returns all roots of trees that are not a subtree of another tree in the forest.)
Parameters
string[] $libraries: A set of libraries.
Return value
string[] A representative subset of the given set of libraries.
Overrides LibraryDependencyResolverInterface::getMinimalRepresentativeSubset
File
- core/
lib/ Drupal/ Core/ Asset/ LibraryDependencyResolver.php, line 67
Class
- LibraryDependencyResolver
- Resolves the dependencies of asset (CSS/JavaScript) libraries.
Namespace
Drupal\Core\AssetCode
public function getMinimalRepresentativeSubset(array $libraries) {
assert(count($libraries) === count(array_unique($libraries)), '$libraries can\'t contain duplicate items.');
$minimal = [];
// Determine each library's dependencies.
$with_deps = [];
foreach ($libraries as $library) {
$with_deps[$library] = $this
->getLibrariesWithDependencies([
$library,
]);
}
foreach ($libraries as $library) {
$exists = FALSE;
foreach ($with_deps as $other_library => $dependencies) {
if ($library == $other_library) {
continue;
}
if (in_array($library, $dependencies)) {
$exists = TRUE;
break;
}
}
if (!$exists) {
$minimal[] = $library;
}
}
return $minimal;
}