cvs: pear /XML_Transformer Transformer.php

From: Date: Sat, 11 May 2002 10:35:56 +0000
Subject: cvs: pear /XML_Transformer Transformer.php
Groups: php.pear.cvs 
Request: Send a blank email to pear-cvs+get-3754@lists.php.net to get a copy of this message
sebastian Sat May 11 06:35:56 2002 EDT Modified files: /pear/XML_Transformer Transformer.php Log: Hopefully make Harald happy by allowing to disable the recursion on a per-tag basis. Index: pear/XML_Transformer/Transformer.php diff -u pear/XML_Transformer/Transformer.php:1.6 pear/XML_Transformer/Transformer.php:1.7 --- pear/XML_Transformer/Transformer.php:1.6 Mon Apr 8 02:27:51 2002 +++ pear/XML_Transformer/Transformer.php Sat May 11 06:35:55 2002 @@ -17,7 +17,7 @@ // | Kristian Köhntopp <kris@koehntopp.de> | // +----------------------------------------------------------------------+ // -// $Id: Transformer.php,v 1.6 2002/04/08 06:27:51 sebastian Exp $ +// $Id: Transformer.php,v 1.7 2002/05/11 10:35:55 sebastian Exp $ // /** @@ -62,7 +62,7 @@ * * @author Sebastian Bergmann <sb@sebastian-bergmann.de> * Kristian Köhntopp <kris@koehntopp.de> -* @version $Revision: 1.6 $ +* @version $Revision: 1.7 $ * @access public */ class XML_Transformer { @@ -112,6 +112,12 @@ * @var boolean * @access private */ + var $_recursiveOperation = true; + + /** + * @var boolean + * @access private + */ var $_started = false; /** @@ -127,17 +133,24 @@ $this->_caseFolding = isset($parameters['caseFolding']) ? $parameters['caseFolding'] : false; $overloadedElements = isset($parameters['overloadedElements']) ? $parameters['overloadedElements'] : array(); $this->_overloadedNamespaces = isset($parameters['overloadedNamespaces']) ? $parameters['overloadedNamespaces'] : array(); + $this->_recursiveOperation = isset($parameters['recursiveOperation']) ? $parameters['recursiveOperation'] : true; if ($startup) { // Walk through overloadedElements array, // that was passed to the constructor and // register the element callbacks it contains. - foreach ($overloadedElements as $element => $callbacks) { - $callbacks['start'] = isset($callbacks['start']) ? $callbacks['start'] : ''; - $callbacks['end'] = isset($callbacks['end']) ? $callbacks['end'] : ''; - - $this->overloadElement($element, $callbacks['start'], $callbacks['end']); + foreach ($overloadedElements as $element => $overloadedElement) { + $overloadedElement['start'] = isset($overloadedElement['start']) ? $overloadedElement['start'] : ''; + $overloadedElement['end'] = isset($overloadedElement['end']) ? $overloadedElement['end'] : ''; + $overloadedElement['recursiveOperation'] = isset($overloadedElement['recursiveOperation']) ? $overloadedElement['recursiveOperation'] : $this->_recursiveOperation; + + $this->overloadElement( + $element, + $overloadedElement['start'], + $overloadedElement['end'], + $overloadedElement['recursiveOperation'] + ); } // Start transformation. @@ -190,13 +203,16 @@ * @param string * @param string * @param string + * @param boolean * @access public */ - function overloadElement($element, $startHandler, $endHandler) { + function overloadElement($element, $startHandler, $recursiveOperation = '') { $element = $this->canonicalName($element); $this->_registerElementCallback($element, 'start', $startHandler); $this->_registerElementCallback($element, 'end', $endHandler); + + $this->_overloadedElements[$element]['recursiveOperation'] = !empty($recursiveOperation) ? $recursiveOperation : $this->_recursiveOperation; } /** @@ -300,6 +316,18 @@ } /** + * Enables or disables the recursive operation. + * + * @param boolean + * @access public + */ + function setRecursiveOperation($recursiveOperation) { + if (is_bool($recursiveOperation)) { + $this->_recursiveOperation = $recursiveOperation; + } + } + + /** * Starts the output-buffering, * and thus the transformation. * @@ -455,7 +483,10 @@ $cdata .= '</' . $element . '>'; } - if ($recursion) { + if ($resursion && + $this->_overloadedElements[$element]['recursiveOperation'] + ) + { // Recursively process this transformation's result. $transformer = new XML_Transformer(

« previous php.pear.cvs (#3754) next »