class AssetCollection

A collection of assets.

@author Kris Wallsmith <kris.wallsmith@gmail.com>

Hierarchy

Expanded class hierarchy of AssetCollection

1 file declares its use of AssetCollection
AssetFactory.php in drupal/core/vendor/kriswallsmith/assetic/src/Assetic/Factory/AssetFactory.php

File

drupal/core/vendor/kriswallsmith/assetic/src/Assetic/Asset/AssetCollection.php, line 24

Namespace

Assetic\Asset
View source
class AssetCollection implements \IteratorAggregate, AssetCollectionInterface {
  private $assets;
  private $filters;
  private $sourceRoot;
  private $targetPath;
  private $content;
  private $clones;
  private $vars;
  private $values;

  /**
   * Constructor.
   *
   * @param array  $assets     Assets for the current collection
   * @param array  $filters    Filters for the current collection
   * @param string $sourceRoot The root directory
   * @param array  $vars
   */
  public function __construct($assets = array(), $filters = array(), $sourceRoot = null, array $vars = array()) {
    $this->assets = array();
    foreach ($assets as $asset) {
      $this
        ->add($asset);
    }
    $this->filters = new FilterCollection($filters);
    $this->sourceRoot = $sourceRoot;
    $this->clones = new \SplObjectStorage();
    $this->vars = $vars;
    $this->values = array();
  }
  public function __clone() {
    $this->filters = clone $this->filters;
    $this->clones = new \SplObjectStorage();
  }
  public function all() {
    return $this->assets;
  }
  public function add(AssetInterface $asset) {
    $this->assets[] = $asset;
  }
  public function removeLeaf(AssetInterface $needle, $graceful = false) {
    foreach ($this->assets as $i => $asset) {
      $clone = isset($this->clones[$asset]) ? $this->clones[$asset] : null;
      if (in_array($needle, array(
        $asset,
        $clone,
      ), true)) {
        unset($this->clones[$asset], $this->assets[$i]);
        return true;
      }
      if ($asset instanceof AssetCollectionInterface && $asset
        ->removeLeaf($needle, true)) {
        return true;
      }
    }
    if ($graceful) {
      return false;
    }
    throw new \InvalidArgumentException('Leaf not found.');
  }
  public function replaceLeaf(AssetInterface $needle, AssetInterface $replacement, $graceful = false) {
    foreach ($this->assets as $i => $asset) {
      $clone = isset($this->clones[$asset]) ? $this->clones[$asset] : null;
      if (in_array($needle, array(
        $asset,
        $clone,
      ), true)) {
        unset($this->clones[$asset]);
        $this->assets[$i] = $replacement;
        return true;
      }
      if ($asset instanceof AssetCollectionInterface && $asset
        ->replaceLeaf($needle, $replacement, true)) {
        return true;
      }
    }
    if ($graceful) {
      return false;
    }
    throw new \InvalidArgumentException('Leaf not found.');
  }
  public function ensureFilter(FilterInterface $filter) {
    $this->filters
      ->ensure($filter);
  }
  public function getFilters() {
    return $this->filters
      ->all();
  }
  public function clearFilters() {
    $this->filters
      ->clear();
  }
  public function load(FilterInterface $additionalFilter = null) {

    // loop through leaves and load each asset
    $parts = array();
    foreach ($this as $asset) {
      $asset
        ->load($additionalFilter);
      $parts[] = $asset
        ->getContent();
    }
    $this->content = implode("\n", $parts);
  }
  public function dump(FilterInterface $additionalFilter = null) {

    // loop through leaves and dump each asset
    $parts = array();
    foreach ($this as $asset) {
      $parts[] = $asset
        ->dump($additionalFilter);
    }
    return implode("\n", $parts);
  }
  public function getContent() {
    return $this->content;
  }
  public function setContent($content) {
    $this->content = $content;
  }
  public function getSourceRoot() {
    return $this->sourceRoot;
  }
  public function getSourcePath() {
  }
  public function getTargetPath() {
    return $this->targetPath;
  }
  public function setTargetPath($targetPath) {
    $this->targetPath = $targetPath;
  }

  /**
   * Returns the highest last-modified value of all assets in the current collection.
   *
   * @return integer|null A UNIX timestamp
   */
  public function getLastModified() {
    if (!count($this->assets)) {
      return;
    }
    $mtime = 0;
    foreach ($this as $asset) {
      $assetMtime = $asset
        ->getLastModified();
      if ($assetMtime > $mtime) {
        $mtime = $assetMtime;
      }
    }
    return $mtime;
  }

  /**
   * Returns an iterator for looping recursively over unique leaves.
   */
  public function getIterator() {
    return new \RecursiveIteratorIterator(new AssetCollectionFilterIterator(new AssetCollectionIterator($this, $this->clones)));
  }
  public function getVars() {
    return $this->vars;
  }
  public function setValues(array $values) {
    $this->values = $values;
    foreach ($this as $asset) {
      $asset
        ->setValues(array_intersect_key($values, array_flip($asset
        ->getVars())));
    }
  }
  public function getValues() {
    return $this->values;
  }

}

Members

Namesort descending Modifiers Type Description Overrides
AssetCollection::$assets private property
AssetCollection::$clones private property
AssetCollection::$content private property
AssetCollection::$filters private property
AssetCollection::$sourceRoot private property
AssetCollection::$targetPath private property
AssetCollection::$values private property
AssetCollection::$vars private property
AssetCollection::add public function Adds an asset to the current collection. Overrides AssetCollectionInterface::add
AssetCollection::all public function Returns all child assets. Overrides AssetCollectionInterface::all 1
AssetCollection::clearFilters public function Clears all filters from the current asset. Overrides AssetInterface::clearFilters
AssetCollection::dump public function Applies dump filters and returns the asset as a string. Overrides AssetInterface::dump 1
AssetCollection::ensureFilter public function Ensures the current asset includes the supplied filter. Overrides AssetInterface::ensureFilter
AssetCollection::getContent public function Returns the loaded content of the current asset. Overrides AssetInterface::getContent
AssetCollection::getFilters public function Returns an array of filters currently applied. Overrides AssetInterface::getFilters
AssetCollection::getIterator public function Returns an iterator for looping recursively over unique leaves. 1
AssetCollection::getLastModified public function Returns the highest last-modified value of all assets in the current collection. Overrides AssetInterface::getLastModified 1
AssetCollection::getSourcePath public function Returns the relative path for the source asset. Overrides AssetInterface::getSourcePath
AssetCollection::getSourceRoot public function Returns an absolute path or URL to the source asset's root directory. Overrides AssetInterface::getSourceRoot
AssetCollection::getTargetPath public function Returns the URL for the current asset. Overrides AssetInterface::getTargetPath
AssetCollection::getValues public function Returns the current values for this asset. Overrides AssetInterface::getValues
AssetCollection::getVars public function Returns an array of variable names for this asset. Overrides AssetInterface::getVars
AssetCollection::load public function Loads the asset into memory and applies load filters. Overrides AssetInterface::load 1
AssetCollection::removeLeaf public function Removes a leaf. Overrides AssetCollectionInterface::removeLeaf
AssetCollection::replaceLeaf public function Replaces an existing leaf with a new one. Overrides AssetCollectionInterface::replaceLeaf
AssetCollection::setContent public function Sets the content of the current asset. Overrides AssetInterface::setContent
AssetCollection::setTargetPath public function Sets the URL for the current asset. Overrides AssetInterface::setTargetPath
AssetCollection::setValues public function Sets the values for the asset's variables. Overrides AssetInterface::setValues 1
AssetCollection::__clone public function
AssetCollection::__construct public function Constructor. 1