public function getDependenciesForDependency(Kwf_Assets_Dependency_Abstract $dependency)
 {
     if ($dependency->getContents('en') == 'A') {
         return array(Kwf_Assets_Dependency_Abstract::DEPENDENCY_TYPE_REQUIRES => array($this->_providerList->findDependency('B')));
     } else {
         if ($dependency->getContents('en') == 'B') {
             return array(Kwf_Assets_Dependency_Abstract::DEPENDENCY_TYPE_USES => array($this->_providerList->findDependency('C')));
         } else {
             if ($dependency->getContents('en') == 'C') {
                 return array(Kwf_Assets_Dependency_Abstract::DEPENDENCY_TYPE_REQUIRES => array($this->_providerList->findDependency('A')));
             }
         }
     }
 }
Exemple #2
0
 public function getDependenciesForDependency(Kwf_Assets_Dependency_Abstract $dependency)
 {
     $deps = array();
     if ($dependency->getMimeType() != 'text/javascript') {
         return $deps;
     }
     if ($dependency instanceof Kwf_Assets_Dependency_File) {
         $fileContents = file_get_contents($dependency->getAbsoluteFileName());
     } else {
         $fileContents = $dependency->getContents('en');
     }
     // remove comments to avoid dependencies from docs/examples
     $fileContents = preg_replace('!/\\*[^*]*\\*+([^/][^*]*\\*+)*' . '/!', '', $fileContents);
     if (preg_match_all('#^\\s*' . '// @require\\s+([a-zA-Z0-9\\./\\-_]+)\\s*$#m', $fileContents, $m)) {
         foreach ($m[1] as $f) {
             if (substr($f, -3) == '.js') {
                 //ignore paths
                 continue;
             }
             if ($f) {
                 $d = $this->_providerList->findDependency($f);
                 if (!$d) {
                     throw new Kwf_Exception("Can't resolve dependency: require '{$f}' for {$dependency}");
                 }
                 $deps[Kwf_Assets_Dependency_Abstract::DEPENDENCY_TYPE_REQUIRES][] = $d;
             }
         }
     }
     return $deps;
 }
 public function getDependenciesForDependency(Kwf_Assets_Dependency_Abstract $dependency)
 {
     if ($dependency->getMimeType() == 'text/css') {
         if (strpos($dependency->getContentsSourceString(), 'el-breakpoint') === false) {
             return array();
         }
         $contents = $dependency->getContents('en');
         if (preg_match_all('#([^}{]*){[^}]*kwf-responsive-el-gt:\\s*([0-9]+)#', $contents, $m)) {
             $selectors = array();
             foreach (array_keys($m[1]) as $k) {
                 if (!isset($selectors[$m[1][$k]])) {
                     $selectors[$m[1][$k]] = array();
                 }
                 $selectors[$m[1][$k]][] = $m[2][$k];
             }
             foreach ($selectors as $selector => $breakpoints) {
                 $d = new Kwf_Assets_ResponsiveEl_JsDependency(trim($selector), $breakpoints, 'ResponsiveEl-' . $dependency->__toString());
                 $d->addDependency(Kwf_Assets_Dependency_Abstract::DEPENDENCY_TYPE_COMMONJS, $this->_providerList->findDependency('kwf/responsive-el'), 'kwf/responsive-el');
                 $ret[] = $d;
             }
             return array(Kwf_Assets_Dependency_Abstract::DEPENDENCY_TYPE_REQUIRES => $ret);
         }
     }
     return array();
 }