PEAR
[ class tree: PEAR ] [ index: PEAR ] [ all elements ]

Source for file v2.php

Documentation is available at v2.php

  1. <?php
  2. /**
  3.  * package.xml parsing class, package.xml version 2.0
  4.  *
  5.  * PHP versions 4 and 5
  6.  *
  7.  * @category   pear
  8.  * @package    PEAR
  9.  * @author     Greg Beaver <cellog@php.net>
  10.  * @copyright  1997-2009 The Authors
  11.  * @license    http://opensource.org/licenses/bsd-license.php New BSD License
  12.  * @version    CVS: $Id: v2.php 313023 2011-07-06 19:17:11Z dufuz $
  13.  * @link       http://pear.php.net/package/PEAR
  14.  * @since      File available since Release 1.4.0a1
  15.  */
  16. /**
  17.  * base xml parser class
  18.  */
  19. require_once 'PEAR/XMLParser.php';
  20. require_once 'PEAR/PackageFile/v2.php';
  21. /**
  22.  * Parser for package.xml version 2.0
  23.  * @category   pear
  24.  * @package    PEAR
  25.  * @author     Greg Beaver <cellog@php.net>
  26.  * @copyright  1997-2009 The Authors
  27.  * @license    http://opensource.org/licenses/bsd-license.php New BSD License
  28.  * @version    Release: @PEAR-VER@
  29.  * @link       http://pear.php.net/package/PEAR
  30.  * @since      Class available since Release 1.4.0a1
  31.  */
  32. {
  33.     var $_config;
  34.     var $_logger;
  35.     var $_registry;
  36.  
  37.     function setConfig(&$c)
  38.     {
  39.         $this->_config &$c;
  40.         $this->_registry &$c->getRegistry();
  41.     }
  42.  
  43.     function setLogger(&$l)
  44.     {
  45.         $this->_logger &$l;
  46.     }
  47.     /**
  48.      * Unindent given string
  49.      *
  50.      * @param string $str The string that has to be unindented.
  51.      * @return string 
  52.      * @access private
  53.      */
  54.     function _unIndent($str)
  55.     {
  56.         // remove leading newlines
  57.         $str preg_replace('/^[\r\n]+/'''$str);
  58.         // find whitespace at the beginning of the first line
  59.         $indent_len strspn($str" \t");
  60.         $indent substr($str0$indent_len);
  61.         $data '';
  62.         // remove the same amount of whitespace from following lines
  63.         foreach (explode("\n"$stras $line{
  64.             if (substr($line0$indent_len== $indent{
  65.                 $data .= substr($line$indent_len"\n";
  66.             else {
  67.                 $data .= $line "\n";
  68.             }
  69.         }
  70.         return $data;
  71.     }
  72.  
  73.     /**
  74.      * post-process data
  75.      *
  76.      * @param string $data 
  77.      * @param string $element element name
  78.      */
  79.     function postProcess($data$element)
  80.     {
  81.         if ($element == 'notes'{
  82.             return trim($this->_unIndent($data));
  83.         }
  84.         return trim($data);
  85.     }
  86.  
  87.     /**
  88.      * @param string 
  89.      * @param string file name of the package.xml
  90.      * @param string|falsename of the archive this package.xml came from, if any
  91.      * @param string class name to instantiate and return.  This must be PEAR_PackageFile_v2 or
  92.      *                a subclass
  93.      * @return PEAR_PackageFile_v2 
  94.      */
  95.     function &parse($data$file$archive = false$class 'PEAR_PackageFile_v2')
  96.     {
  97.         if (PEAR::isError($err = parent::parse($data$file))) {
  98.             return $err;
  99.         }
  100.  
  101.         $ret = new $class;
  102.         $ret->encoding = $this->encoding;
  103.         $ret->setConfig($this->_config);
  104.         if (isset($this->_logger)) {
  105.             $ret->setLogger($this->_logger);
  106.         }
  107.  
  108.         $ret->fromArray($this->_unserializedData);
  109.         $ret->setPackagefile($file$archive);
  110.         return $ret;
  111.     }
  112. }

Documentation generated on Wed, 06 Jul 2011 23:31:32 +0000 by phpDocumentor 1.4.3. PEAR Logo Copyright © PHP Group 2004.