/** * * * @file function.import_js.php * @package plugins * @author wangpeng20@baidu.com * @date 2012-12-17 10:47 */ function smarty_function_import_js($params) { //下面这行不能改,fis在build时会对路径做替换 $PATH = array(VUI_APP_PATH . '/../../data/import-js-lib/'); static $MATCHED = array(), $DEBUG = false, $IMPORTED = array(); require_once "inc.import_js.php"; $config = array('MATCHED' => &$MATCHED, 'IMPORTED' => &$IMPORTED, 'DEBUG' => &$DEBUG, 'PATH' => &$PATH); return '<script>' . importTangram(explode(',', $params['mod']), false, $config) . "</script>"; }
/** * * * @file function.import_js.php * @package plugins * @author wangpeng20@baidu.com * @date 2012-12-17 10:47 */ function importTangram($files, $returnFile = true, &$config) { // global $MATCHED, $DEBUG, $IMPORTED; $MATCHED =& $config['MATCHED']; $DEBUG =& $config['DEBUG']; $IMPORTED =& $config['IMPORTED']; $output = ""; if (is_string($files)) { $files = array($files); } else { if (!is_array($files)) { return $output; } } if ($DEBUG) { var_dump($files); } foreach ($files as $file) { if (strrpos($file, '*')) { $output .= importTangram(getPackage(str_replace(array(".", '*'), array('/', ''), $file)), true, $config); } elseif (in_array($file, $IMPORTED)) { continue; } else { $IMPORTED[] = $file; // echo "file name:".$file."\n"; $file = str_replace(".", '/', $file) . ".js"; // echo "file name:".$file."\n"; // echo "\n"; if ($DEBUG) { echo "Importing: " . $file . ", returnFile {$returnFile}\n"; } if (!in_array($file, $MATCHED)) { $content = file_get_contents(getRealFilePath($file, $config['PATH'])); if (!$content) { if ($DEBUG) { echo "no content... \n;"; } continue; } $MATCHED[] = $file; $matches = array(); //去掉注释 $content = trim(preg_replace("/\\/\\*(.*?)\\*\\//ies", "", $content)); $output .= preg_replace("/\\/\\/\\/import\\s+([\\w\\-\$]+(\\.[\\w\\-\$]+)*);?/ies", "importTangram('\\1',true,\$config)", $content); } } } return $output; }
function importTangram($files, $returnFile = true){ global $MATCHED, $DEBUG, $IMPORTED; $output = ""; if(is_string($files)){ $files = array($files); }else if(!is_array($files)){ return $output; } if($DEBUG) var_dump($files); foreach($files as $file){ if(strrpos($file, '*')){ $output .= importTangram(getPackage(str_replace(array(".", '*'), array('/', ''), $file))); }elseif(in_array($file, $IMPORTED)){ continue; }else{ $IMPORTED[] = $file; // echo "file name:".$file."\n"; $file = str_replace(".", '/', $file) . ".js"; // echo "file name:".$file."\n"; // echo "\n"; if($DEBUG) echo "Importing: " . $file . ", returnFile $returnFile\n"; if(!in_array($file, $MATCHED)){ $content = file_get_contents(getRealFilePath($file)); if(!$content){ if($DEBUG) echo "no content... \n;"; continue; } $MATCHED[] = $file; $matches = array(); //去掉注释 $content = trim(preg_replace("/\/\*(.*?)\*\//ies", "", $content)); $output .= preg_replace("/\/\/\/import\s+([\w\-\$]+(\.[\w\-\$]+)*);?/ies", "importTangram('\\1')", $content); } } } return $output; }
function importTangram($files, $returnFile = true) { global $MATCHED, $DEBUG, $IMPORTED; $output = ""; if (is_string($files)) { $files = array($files); } else { if (!is_array($files)) { return $output; } } if ($DEBUG) { var_dump($files); } foreach ($files as $file) { if (strrpos($file, '*')) { $output .= importTangram(getPackage(str_replace(array(".", '*'), array('/', ''), $file))); } elseif (in_array($file, $IMPORTED)) { continue; } else { $IMPORTED[] = $file; $file = str_replace(".", '/', $file) . ".js"; if ($DEBUG) { echo "Importing: " . $file . ", returnFile {$returnFile}\n"; } if (!in_array($file, $MATCHED)) { $content = getFileContents($file); if (!$content) { if ($DEBUG) { echo "no content... \n;"; } continue; } $MATCHED[] = $file; $matches = array(); //去掉注释 $content = trim(preg_replace("/\\/\\*(.*?)\\*\\//ies", "", $content)); $output .= preg_replace("/\\/\\/\\/+\\s*import\\s+([\\w\\-\$]+(\\.[\\w\\-\$]+)*);?/ies", "importTangram('\\1')", $content); } } } return $output; }