コード例 #1
0
ファイル: PreCompiler.php プロジェクト: oktopost/aquarium
 /**
  * @param ResourceMap $map
  * @return array
  */
 private function getModified(ResourceMap $map)
 {
     $modified = [];
     foreach ($map->getMap() as $compiledResource => $sourceFiles) {
         $maxTimestamp = max(array_values($this->preCompileHelper->getTimestamps($sourceFiles)));
         $compiledTimestamp = 0;
         if ($this->config->IsAddTimestamp) {
             $compiledWithTimestamp = $this->timestampHelper->findFileWithTimestamp($compiledResource);
             if ($compiledWithTimestamp) {
                 $data = $this->preCompileHelper->getTimestamps([$compiledWithTimestamp]);
                 $compiledTimestamp = end($data);
             }
         } else {
             $data = $this->preCompileHelper->getTimestamps([$compiledResource]);
             $compiledTimestamp = end($data);
         }
         if ($maxTimestamp > $compiledTimestamp) {
             $modified[] = $compiledResource;
         }
     }
     return $modified;
 }
コード例 #2
0
 /**
  * @param Package $p
  * @param ResourceMap $compilationMap Aggregated compilation map.
  * @param array $modified Array of final Resource files that must be recompiled.
  * @return CompilerSetup
  */
 public function getRecompileTargets(Package $p, ResourceMap $compilationMap, array $modified)
 {
     $recompileSource = [];
     $unmodifiedFlipped = array_flip(array_keys($compilationMap->getMap()));
     // Key is the original source file
     $recompileSourceFlipped = [];
     foreach ($modified as $resource) {
         unset($unmodifiedFlipped[$resource]);
         $resourceSources = $compilationMap->getMapFor($resource);
         // This should not happen. Modified file that didn't have a map should not be present here.
         if (is_null($resourceSources)) {
             continue;
         }
         $recompileSourceFlipped = array_merge($recompileSourceFlipped, array_flip($resourceSources));
     }
     while (count($recompileSource) < count($recompileSourceFlipped)) {
         $recompileSource = array_keys($recompileSourceFlipped);
         // Find all
         foreach (array_keys($unmodifiedFlipped) as $unmodifiedTarget) {
             $sourceFiles = $compilationMap->getMapFor($unmodifiedTarget);
             if (!is_array($sourceFiles)) {
                 $sourceFiles = [$sourceFiles];
             }
             if (array_intersect($sourceFiles, $recompileSource)) {
                 unset($unmodifiedFlipped[$unmodifiedTarget]);
                 $recompileSourceFlipped = array_merge($recompileSourceFlipped, array_flip($sourceFiles));
             }
         }
     }
     $setup = new CompilerSetup($p);
     if ($unmodifiedFlipped) {
         $setup->Unchanged->add(array_keys($unmodifiedFlipped));
     }
     if ($recompileSource) {
         $setup->CompileTarget->add($recompileSource);
     }
     return $setup;
 }