[ Index ]
 

Code source de Symfony 1.0.0

Accédez au Source d'autres logiciels libresSoutenez Angelica Josefina !

title

Body

[fermer]

/lib/vendor/phing/parser/ -> TargetHandler.php (source)

   1  <?php
   2  /*
   3   * $Id: TargetHandler.php 3076 2006-12-18 08:52:12Z fabien $
   4   *
   5   * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
   6   * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
   7   * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
   8   * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
   9   * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  10   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  11   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
  12   * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
  13   * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  14   * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  15   * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  16   *
  17   * This software consists of voluntary contributions made by many individuals
  18   * and is licensed under the LGPL. For more information please see
  19   * <http://phing.info>.
  20   */
  21   
  22  require_once 'phing/parser/AbstractHandler.php';
  23  
  24  /**
  25   * The target handler class.
  26   *
  27   * This class handles the occurance of a <target> tag and it's possible
  28   * nested tags (datatypes and tasks).
  29   *
  30   * @author    Andreas Aderhold <andi@binarycloud.com>
  31   * @copyright  2001,2002 THYRELL. All rights reserved
  32   * @version   $Revision: 1.10 $
  33   * @package   phing.parser
  34   */
  35  class TargetHandler extends AbstractHandler {
  36  
  37      /**
  38       * Reference to the target object that represents the currently parsed
  39       * target.
  40       * @var object the target instance
  41       */
  42      private $target;
  43  
  44      /**
  45       * The phing project configurator object
  46       * @var ProjectConfigurator
  47       */
  48      private $configurator;
  49  
  50      /**
  51       * Constructs a new TargetHandler
  52       *
  53       * @param  object  the ExpatParser object
  54       * @param  object  the parent handler that invoked this handler
  55       * @param  object  the ProjectConfigurator object
  56       */
  57      function __construct(AbstractSAXParser $parser, AbstractHandler $parentHandler, ProjectConfigurator $configurator) {
  58          parent::__construct($parser, $parentHandler);
  59          $this->configurator = $configurator;      
  60      }
  61  
  62      /**
  63       * Executes initialization actions required to setup the data structures
  64       * related to the tag.
  65       * <p>
  66       * This includes:
  67       * <ul>
  68       * <li>creation of the target object</li>
  69       * <li>calling the setters for attributes</li>
  70       * <li>adding the target to the project</li>
  71       * <li>adding a reference to the target (if id attribute is given)</li>
  72       * </ul>
  73       *
  74       * @param  string  the tag that comes in
  75       * @param  array   attributes the tag carries
  76       * @throws ExpatParseException if attributes are incomplete or invalid
  77       */
  78      function init($tag, $attrs) {
  79          $name = null;
  80          $depends = "";
  81          $ifCond = null;
  82          $unlessCond = null;
  83          $id = null;
  84          $description = null;
  85  
  86          foreach($attrs as $key => $value) {
  87              if ($key==="name") {
  88                  $name = (string) $value;
  89              } else if ($key==="depends") {
  90                  $depends = (string) $value;
  91              } else if ($key==="if") {
  92                  $ifCond = (string) $value;
  93              } else if ($key==="unless") {
  94                  $unlessCond = (string) $value;
  95              } else if ($key==="id") {
  96                  $id = (string) $value;
  97              } else if ($key==="description") {
  98                  $description = (string)$value;
  99              } else {
 100                  throw new ExpatParseException("Unexpected attribute '$key'", $this->parser->getLocation());
 101              }
 102          }
 103  
 104          if ($name === null) {
 105              throw new ExpatParseException("target element appears without a name attribute",  $this->parser->getLocation());
 106          }
 107  
 108          // shorthand
 109          $project = $this->configurator->project;
 110  
 111          $this->target = new Target();
 112          $this->target->setName($name);
 113          $this->target->setIf($ifCond);
 114          $this->target->setUnless($unlessCond);
 115          $this->target->setDescription($description);
 116  
 117          $project->addTarget($name, $this->target);
 118  
 119          if ($id !== null && $id !== "") {
 120              $project->addReference($id, $this->target);
 121          }
 122          // take care of dependencies
 123          if (strlen($depends) > 0) {
 124              $this->target->setDepends($depends);
 125          }
 126  
 127      }
 128  
 129      /**
 130       * Checks for nested tags within the current one. Creates and calls
 131       * handlers respectively.
 132       *
 133       * @param  string  the tag that comes in
 134       * @param  array   attributes the tag carries
 135       */
 136      function startElement($name, $attrs) {
 137          // shorthands
 138          $project = $this->configurator->project;
 139          $types = $project->getDataTypeDefinitions();
 140  
 141          if (isset($types[$name])) {
 142              $th = new DataTypeHandler($this->parser, $this, $this->configurator, $this->target);
 143              $th->init($name, $attrs);
 144          } else {
 145              $tmp = new TaskHandler($this->parser, $this, $this->configurator, $this->target, null, $this->target);
 146              $tmp->init($name, $attrs);
 147          }
 148      }
 149  }


Généré le : Fri Mar 16 22:42:14 2007 par Balluche grâce à PHPXref 0.7