summaryrefslogtreecommitdiff
path: root/buildscripts/phpbuilder/build.php
diff options
context:
space:
mode:
authorxue <>2006-01-28 17:09:31 +0000
committerxue <>2006-01-28 17:09:31 +0000
commit568a5cea4833a3316f3741dcd32699334f770d26 (patch)
tree97fc2e42696ce9606e2a426d421f28f188951f20 /buildscripts/phpbuilder/build.php
parent785fa814501d66e94d07a872d5ff69e26baf413d (diff)
Rename "tools" to "buildscripts".
Diffstat (limited to 'buildscripts/phpbuilder/build.php')
-rw-r--r--buildscripts/phpbuilder/build.php99
1 files changed, 99 insertions, 0 deletions
diff --git a/buildscripts/phpbuilder/build.php b/buildscripts/phpbuilder/build.php
new file mode 100644
index 00000000..6df74923
--- /dev/null
+++ b/buildscripts/phpbuilder/build.php
@@ -0,0 +1,99 @@
+#!/usr/bin/php
+<?php
+/**
+ * Prado build file.
+ *
+ * This script compresses a list of Prado PHP script files
+ * and merges them into one for performance redistribution.
+ *
+ * @author Qiang Xue <qiang.xue@gmail.com>
+ * @link http://www.pradosoft.com/
+ * @copyright Copyright &copy; 2005 PradoSoft
+ * @license http://www.pradosoft.com/license/
+ * @version $Revision: $ $Date: $
+ * @package Tools
+ */
+
+/**
+ * The merged file name
+ */
+define('OUTPUT_FILE','pradolite.php');
+/**
+ * The framework directory
+ */
+define('FRAMEWORK_DIR',realpath(dirname(__FILE__).'/../../framework'));
+/**
+ * The file containing script list to be built
+ */
+define('SCRIPT_FILES',dirname(__FILE__).'/files.txt');
+
+if(FRAMEWORK_DIR===false)
+ die('Unable to determine the installation directory of Prado Framework.');
+if(!is_file(SCRIPT_FILES))
+ die('Unable to read '.SCRIPT_FILES.'.');
+
+$output='';
+
+$lines=file(SCRIPT_FILES);
+foreach($lines as $line)
+{
+ $line=trim($line);
+ if($line==='' || $line[0]==='#')
+ continue;
+ echo 'adding '.FRAMEWORK_DIR.'/'.$line."\n";
+ $input=file_get_contents(FRAMEWORK_DIR.'/'.$line);
+ $input = strip_comments($input);
+ $input=strtr($input,"\r",' ');
+ $input=preg_replace("/\s*(\n+\s*){2,}\s*/m","\n",$input);
+ $input=preg_replace('/^Prado::using\([^\*]*?\);/mu','',$input);
+ $input=preg_replace('/^(require|require_once)\s*\(.*?;/mu','',$input);
+ $input=preg_replace('/^(include|include_once)\s*\(.*?;/mu','',$input);
+
+ //remove internal logging
+ $input=preg_replace('/^\s*Prado::trace.*\s*;\s*$/mu','',$input);
+
+ $output.=$input;
+}
+
+file_put_contents(FRAMEWORK_DIR.'/'.OUTPUT_FILE,$output);
+
+function strip_comments($source)
+{
+ $tokens = token_get_all($source);
+ /* T_ML_COMMENT does not exist in PHP 5.
+ * The following three lines define it in order to
+ * preserve backwards compatibility.
+ *
+ * The next two lines define the PHP 5-only T_DOC_COMMENT,
+ * which we will mask as T_ML_COMMENT for PHP 4.
+ */
+ if (!defined('T_ML_COMMENT')) {
+ @define('T_ML_COMMENT', T_COMMENT);
+ } else {
+ @define('T_DOC_COMMENT', T_ML_COMMENT);
+ }
+ $output = '';
+ foreach ($tokens as $token) {
+ if (is_string($token)) {
+ // simple 1-character token
+ $output .= $token;
+ } else {
+ // token array
+ list($id, $text) = $token;
+ switch ($id) {
+ case T_COMMENT:
+ case T_ML_COMMENT: // we've defined this
+ case T_DOC_COMMENT: // and this
+ // no action on comments
+ break;
+ default:
+ // anything else -> output "as is"
+ $output .= $text;
+ break;
+ }
+ }
+ }
+ return $output;
+}
+
+?> \ No newline at end of file