diff options
Diffstat (limited to 'buildscripts/phing/classes/phing/util/regexp/Regexp.php')
| -rw-r--r-- | buildscripts/phing/classes/phing/util/regexp/Regexp.php | 168 | 
1 files changed, 168 insertions, 0 deletions
diff --git a/buildscripts/phing/classes/phing/util/regexp/Regexp.php b/buildscripts/phing/classes/phing/util/regexp/Regexp.php new file mode 100644 index 00000000..68c06668 --- /dev/null +++ b/buildscripts/phing/classes/phing/util/regexp/Regexp.php @@ -0,0 +1,168 @@ +<?php +/*  + *  $Id: Regexp.php,v 1.5 2003/12/24 18:40:33 hlellelid Exp $ + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * This software consists of voluntary contributions made by many individuals + * and is licensed under the LGPL. For more information please see + * <http://phing.info>.  + */ + +/** + * A factory class for regex functions. + * @author Hans Lellelid <hans@xmpl.org> + * @package  phing.util.regexp + * @version $Revision: 1.5 $ + */ +class Regexp { + +    /** +     * Matching groups found.  +     * @var array +     */ +    private $groups = array(); +      +    /** +     * Pattern to match. +     * @var string +     */ +    private $pattern; +     +    /** +     * Replacement pattern. +     * @var string +     */ +    private $replace; +     +    /** +     * The regex engine -- e.g. 'preg' or 'ereg'; +     * @var RegexpEngine +     */ +    private $engine; +     +    /** +     * Constructor sets the regex engine to use (preg by default). +     * @param string $_engineType The regex engine to use. +     */ +    function __construct($engineType='preg') {         +        if ($engineType == 'preg') { +            include_once 'phing/util/regexp/PregEngine.php'; +            $this->engine = new PregEngine(); +        } elseif ($engineType == 'ereg') { +            include_once 'phing/util/regexp/EregEngine.php'; +            $this->engine = new EregEngine(); +        } else { +            throw new BuildException("Invalid engine type for Regexp: " . $engineType); +        }                 +    } + +    /** +     * Sets pattern to use for matching. +     * @param string $pat The pattern to match on. +     * @return void +     */ +    public function setPattern($pat) { +        $this->pattern = (string) $pat;         +    } +     +     +    /** +     * Gets pattern to use for matching. +     * @return string The pattern to match on. +     */ +    public function getPattern() { +        return $this->pattern; +    } +     +    /** +     * Sets replacement string. +     * @param string $rep The pattern to replace matches with. +     * @return void +     */ +    public function setReplace($rep) { +        $this->replace = (string) $rep; +    } +     +    /** +     * Gets replacement string. +     * @return string The pattern to replace matches with. +     * @return void +     */ +    public function getReplace() { +        return $this->replace; +    } +     +    /** +     * Performs match of specified pattern against $subject. +     * @param string $subject The subject, on which to perform matches. +     * @return boolean Whether or not pattern matches subject string passed. +     */ +    public function matches($subject) { +        if($this->pattern === null) {             +            throw new Exception("No pattern specified for regexp match()."); +        } +        return $this->engine->match($this->pattern, $subject, $this->groups); +    } +     +    /** +     * Performs replacement of specified pattern and replacement strings. +     * @param string $subject Text on which to perform replacement. +     * @return string subject after replacement has been performed. +     */ +    public function replace($subject) { +        if ($this->pattern === null || $this->replace === null) { +            throw new Exception("Missing pattern or replacement string regexp replace()."); +        }         +        return $this->engine->replace($this->pattern, $this->replace, $subject); +    } +     +    /** +     * Get array of matched groups. +     * @return array Matched groups +     */  +    function getGroups() { +        return $this->groups; +    } + +    /** +     * Get specific matched group.  +     * @param integer $idx +     * @return string specified group or NULL if group is not set. +     */  +    function getGroup($idx) {  +        if (!isset($this->groups[$idx])) { +            return null; +        } +        return $this->groups[$idx]; +    } +     +    /** +     * Sets whether the regexp matching is case insensitive. +     * (default is false -- i.e. case sensisitive) +     * @param boolean $bit +     */  +    function setIgnoreCase($bit) { +        $this->engine->setIgnoreCase($bit); +    } +     +    /** +     * Gets whether the regexp matching is case insensitive. +     * @return boolean +     */ +    function getIgnoreCase() { +        return $this->engine->getIgnoreCase(); +    } +}  + +?>
\ No newline at end of file  | 
