public function getDependenciesForDependency(Kwf_Assets_Dependency_Abstract $dependency) { $deps = array(); if ($dependency->getMimeType() != 'text/javascript') { return $deps; } $fileContents = $dependency->getContentsSourceString(); if (strpos($fileContents, '// @require') === false) { //shortcut return $deps; } // 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(); }
public function getDependenciesForDependency(Kwf_Assets_Dependency_Abstract $dependency) { if ($dependency->getMimeType() == 'text/css') { if (strpos($dependency->getContentsSourceString(), 'el-breakpoint') === false) { return array(); } $contents = $dependency->getContentsSourceString(); if (preg_match_all('#([^}{]*){([^}]*kwf-responsive-el-(gt|lt):[^}]*)}#', $contents, $m)) { $selectors = array(); foreach (array_keys($m[1]) as $k) { $selector = trim($m[1][$k]); if (!isset($selectors[$selector])) { $selectors[$selector] = array(); } $ruleContent = $m[2][$k]; if (preg_match_all('#kwf-responsive-el-(gt|lt):\\s*([0-9]+)#', $ruleContent, $m2)) { foreach (array_keys($m2[1]) as $k2) { $mode = $m2[1][$k]; $size = $m2[2][$k]; if ($mode == 'gt') { $selectors[$selector][] = $size; } else { if ($mode == 'lt') { $selectors[$selector][] = array('maxWidth' => $size, 'cls' => 'lt' . $size); } } } } } $selectorNum = 0; foreach ($selectors as $selector => $breakpoints) { $selectorNum++; $d = new Kwf_Assets_ResponsiveEl_JsDependency($this->_providerList, trim($selector), $breakpoints, 'ResponsiveEl-' . $dependency->__toString() . '-' . $selectorNum); $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(); }
public function getDependenciesForDependency(Kwf_Assets_Dependency_Abstract $dependency) { if ($dependency->getMimeType() == 'text/css') { $contents = $dependency->getContentsSourceString(); if (strpos($contents, '@include modernizr') === false) { return array(); } if (preg_match_all('#@include modernizr(-no)?\\(([a-z0-9]+)#i', $contents, $m)) { $ret = array(); foreach (array_keys($m[2]) as $k) { $test = trim($m[2][$k]); $ret[] = $this->_providerList->findDependency('Modernizr' . ucfirst($test)); } return array(Kwf_Assets_Dependency_Abstract::DEPENDENCY_TYPE_REQUIRES => $ret); } } return array(); }
public function getDependenciesForDependency(Kwf_Assets_Dependency_Abstract $dependency) { if (!$dependency instanceof Kwf_Assets_Dependency_File_Js) { return array(); } if ($dependency->getFileNameWithType() == 'kwf/Kwf_js/Loader.js') { return array(Kwf_Assets_Dependency_Abstract::DEPENDENCY_TYPE_REQUIRES => array(new Kwf_Assets_Dependency_Dynamic_LoaderConfig($this->_providerList))); } $fileContents = $dependency->getContentsSourceString(); if (strpos($fileContents, 'Kwf.Loader.') === false) { //shortcut return array(); } // remove comments to avoid dependencies from docs/examples $fileContents = preg_replace('!/\\*[^*]*\\*+([^/][^*]*\\*+)*' . '/!', '', $fileContents); if (preg_match('#Kwf\\.Loader\\.#', $fileContents)) { $d = $this->_providerList->findDependency('Kwf.Loader'); if (!$d) { throw new Kwf_Exception("Can't find dependency 'Kwf.Loader'"); } return array(Kwf_Assets_Dependency_Abstract::DEPENDENCY_TYPE_REQUIRES => array($d)); } return array(); }