home *** CD-ROM | disk | FTP | other *** search
/ Cricao de Sites - 650 Layouts Prontos / WebMasters.iso / Servidores / xampp-win32-1.6.7-installer.exe / php / php_beautifier < prev    next >
Text File  |  2008-07-02  |  9KB  |  253 lines

  1. #!H:\release167\NEU\xampp\php\.\php.exe -Cq
  2. <?php
  3.     /**
  4.     * Console script to use PHP_Beautifier from the command line
  5.     *
  6.     * Get more information using
  7.     *
  8.     * - php_beautifier --help (*nix)
  9.     * - php_beautifier.bat --help (Windows)
  10.     *
  11.     * PHP version 5
  12.     *
  13.     * LICENSE: This source file is subject to version 3.0 of the PHP license
  14.     * that is available through the world-wide-web at the following URI:
  15.     * http://www.php.net/license/3_0.txt.  If you did not receive a copy of
  16.     * the PHP License and are unable to obtain it through the web, please
  17.     * send a note to license@php.net so we can mail you a copy immediately.
  18.     * @category   PHP
  19.     * @package PHP_Beautifier
  20.     * @author Claudio Bustos <clbustos@dotgeek.org>
  21.     * @copyright  2004-2005 Claudio Bustos
  22.     * @link     http://pear.php.net/package/PHP_Beautifier
  23.     * @link     http://clbustos.dotgeek.org
  24.     * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
  25.     * @version    CVS: $Id:$
  26.     */
  27.     // First, test if the interpreter is the cli one
  28.     if (php_sapi_name() != 'cli') {
  29.         echo "You have to use php_beautifier with cli version of php. 
  30.         If you only have the cgi version, see Beautifier.php to
  31.         use this software within a script\n";
  32.         exit();
  33.     }
  34.     /**
  35.     * Require PEAR Class
  36.     */
  37.     require_once 'PEAR.php';
  38.     /**
  39.     * Require for PEAR Getopt class
  40.     */
  41.     require_once 'Console/Getopt.php';
  42.     /**
  43.     * Require for PEAR System class
  44.     */
  45.     require_once 'System.php';
  46.     /**
  47.     * Require the beautify_php class....
  48.     */
  49.     require_once 'PHP/Beautifier.php';
  50.     /**
  51.     * Require for PHP_Beautifier_Batch
  52.     */
  53.     require_once 'PHP/Beautifier/Batch.php';
  54.     define('PHP_Beautifier_WINDOWS', substr(PHP_OS, 0, 3) == 'WIN');
  55.     error_reporting(E_ALL);
  56.     // get log object
  57.     $oLog = PHP_Beautifier_Common::getLog();
  58.     
  59.     //default_options
  60.     $aInputFiles = STDIN;
  61.     $sOutputFile = STDOUT;
  62.     $sIndentChar = ' ';
  63.     $iIndentNumber = 4;
  64.     $aFilters = array();
  65.     $bRecursive = false;
  66.     $sCompress = false;
  67.     $aFiltersDirectory = array();
  68.     $iVerbose=PEAR_LOG_WARNING;
  69.     //end default_options
  70.     $argv = Console_Getopt::readPHPArgv();
  71.     $aLongOptions = array(
  72.         'input=',
  73.         'output=',
  74.         'indent_tabs==',
  75.         'indent_spaces==',
  76.         'filters=',
  77.         'directory_filters=',
  78.         'recursive',
  79.         'help',
  80.         'compress==',
  81.         'verbose'
  82.     );
  83.     $options = Console_Getopt::getopt($argv, "f:o:d:l:t::s::c::r?hv", $aLongOptions);
  84.     if (PEAR::isError($options)) {
  85.         usage($options);
  86.     }
  87.     foreach($options[0] as $opt) {
  88.         $sArgument = str_replace('-', '', $opt[0]);
  89.         $sParam = $opt[1];
  90.         $oLog->log("Arg: ".$sArgument."[$sParam]", PEAR_LOG_DEBUG);
  91.         switch ($sArgument) {
  92.             case 'input':
  93.             case 'f':
  94.                 $aInputFiles = ($sParam == '-') ? STDIN : array(
  95.                     $sParam
  96.                 );
  97.             break;
  98.  
  99.             case 'output':
  100.             case 'o':
  101.                 $sOutputFile = ($sParam == '-') ? STDOUT : $sParam;
  102.             break;
  103.  
  104.             case 'indent_tabs':
  105.             case 't':
  106.                 $sIndentChar = "\t";
  107.                 $iIndentNumber = ($sParam) ? (int)$sParam : 1;
  108.             break;
  109.  
  110.             case 'indent_spaces':
  111.             case 's':
  112.                 $sIndentChar = " ";
  113.                 $iIndentNumber = ($sParam) ? (int)$sParam : 4;
  114.             break;
  115.  
  116.             case 'filters':
  117.             case 'l':
  118.                 $aBruteFilters = explode(' ', $sParam);
  119.                 foreach($aBruteFilters as $sFilter) {
  120.                     $sNombre = '';
  121.                     preg_match("/([^(]*)(\((.*)\))*/", $sFilter, $aMatch);
  122.                     $sFilterName = $aMatch[1];
  123.                     $aFilterArgs = array();
  124.                     if (!empty($aMatch[3])) {
  125.                         $aSubArgs = explode(',', $aMatch[3]);
  126.                         foreach($aSubArgs as $sSubArg) {
  127.                             list($sKey, $sValue) = explode('=', $sSubArg);
  128.                             $aFilterArgs[$sKey] = $sValue;
  129.                         }
  130.                     }
  131.                     $aFilters[$sFilterName] = $aFilterArgs;
  132.                 }
  133.             break;
  134.  
  135.             case 'directory_filters':
  136.             case 'd':
  137.                 $sep = (PHP_Beautifier_WINDOWS) ? ';' : ':';
  138.                 $aFiltersDirectory = explode($sep, $sParam);
  139.             break;
  140.  
  141.             case 'recursive':
  142.             case 'r':
  143.                 $oLog->log('Recursive: on');
  144.                 $bRecursive = true;
  145.             break;
  146.  
  147.             case 'compress':
  148.             case 'c':
  149.                 $sCompress = ($sParam) ? $sParam : 'gz';
  150.             break;
  151.  
  152.             case 'help':
  153.             case '?':
  154.             case 'h':
  155.                 usage();
  156.             break;
  157.             case 'v':
  158.             case 'verbose':
  159.                 $iVerbose=PEAR_LOG_INFO;
  160.             break;
  161.         }
  162.     }
  163.     // add the console logger
  164.     $oLogConsole = Log::factory('console', '', 'php_beautifier', array(
  165.         'stream'=>STDERR
  166.     ) , $iVerbose);
  167.     $oLog->addChild($oLogConsole);    
  168.     
  169.     if (!empty($options[1])) {
  170.         $aFiles = $options[1];
  171.         if (count($options[1]) == 1) {
  172.             $aInputFiles = ($aFiles[0] == '-') ? STDIN : array(
  173.                 $aFiles[0]
  174.             );
  175.             $sOutputFile = STDOUT;
  176.         } else {
  177.             $aInputFiles = array_slice($aFiles, 0, count($aFiles) -1);
  178.             $sOut = end($aFiles);
  179.             $sOutputFile = ($sOut == '-') ? STDOUT : $sOut;
  180.         }
  181.     }
  182.     $oLog->log("In :".@implode(',', $aInputFiles) , PEAR_LOG_INFO);
  183.     $oLog->log("Out:".$sOutputFile, PEAR_LOG_INFO);
  184.     $start = time();
  185.     ini_set('max_execution_time', 0);
  186.     // start script
  187.     try {
  188.         $oBeautSingle = new PHP_Beautifier();
  189.         $oBeaut = new PHP_Beautifier_Batch($oBeautSingle);
  190.         $oBeaut->setRecursive($bRecursive);
  191.         $oBeaut->setInputFile($aInputFiles);
  192.         $oBeaut->setOutputFile($sOutputFile);
  193.         $oBeaut->setIndentChar($sIndentChar);
  194.         $oBeaut->setIndentNumber($iIndentNumber);
  195.         $oBeaut->setCompress($sCompress);
  196.         if ($aFiltersDirectory) {
  197.             foreach($aFiltersDirectory as $sDirectory) {
  198.                 $oBeaut->addFilterDirectory($sDirectory);
  199.             }
  200.         }        
  201.         if ($aFilters) {
  202.             foreach($aFilters as $sName=>$aArgs) {
  203.                 $oBeaut->addFilter($sName, $aArgs);
  204.             }
  205.         }
  206.         $oBeaut->process();
  207.         $oBeaut->save();
  208.         $sNameOut = ($sOutputFile == STDOUT) ? 'STDOUT' : $sOutputFile;
  209.         $sNameIn = ($aInputFiles == STDIN) ? 'STDIN' : implode(',', $aInputFiles);
  210.         // Log
  211.         if ($aFilters) {
  212.             $oLog->log("Filters used: ".implode(',', array_keys($aFilters)) , PEAR_LOG_INFO);
  213.         }
  214.         $oLog->log($sNameIn." to $sNameOut done");
  215.         $oLog->log(round(time() -$start, 2) ." seconds needed\n");
  216.     }
  217.     catch(Exception $oExp) {
  218.         $oLog->log($oExp->getMessage() , PEAR_LOG_ERR);
  219.         $aBacktrace = $oExp->getTrace();
  220.         foreach($aBacktrace as $iIndex=>$aTrace) {
  221.             $oLog->log(sprintf("#%d %s(%d):%s%s%s()", $iIndex, $aTrace['file'], $aTrace['line'], @$aTrace['class'], @$aTrace['type'], $aTrace['function']) , PEAR_LOG_DEBUG);
  222.         }
  223.     }
  224.     function usage($obj = null) 
  225.     {
  226.         if ($obj !== null) {
  227.             fputs(STDERR, $obj->getMessage());
  228.         }
  229.         // php_beautifier->setBeautify(false)
  230.         fputs(STDERR,
  231.           "\nUsage: php_beautifier [options] <infile> <out>\n".
  232.           "         <infile> and/or <out> can be '-', which means stdin/stdout.\n".
  233.           "         you can use ? and * for batch processing\n".
  234.           "         <out> can be a dir (ending with '/' or a real dir)\n". 
  235.           "               or a file (without '/')\n".
  236.           "         multiple ins and one out = merge all files in one output\n".
  237.           "Options:\n".
  238.           "     --input             or -f <file>    input file  - default: stdin\n".
  239.           "     --output            or -o <out>     output dir or file - default: stdout\n".
  240.           "     --indent_tabs       or -t <int>     indent with tabs\n".
  241.           "     --indent_spaces     or -s <int>     indent with spaces - default\n".
  242.           "     --filters           or -l <fil_def> Add filter(s)\n".
  243.           "     --directory_filters or -d <path>    Include dirs for filters\n".
  244.           "     --compress          or -c <type>    Compress output\n".
  245.           "     --recursive         or -r           Search in subdir recursively\n".
  246.           "     --help              or -?           display help/usage (this message)\n\n".
  247.           "Filter definition:\n".
  248.           "     --filters \"Filter1(setting1=value1,setting2=value2) Filter2()\"".
  249.           "\n");
  250.         // php_beautifier->setBeautify(true)
  251.         exit;
  252.     }
  253. ?>