ILIAS  release_5-2 Revision v5.2.25-18-g3f80b82851
Assetic\Asset\Iterator\AssetCollectionIterator Class Reference

Iterates over an asset collection. More...

+ Inheritance diagram for Assetic\Asset\Iterator\AssetCollectionIterator:
+ Collaboration diagram for Assetic\Asset\Iterator\AssetCollectionIterator:

Public Member Functions

 __construct (AssetCollectionInterface $coll, \SplObjectStorage $clones)
 
 current ($raw=false)
 Returns a copy of the current asset with filters and a target URL applied. More...
 
 key ()
 
 next ()
 
 rewind ()
 
 valid ()
 
 hasChildren ()
 
 getChildren ()
 current() More...
 

Private Member Functions

 removeDuplicateVar ($name)
 

Private Attributes

 $assets
 
 $filters
 
 $vars
 
 $output
 
 $clones
 

Detailed Description

Iterates over an asset collection.

The iterator is responsible for cascading filters and target URL patterns from parent to child assets.

Author
Kris Wallsmith kris..nosp@m.wall.nosp@m.smith.nosp@m.@gma.nosp@m.il.co.nosp@m.m

Definition at line 24 of file AssetCollectionIterator.php.

Constructor & Destructor Documentation

◆ __construct()

Assetic\Asset\Iterator\AssetCollectionIterator::__construct ( AssetCollectionInterface  $coll,
\SplObjectStorage  $clones 
)

Definition at line 32 of file AssetCollectionIterator.php.

References Assetic\Asset\Iterator\AssetCollectionIterator\$clones, Assetic\Asset\AssetCollectionInterface\all(), Assetic\Asset\AssetInterface\getFilters(), Assetic\Asset\AssetInterface\getTargetPath(), and Assetic\Asset\AssetInterface\getVars().

33  {
34  $this->assets = $coll->all();
35  $this->filters = $coll->getFilters();
36  $this->vars = $coll->getVars();
37  $this->output = $coll->getTargetPath();
38  $this->clones = $clones;
39 
40  if (false === $pos = strrpos($this->output, '.')) {
41  $this->output .= '_*';
42  } else {
43  $this->output = substr($this->output, 0, $pos).'_*'.substr($this->output, $pos);
44  }
45  }
+ Here is the call graph for this function:

Member Function Documentation

◆ current()

Assetic\Asset\Iterator\AssetCollectionIterator::current (   $raw = false)

Returns a copy of the current asset with filters and a target URL applied.

Parameters
Boolean$rawReturns the unmodified asset if true
Returns

Definition at line 54 of file AssetCollectionIterator.php.

References Assetic\Asset\Iterator\AssetCollectionIterator\key(), and Assetic\Asset\Iterator\AssetCollectionIterator\removeDuplicateVar().

Referenced by Assetic\Asset\Iterator\AssetCollectionIterator\getChildren(), Assetic\Asset\Iterator\AssetCollectionIterator\hasChildren(), and Assetic\Asset\Iterator\AssetCollectionIterator\valid().

55  {
56  $asset = current($this->assets);
57 
58  if ($raw) {
59  return $asset;
60  }
61 
62  // clone once
63  if (!isset($this->clones[$asset])) {
64  $clone = $this->clones[$asset] = clone $asset;
65 
66  // generate a target path based on asset name
67  $name = sprintf('%s_%d', pathinfo($asset->getSourcePath(), PATHINFO_FILENAME) ?: 'part', $this->key() + 1);
68 
69  $name = $this->removeDuplicateVar($name);
70 
71  $clone->setTargetPath(str_replace('*', $name, $this->output));
72  } else {
73  $clone = $this->clones[$asset];
74  }
75 
76  // cascade filters
77  foreach ($this->filters as $filter) {
78  $clone->ensureFilter($filter);
79  }
80 
81  return $clone;
82  }
current($raw=false)
Returns a copy of the current asset with filters and a target URL applied.
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getChildren()

Assetic\Asset\Iterator\AssetCollectionIterator::getChildren ( )

current()

Definition at line 112 of file AssetCollectionIterator.php.

References Assetic\Asset\Iterator\AssetCollectionIterator\$clones, and Assetic\Asset\Iterator\AssetCollectionIterator\current().

113  {
114  return new self($this->current(), $this->clones);
115  }
current($raw=false)
Returns a copy of the current asset with filters and a target URL applied.
+ Here is the call graph for this function:

◆ hasChildren()

Assetic\Asset\Iterator\AssetCollectionIterator::hasChildren ( )

Definition at line 104 of file AssetCollectionIterator.php.

References Assetic\Asset\Iterator\AssetCollectionIterator\current().

105  {
106  return current($this->assets) instanceof AssetCollectionInterface;
107  }
current($raw=false)
Returns a copy of the current asset with filters and a target URL applied.
+ Here is the call graph for this function:

◆ key()

Assetic\Asset\Iterator\AssetCollectionIterator::key ( )

Definition at line 84 of file AssetCollectionIterator.php.

Referenced by Assetic\Asset\Iterator\AssetCollectionIterator\current().

85  {
86  return key($this->assets);
87  }
+ Here is the caller graph for this function:

◆ next()

Assetic\Asset\Iterator\AssetCollectionIterator::next ( )

Definition at line 89 of file AssetCollectionIterator.php.

90  {
91  return next($this->assets);
92  }

◆ removeDuplicateVar()

Assetic\Asset\Iterator\AssetCollectionIterator::removeDuplicateVar (   $name)
private

Definition at line 117 of file AssetCollectionIterator.php.

Referenced by Assetic\Asset\Iterator\AssetCollectionIterator\current().

118  {
119  foreach ($this->vars as $var) {
120  $var = '{'.$var.'}';
121  if (false !== strpos($name, $var) && false !== strpos($this->output, $var)) {
122  $name = str_replace($var, '', $name);
123  }
124  }
125 
126  return $name;
127  }
+ Here is the caller graph for this function:

◆ rewind()

Assetic\Asset\Iterator\AssetCollectionIterator::rewind ( )

Definition at line 94 of file AssetCollectionIterator.php.

95  {
96  return reset($this->assets);
97  }

◆ valid()

Assetic\Asset\Iterator\AssetCollectionIterator::valid ( )

Definition at line 99 of file AssetCollectionIterator.php.

References Assetic\Asset\Iterator\AssetCollectionIterator\current().

100  {
101  return false !== current($this->assets);
102  }
current($raw=false)
Returns a copy of the current asset with filters and a target URL applied.
+ Here is the call graph for this function:

Field Documentation

◆ $assets

Assetic\Asset\Iterator\AssetCollectionIterator::$assets
private

Definition at line 26 of file AssetCollectionIterator.php.

◆ $clones

Assetic\Asset\Iterator\AssetCollectionIterator::$clones
private

◆ $filters

Assetic\Asset\Iterator\AssetCollectionIterator::$filters
private

Definition at line 27 of file AssetCollectionIterator.php.

◆ $output

Assetic\Asset\Iterator\AssetCollectionIterator::$output
private

Definition at line 29 of file AssetCollectionIterator.php.

◆ $vars

Assetic\Asset\Iterator\AssetCollectionIterator::$vars
private

Definition at line 28 of file AssetCollectionIterator.php.


The documentation for this class was generated from the following file: