diff options
| author | xue <> | 2006-01-28 17:09:31 +0000 | 
|---|---|---|
| committer | xue <> | 2006-01-28 17:09:31 +0000 | 
| commit | 568a5cea4833a3316f3741dcd32699334f770d26 (patch) | |
| tree | 97fc2e42696ce9606e2a426d421f28f188951f20 /buildscripts/phpbuilder/build.php | |
| parent | 785fa814501d66e94d07a872d5ff69e26baf413d (diff) | |
Rename "tools" to "buildscripts".
Diffstat (limited to 'buildscripts/phpbuilder/build.php')
| -rw-r--r-- | buildscripts/phpbuilder/build.php | 99 | 
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 © 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 | 
