summaryrefslogtreecommitdiff
path: root/buildscripts/phing/classes/phing/types/selectors
diff options
context:
space:
mode:
Diffstat (limited to 'buildscripts/phing/classes/phing/types/selectors')
-rw-r--r--buildscripts/phing/classes/phing/types/selectors/AndSelector.php67
-rw-r--r--buildscripts/phing/classes/phing/types/selectors/BaseExtendSelector.php62
-rw-r--r--buildscripts/phing/classes/phing/types/selectors/BaseSelector.php84
-rw-r--r--buildscripts/phing/classes/phing/types/selectors/BaseSelectorContainer.php270
-rw-r--r--buildscripts/phing/classes/phing/types/selectors/ContainsRegexpSelector.php164
-rw-r--r--buildscripts/phing/classes/phing/types/selectors/ContainsSelector.php151
-rw-r--r--buildscripts/phing/classes/phing/types/selectors/DateSelector.php214
-rw-r--r--buildscripts/phing/classes/phing/types/selectors/DependSelector.php151
-rw-r--r--buildscripts/phing/classes/phing/types/selectors/DepthSelector.php158
-rw-r--r--buildscripts/phing/classes/phing/types/selectors/ExtendFileSelector.php43
-rw-r--r--buildscripts/phing/classes/phing/types/selectors/ExtendSelector.php127
-rw-r--r--buildscripts/phing/classes/phing/types/selectors/FileSelector.php47
-rw-r--r--buildscripts/phing/classes/phing/types/selectors/FilenameSelector.php157
-rw-r--r--buildscripts/phing/classes/phing/types/selectors/MajoritySelector.php92
-rw-r--r--buildscripts/phing/classes/phing/types/selectors/NoneSelector.php71
-rw-r--r--buildscripts/phing/classes/phing/types/selectors/NotSelector.php59
-rw-r--r--buildscripts/phing/classes/phing/types/selectors/OrSelector.php72
-rw-r--r--buildscripts/phing/classes/phing/types/selectors/PresentSelector.php154
-rw-r--r--buildscripts/phing/classes/phing/types/selectors/SelectSelector.php124
-rw-r--r--buildscripts/phing/classes/phing/types/selectors/SelectorContainer.php141
-rw-r--r--buildscripts/phing/classes/phing/types/selectors/SelectorScanner.php55
-rw-r--r--buildscripts/phing/classes/phing/types/selectors/SelectorUtils.php440
-rw-r--r--buildscripts/phing/classes/phing/types/selectors/SizeSelector.php228
-rw-r--r--buildscripts/phing/classes/phing/types/selectors/TypeSelector.php113
24 files changed, 0 insertions, 3244 deletions
diff --git a/buildscripts/phing/classes/phing/types/selectors/AndSelector.php b/buildscripts/phing/classes/phing/types/selectors/AndSelector.php
deleted file mode 100644
index 3801091f..00000000
--- a/buildscripts/phing/classes/phing/types/selectors/AndSelector.php
+++ /dev/null
@@ -1,67 +0,0 @@
-<?php
-/*
- * $Id: AndSelector.php,v 1.9 2005/05/26 13:10:53 mrook 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>.
- */
-
-require_once 'phing/types/selectors/BaseSelectorContainer.php';
-
-/**
- * This selector has a collection of other selectors, all of which have to
- * select a file in order for this selector to select it.
- *
- * @author Hans Lellelid, hans@xmpl.org (Phing)
- * @author <a href="mailto:bruce@callenish.com">Bruce Atherton</a> (Ant)
- * @package phing.types.selectors
- */
-class AndSelector extends BaseSelectorContainer {
-
- public function toString() {
- $buf = "";
- if ($this->hasSelectors()) {
- $buf .= "{andselect: ";
- $buf .= parent::toString();
- $buf .= "}";
- }
- return $buf;
- }
-
- /**
- * Returns true (the file is selected) only if all other selectors
- * agree that the file should be selected.
- *
- * @param basedir the base directory the scan is being done from
- * @param filename the name of the file to check
- * @param file a PhingFile object for the filename that the selector
- * can use
- * @return whether the file should be selected or not
- */
- public function isSelected(PhingFile $basedir, $filename, PhingFile $file) {
- $this->validate();
- $selectors = $this->selectorElements();
- for($i=0,$size=count($selectors); $i < $size; $i++) {
- $result = $selectors[$i]->isSelected($basedir, $filename, $file);
- if (!$result) {
- return false;
- }
- }
- return true;
- }
-
-}
-
diff --git a/buildscripts/phing/classes/phing/types/selectors/BaseExtendSelector.php b/buildscripts/phing/classes/phing/types/selectors/BaseExtendSelector.php
deleted file mode 100644
index 5acc54dd..00000000
--- a/buildscripts/phing/classes/phing/types/selectors/BaseExtendSelector.php
+++ /dev/null
@@ -1,62 +0,0 @@
-<?php
-
-/*
- * $Id: BaseExtendSelector.php,v 1.5 2004/02/16 05:28:40 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>.
- */
-
-require_once 'phing/types/selectors/ExtendFileSelector.php';
-require_once 'phing/types/selectors/BaseSelector.php';
-include_once 'phing/types/Parameter.php';
-
-/**
- * Convenience base class for all selectors accessed through ExtendSelector.
- * It provides support for gathering the parameters together as well as for
- * assigning an error message and throwing a build exception if an error is
- * detected.
- *
- * @author Hans Lellelid, hans@xmpl.org (Phing)
- * @author Bruce Atherton, bruce@callenish.com (Ant)
- * @package phing.types.selectors
- */
-abstract class BaseExtendSelector extends BaseSelector implements ExtendFileSelector {
-
- /** The passed in parameter array. */
- protected $parameters = null;
-
- /**
- * Set all the Parameters for this custom selector, collected by
- * the ExtendSelector class.
- *
- * @param parameters the complete set of parameters for this selector
- */
- public function setParameters($parameters) {
- $this->parameters = $parameters;
- }
-
- /**
- * Allows access to the parameters gathered and set within the
- * &lt;custom&gt; tag.
- *
- * @return the set of parameters defined for this selector
- */
- protected function getParameters() {
- return $this->parameters;
- }
-}
-
diff --git a/buildscripts/phing/classes/phing/types/selectors/BaseSelector.php b/buildscripts/phing/classes/phing/types/selectors/BaseSelector.php
deleted file mode 100644
index e229fc24..00000000
--- a/buildscripts/phing/classes/phing/types/selectors/BaseSelector.php
+++ /dev/null
@@ -1,84 +0,0 @@
-<?php
-/*
- * $Id: BaseSelector.php,v 1.4 2004/02/16 04:56:24 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>.
- */
-
-require_once 'phing/types/selectors/FileSelector.php';
-
-/**
- * A convenience base class that you can subclass Selectors from. It
- * provides some helpful common behaviour. Note that there is no need
- * for Selectors to inherit from this class, it is only necessary that
- * they implement FileSelector.
- *
- * @author <a href="mailto:bruce@callenish.com">Bruce Atherton</a>
- * @package phing.types.selectors
- */
-abstract class BaseSelector extends DataType implements FileSelector {
-
- private $errmsg = null;
-
- /**
- * Allows all selectors to indicate a setup error. Note that only
- * the first error message is recorded.
- *
- * @param msg The error message any BuildException should throw.
- */
- public function setError($msg) {
- if ($this->errmsg === null) {
- $this->errmsg = $msg;
- }
- }
-
- /**
- * Returns any error messages that have been set.
- *
- * @return the error condition
- */
- public function getError() {
- return $this->errmsg;
- }
-
-
- /**
- * <p>Subclasses can override this method to provide checking of their
- * state. So long as they call validate() from isSelected(), this will
- * be called automatically (unless they override validate()).</p>
- * <p>Implementations should check for incorrect settings and call
- * setError() as necessary.</p>
- */
- public function verifySettings() {
- }
-
- /**
- * Subclasses can use this to throw the requisite exception
- * in isSelected() in the case of an error condition.
- */
- public function validate() {
- if ($this->getError() === null) {
- $this->verifySettings();
- }
- if ($this->getError() !== null) {
- throw new BuildException($this->errmsg);
- }
- }
-
-}
-
-
diff --git a/buildscripts/phing/classes/phing/types/selectors/BaseSelectorContainer.php b/buildscripts/phing/classes/phing/types/selectors/BaseSelectorContainer.php
deleted file mode 100644
index 19b84b00..00000000
--- a/buildscripts/phing/classes/phing/types/selectors/BaseSelectorContainer.php
+++ /dev/null
@@ -1,270 +0,0 @@
-<?php
-
-/*
- * $Id: BaseSelectorContainer.php,v 1.9 2004/02/16 04:56:24 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>.
- */
-
-require_once 'phing/types/selectors/SelectorContainer.php';
-require_once 'phing/types/selectors/BaseSelector.php';
-
-/**
- * This is the base class for selectors that can contain other selectors.
- *
- * @author <a href="mailto:bruce@callenish.com">Bruce Atherton</a> (Ant)
- * @package phing.types.selectors
- */
-abstract class BaseSelectorContainer extends BaseSelector implements SelectorContainer {
-
- private $selectorsList = array();
-
- /**
- * Indicates whether there are any selectors here.
- */
- public function hasSelectors() {
- return !(empty($this->selectorsList));
- }
-
- /**
- * Gives the count of the number of selectors in this container
- */
- public function selectorCount() {
- return count($this->selectorsList);
- }
-
- /**
- * Returns a copy of the selectors as an array.
- */
- public function getSelectors(Project $p) {
- $result = array();
- for($i=0,$size=count($this->selectorsList); $i < $size; $i++) {
- $result[] = clone $this->selectorsList[$i];
- }
- return $result;
- }
-
- /**
- * Returns an array for accessing the set of selectors (not a copy).
- */
- public function selectorElements() {
- return $this->selectorsList;
- }
-
- /**
- * Convert the Selectors within this container to a string. This will
- * just be a helper class for the subclasses that put their own name
- * around the contents listed here.
- *
- * @return comma separated list of Selectors contained in this one
- */
- public function toString() {
- $buf = "";
- $arr = $this->selectorElements();
- for($i=0,$size=count($arr); $i < $size; $i++) {
- $buf .= $arr[$i]->toString() . (isset($arr[$i+1]) ? ', ' : '');
- }
- return $buf;
- }
-
- /**
- * Add a new selector into this container.
- *
- * @param selector the new selector to add
- * @return the selector that was added
- */
- public function appendSelector(FileSelector $selector) {
- $this->selectorsList[] = $selector;
- }
-
- /**
- * <p>This implementation validates the container by calling
- * verifySettings() and then validates each contained selector
- * provided that the selector implements the validate interface.
- * </p>
- * <p>Ordinarily, this will validate all the elements of a selector
- * container even if the isSelected() method of some elements is
- * never called. This has two effects:</p>
- * <ul>
- * <li>Validation will often occur twice.
- * <li>Since it is not required that selectors derive from
- * BaseSelector, there could be selectors in the container whose
- * error conditions are not detected if their isSelected() call
- * is never made.
- * </ul>
- */
- public function validate() {
- $this->verifySettings();
- $errmsg = $this->getError();
- if ($errmsg !== null) {
- throw new BuildException($errmsg);
- }
- foreach($this->selectorsList as $o) {
- if ($o instanceof BaseSelector) {
- $o->validate();
- }
- }
- }
-
- /* Methods below all add specific selectors */
-
- /**
- * add a "Select" selector entry on the selector list
- */
- public function createSelector() {
- $o = new SelectSelector();
- $this->appendSelector($o);
- return $o;
- }
-
- /**
- * add an "And" selector entry on the selector list
- */
- public function createAnd() {
- $o = new AndSelector();
- $this->appendSelector($o);
- return $o;
- }
-
- /**
- * add an "Or" selector entry on the selector list
- */
- public function createOr() {
- $o = new OrSelector();
- $this->appendSelector($o);
- return $o;
- }
-
- /**
- * add a "Not" selector entry on the selector list
- */
- public function createNot() {
- $o = new NotSelector();
- $this->appendSelector($o);
- return $o;
- }
-
- /**
- * add a "None" selector entry on the selector list
- */
- public function createNone() {
- $o = new NoneSelector();
- $this->appendSelector($o);
- return $o;
- }
-
- /**
- * add a majority selector entry on the selector list
- */
- public function createMajority() {
- $o = new MajoritySelector();
- $this->appendSelector($o);
- return $o;
- }
-
- /**
- * add a selector date entry on the selector list
- */
- public function createDate() {
- $o = new DateSelector();
- $this->appendSelector($o);
- return $o;
- }
-
- /**
- * add a selector size entry on the selector list
- */
- public function createSize() {
- $o = new SizeSelector();
- $this->appendSelector($o);
- return $o;
- }
-
- /**
- * add a selector filename entry on the selector list
- */
- public function createFilename() {
- $o = new FilenameSelector();
- $this->appendSelector($o);
- return $o;
- }
-
- /**
- * add an extended selector entry on the selector list
- */
- public function createCustom() {
- $o = new ExtendSelector();
- $this->appendSelector($o);
- return $o;
- }
-
- /**
- * add a contains selector entry on the selector list
- */
- public function createContains() {
- $o = new ContainsSelector();
- $this->appendSelector($o);
- return $o;
- }
-
- /**
- * add a contains selector entry on the selector list
- */
- public function createContainsRegexp() {
- $o = new ContainsRegexpSelector();
- $this->appendSelector($o);
- return $o;
- }
-
- /**
- * add a present selector entry on the selector list
- */
- public function createPresent() {
- $o = new PresentSelector();
- $this->appendSelector($o);
- return $o;
- }
-
- /**
- * add a depth selector entry on the selector list
- */
- public function createDepth() {
- $o = new DepthSelector();
- $this->appendSelector($o);
- return $o;
- }
-
- /**
- * add a depends selector entry on the selector list
- */
- public function createDepend() {
- $o = new DependSelector();
- $this->appendSelector($o);
- return $o;
- }
-
- /**
- * add a type selector entry on the selector list
- */
- public function createType() {
- $o = new TypeSelector();
- $this->appendSelector($o);
- return $o;
- }
-
-}
-
diff --git a/buildscripts/phing/classes/phing/types/selectors/ContainsRegexpSelector.php b/buildscripts/phing/classes/phing/types/selectors/ContainsRegexpSelector.php
deleted file mode 100644
index 39afd2fa..00000000
--- a/buildscripts/phing/classes/phing/types/selectors/ContainsRegexpSelector.php
+++ /dev/null
@@ -1,164 +0,0 @@
-<?php
-
-/*
- * $Id: ContainsRegexpSelector.php,v 1.3 2005/05/26 13:10:53 mrook 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>.
- */
-
-require_once 'phing/types/selectors/BaseExtendSelector.php';
-include_once 'phing/types/RegularExpression.php';
-
-/**
- * Selector that filters files based on whether they contain a
- * particular string using regexp.
- *
- * @author Hans Lellelid <hans@xmpl.org> (Phing)
- * @author Bruce Atherton <bruce@callenish.com> (Ant)
- * @version $Revision: 1.3 $
- * @package phing.types.selectors
- */
-class ContainsRegexpSelector extends BaseExtendSelector {
-
- /** @var string The expression set from XML. */
- private $userProvidedExpression;
-
- /** @var Regexp */
- private $myExpression;
-
- private $casesensitive = true;
-
- /** @var RegularExpression */
- private $myRegExp;
-
- const EXPRESSION_KEY = "expression";
-
- const CASE_KEY = "casesensitive";
-
- public function toString() {
- $buf = "{containsregexpselector expression: ";
- $buf .= $this->userProvidedExpression;
- $buf .= " casesensitive: ";
- if ($this->casesensitive) {
- $buf .= "true";
- } else {
- $buf .= "false";
- }
- $buf .= "}";
- return $buf;
- }
-
- /**
- * The expression to match on within a file.
- *
- * @param string $exp the string that a file must contain to be selected.
- */
- public function setExpression($exp) {
- $this->userProvidedExpression = $exp;
- }
-
- /**
- * Whether to ignore case in the regex match.
- *
- * @param boolean $casesensitive whether to pay attention to case sensitivity
- */
- public function setCasesensitive($casesensitive) {
- $this->casesensitive = $casesensitive;
- }
-
- /**
- * When using this as a custom selector, this method will be called.
- * It translates each parameter into the appropriate setXXX() call.
- *
- * @param array $parameters the complete set of parameters for this selector
- */
- public function setParameters($parameters) {
- parent::setParameters($parameters);
- if ($parameters !== null) {
- for ($i=0,$size=count($parameters); $i < $size; $i++) {
- $paramname = $parameters[$i]->getName();
- switch(strtolower($paramname)) {
- case self::EXPRESSION_KEY:
- $this->setExpression($parameters[$i]->getValue());
- break;
- case self::CASE_KEY:
- $this->setCasesensitive($parameters[$i]->getValue());
- break;
- default:
- $this->setError("Invalid parameter " . $paramname);
- }
- } // for each param
- } // if params
- }
-
- /**
- * Checks to make sure all settings are kosher. In this case, it
- * means that the pattern attribute has been set.
- *
- */
- public function verifySettings() {
- if ($this->userProvidedExpression === null) {
- $this->setError("The expression attribute is required");
- }
- }
-
- /**
- * The heart of the matter. This is where the selector gets to decide
- * on the inclusion of a file in a particular fileset.
- *
- * @param basedir the base directory the scan is being done from
- * @param filename is the name of the file to check
- * @param file a PhingFile object the selector can use
- * @return whether the file should be selected or not
- */
- public function isSelected(PhingFile $basedir, $filename, PhingFile $file) {
-
- $this->validate();
-
- if ($file->isDirectory()) {
- return true;
- }
-
- if ($this->myRegExp === null) {
- $this->myRegExp = new RegularExpression();
- $this->myRegExp->setPattern($this->userProvidedExpression);
- if (!$this->casesensitive) {
- $this->myRegExp->setIgnoreCase(true);
- }
- $this->myExpression = $this->myRegExp->getRegexp($this->getProject());
- }
-
- $in = null;
- try {
- $in = new BufferedReader(new FileReader($file));
- $teststr = $in->readLine();
- while ($teststr !== null) {
- if ($this->myExpression->matches($teststr)) {
- return true;
- }
- $teststr = $in->readLine();
- }
- return false;
- } catch (IOException $ioe) {
- if ($in) $in->close();
- throw new BuildException("Could not read file " . $filename);
- }
- $in->close();
- }
-
-}
-
diff --git a/buildscripts/phing/classes/phing/types/selectors/ContainsSelector.php b/buildscripts/phing/classes/phing/types/selectors/ContainsSelector.php
deleted file mode 100644
index d00ce995..00000000
--- a/buildscripts/phing/classes/phing/types/selectors/ContainsSelector.php
+++ /dev/null
@@ -1,151 +0,0 @@
-<?php
-
-/*
- * $Id: ContainsSelector.php,v 1.9 2005/05/26 13:10:53 mrook 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>.
- */
-
-include_once 'phing/types/selectors/BaseExtendSelector.php';
-
-/**
- * Selector that filters files based on whether they contain a
- * particular string.
- *
- * @author Hans Lellelid <hans@xmpl.org> (Phing)
- * @author Bruce Atherton <bruce@callenish.com> (Ant)
- * @package phing.types.selectors
- */
-class ContainsSelector extends BaseExtendSelector {
-
- private $contains = null;
- private $casesensitive = true;
- const CONTAINS_KEY = "text";
- const CASE_KEY = "casesensitive";
-
- public function toString() {
- $buf = "{containsselector text: ";
- $buf .= $this->contains;
- $buf .= " casesensitive: ";
- if ($this->casesensitive) {
- $buf .= "true";
- } else {
- $buf .= "false";
- }
- $buf .= "}";
- return $buf;
- }
-
- /**
- * The string to search for within a file.
- *
- * @param string $contains the string that a file must contain to be selected.
- */
- public function setText($contains) {
- $this->contains = $contains;
- }
-
- /**
- * Whether to ignore case in the string being searched.
- *
- * @param boolean $casesensitive whether to pay attention to case sensitivity
- */
- public function setCasesensitive($casesensitive) {
- $this->casesensitive = $casesensitive;
- }
-
- /**
- * When using this as a custom selector, this method will be called.
- * It translates each parameter into the appropriate setXXX() call.
- *
- * @param array $parameters the complete set of parameters for this selector
- */
- public function setParameters($parameters) {
- parent::setParameters($parameters);
- if ($parameters !== null) {
- for ($i=0,$size=count($parameters); $i < $size; $i++) {
- $paramname = $parameters[$i]->getName();
- switch(strtolower($paramname)) {
- case self::CONTAINS_KEY:
- $this->setText($parameters[$i]->getValue());
- break;
- case self::CASE_KEY:
- $this->setCasesensitive($parameters[$i]->getValue());
- break;
- default:
- $this->setError("Invalid parameter " . $paramname);
- }
- } // for each param
- } // if params
- }
-
- /**
- * Checks to make sure all settings are kosher. In this case, it
- * means that the pattern attribute has been set.
- *
- */
- public function verifySettings() {
- if ($this->contains === null) {
- $this->setError("The text attribute is required");
- }
- }
-
- /**
- * The heart of the matter. This is where the selector gets to decide
- * on the inclusion of a file in a particular fileset.
- *
- * @param basedir the base directory the scan is being done from
- * @param filename is the name of the file to check
- * @param file a PhingFile object the selector can use
- * @return whether the file should be selected or not
- */
- public function isSelected(PhingFile $basedir, $filename, PhingFile $file) {
-
- $this->validate();
-
- if ($file->isDirectory()) {
- return true;
- }
-
- $userstr = $this->contains;
- if (!$this->casesensitive) {
- $userstr = strtolower($this->contains);
- }
-
- $in = null;
- try {
- $in = new BufferedReader(new FileReader($file));
- $teststr = $in->readLine();
- while ($teststr !== null) {
- if (!$this->casesensitive) {
- $teststr = strtolower($teststr);
- }
- if (strpos($teststr, $userstr) !== false) {
- return true;
- }
- $teststr = $in->readLine();
- }
- return false;
- } catch (IOException $ioe) {
- if ($in) $in->close();
- throw new BuildException("Could not read file " . $filename);
- }
- $in->close();
- }
-
-}
-
diff --git a/buildscripts/phing/classes/phing/types/selectors/DateSelector.php b/buildscripts/phing/classes/phing/types/selectors/DateSelector.php
deleted file mode 100644
index 96e5c3ba..00000000
--- a/buildscripts/phing/classes/phing/types/selectors/DateSelector.php
+++ /dev/null
@@ -1,214 +0,0 @@
-<?php
-
-/*
- * $Id: DateSelector.php,v 1.10 2005/05/26 13:10:53 mrook 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>.
- */
-
-require_once 'phing/types/selectors/BaseExtendSelector.php';
-
-/**
- * Selector that chooses files based on their last modified date. Ant uses
- * millisecond precision (thanks to Java); PHP is forced to use only seconds
- * precision.
- *
- * @author Hans Lellelid <hans@xmpl.org> (Phing)
- * @author Bruce Atherton <bruce@callenish.com> (Ant)
- * @version $Revision: 1.10 $
- * @package phing.types.selecctors
- */
-class DateSelector extends BaseExtendSelector {
-
- private $seconds = -1; // millis in Ant, but PHP doesn't support that level of precision
- private $dateTime = null;
- private $includeDirs = false;
- private $granularity = 0;
- private $cmp = 2;
- const MILLIS_KEY = "millis";
- const DATETIME_KEY = "datetime";
- const CHECKDIRS_KEY = "checkdirs";
- const GRANULARITY_KEY = "granularity";
- const WHEN_KEY = "when";
- private static $timeComparisons = array("before", "after", "equal");
-
- public function __construct() {
- //if (Os.isFamily("dos")) {
- // granularity = 2000;
- //}
- }
-
- public function toString() {
- $buf = "{dateselector date: ";
- $buf .= $this->dateTime;
- $buf .= " compare: ";
- if ($this->cmp === 0) {
- $buf .= "before";
- } elseif ($this->cmp === 1) {
- $buf .= "after";
- } else {
- $buf .= "equal";
- }
- $buf .= " granularity: ";
- $buf .= $this->granularity;
- $buf .= "}";
- return $buf;
- }
-
- /**
- * For users that prefer to express time in seconds since 1970
- *
- * @param int $seconds the time to compare file's last modified date to,
- * expressed in milliseconds
- */
- public function setSeconds($seconds) {
- $this->seconds = (int) $seconds;
- }
-
- /**
- * Returns the seconds value the selector is set for.
- */
- public function getSeconds() {
- return $this->seconds;
- }
-
- /**
- * Sets the date. The user must supply it in MM/DD/YYYY HH:MM AM_PM
- * format
- *
- * @param string $dateTime a string in MM/DD/YYYY HH:MM AM_PM format
- */
- public function setDatetime($dateTime) {
- $dt = strtotime($dateTime);
- if ($dt == -1) {
- $this->setError("Date of " . $dateTime
- . " Cannot be parsed correctly. It should be in"
- . " a format parsable by PHP's strtotime() function.");
- } else {
- $this->dateTime = $dateTime;
- $this->setSeconds($dt);
- }
- }
-
- /**
- * Should we be checking dates on directories?
- *
- * @param boolean $includeDirs whether to check the timestamp on directories
- */
- public function setCheckdirs($includeDirs) {
- $this->includeDirs = (boolean) $includeDirs;
- }
-
- /**
- * Sets the number of milliseconds leeway we will give before we consider
- * a file not to have matched a date.
- * @param int $granularity
- */
- public function setGranularity($granularity) {
- $this->granularity = (int) $granularity;
- }
-
- /**
- * Sets the type of comparison to be done on the file's last modified
- * date.
- *
- * @param string $cmp The comparison to perform
- */
- public function setWhen($cmp) {
- $idx = array_search($cmp, self::$timeComparisons, true);
- if ($idx === null) {
- $this->setError("Invalid value for ".WHEN_KEY.": ".$cmp);
- } else {
- $this->cmp = $idx;
- }
- }
-
- /**
- * When using this as a custom selector, this method will be called.
- * It translates each parameter into the appropriate setXXX() call.
- *
- * @param array $parameters the complete set of parameters for this selector
- */
- public function setParameters($parameters) {
- parent::setParameters($parameters);
- if ($parameters !== null) {
- for ($i=0,$size=count($parameters); $i < $size; $i++) {
- $paramname = $parameters[$i]->getName();
- switch(strtolower($paramname)) {
- case self::MILLIS_KEY:
- $this->setMillis($parameters[$i]->getValue());
- break;
- case self::DATETIME_KEY:
- $this->setDatetime($parameters[$i]->getValue());
- break;
- case self::CHECKDIRS_KEY:
- $this->setCheckdirs($parameters[$i]->getValue());
- break;
- case self::GRANULARITY_KEY:
- $this->setGranularity($parameters[$i]->getValue());
- break;
- case self::WHEN_KEY:
- $this->setWhen($parameters[$i]->getValue());
- break;
- default:
- $this->setError("Invalid parameter " . $paramname);
- } // switch
- }
- }
- }
-
- /**
- * This is a consistency check to ensure the selector's required
- * values have been set.
- */
- public function verifySettings() {
- if ($this->dateTime === null && $this->seconds < 0) {
- $this->setError("You must provide a datetime or the number of "
- . "seconds.");
- } elseif ($this->seconds < 0) {
- $this->setError("Date of " . $this->dateTime
- . " results in negative seconds"
- . " value relative to epoch (January 1, 1970, 00:00:00 GMT).");
- }
- }
-
- /**
- * The heart of the matter. This is where the selector gets to decide
- * on the inclusion of a file in a particular fileset.
- *
- * @param PhingFile $basedir the base directory the scan is being done from
- * @param string $filename is the name of the file to check
- * @param PhingFile $file is a PhingFile object the selector can use
- * @return boolean Whether the file should be selected or not
- */
- public function isSelected(PhingFile $basedir, $filename, PhingFile $file) {
- $this->validate();
- if ($file->isDirectory() && ($this->includeDirs === false)) {
- return true;
- }
- if ($this->cmp === 0) {
- return (($file->lastModified() - $this->granularity) < $this->seconds);
- } elseif ($this->cmp === 1) {
- return (($file->lastModified() . $this->granularity) > $this->seconds);
- } else {
- return (abs($file->lastModified() - $this->seconds) <= $this->granularity);
- }
- }
-
-}
-
-
diff --git a/buildscripts/phing/classes/phing/types/selectors/DependSelector.php b/buildscripts/phing/classes/phing/types/selectors/DependSelector.php
deleted file mode 100644
index db73c512..00000000
--- a/buildscripts/phing/classes/phing/types/selectors/DependSelector.php
+++ /dev/null
@@ -1,151 +0,0 @@
-<?php
-
-/*
- * $Id: DependSelector.php,v 1.8 2005/05/26 13:10:53 mrook 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>.
- */
-
-require_once 'phing/types/selectors/BaseSelector.php';
-
-/**
- * Selector that filters files based on whether they are newer than
- * a matching file in another directory tree. It can contain a mapper
- * element, so isn't available as an ExtendSelector (since those
- * parameters can't hold other elements).
- *
- * @author Hans Lellelid <hans@xmpl.org> (Phing)
- * @author Bruce Atherton <bruce@callenish.com> (Ant)
- * @version $Revision: 1.8 $
- * @package phing.types.selectors
- */
-class DependSelector extends BaseSelector {
-
- private $targetdir = null;
- private $mapperElement = null;
- private $map = null;
- private $granularity = 0;
-
- public function __construct() {
- // not yet supported:
- //if (Os.isFamily("dos")) {
- // $this->granularity = 2000;
- //}
- }
-
- public function toString() {
- $buf = "{dependselector targetdir: ";
- if ($this->targetdir === null) {
- $buf .= "NOT YET SET";
- } else {
- $buf .= $this->targetdir->getName();
- }
- $buf .= " granularity: ";
- $buf .= $this->granularity;
- if ($this->map !== null) {
- $buf .= " mapper: ";
- $buf .= $this->map->toString();
- } elseif ($this->mapperElement !== null) {
- $buf .= " mapper: ";
- $buf .= $this->mapperElement->toString();
- }
- $buf .= "}";
- return $buf;
- }
-
- /**
- * The name of the file or directory which is checked for out-of-date
- * files.
- *
- * @param targetdir the directory to scan looking for files.
- */
- public function setTargetdir(PhingFile $targetdir) {
- $this->targetdir = $targetdir;
- }
-
- /**
- * Sets the number of milliseconds leeway we will give before we consider
- * a file out of date.
- */
- public function setGranularity($granularity) {
- $this->granularity = (int) granularity;
- }
-
- /**
- * Defines the FileNameMapper to use (nested mapper element).
- * @throws BuildException
- */
- public function createMapper() {
- if ($this->mapperElement !== null) {
- throw new BuildException("Cannot define more than one mapper");
- }
- $this->mapperElement = new Mapper($this->project);
- return $this->mapperElement;
- }
-
-
- /**
- * Checks to make sure all settings are kosher. In this case, it
- * means that the dest attribute has been set and we have a mapper.
- */
- public function verifySettings() {
- if ($this->targetdir === null) {
- $this->setError("The targetdir attribute is required.");
- }
- if ($this->mapperElement === null) {
- $this->map = new IdentityMapper();
- } else {
- $this->map = $this->mapperElement->getImplementation();
- }
- if ($this->map === null) {
- $this->setError("Could not set <mapper> element.");
- }
- }
-
- /**
- * The heart of the matter. This is where the selector gets to decide
- * on the inclusion of a file in a particular fileset.
- *
- * @param basedir the base directory the scan is being done from
- * @param filename is the name of the file to check
- * @param file is a PhingFile object the selector can use
- * @return whether the file should be selected or not
- */
- public function isSelected(PhingFile $basedir, $filename, PhingFile $file) {
-
- $this->validate();
-
- // Determine file whose out-of-dateness is to be checked
- $destfiles = $this->map->main($filename);
-
- // If filename does not match the To attribute of the mapper
- // then filter it out of the files we are considering
- if ($destfiles === null) {
- return false;
- }
- // Sanity check
- if (count($destfiles) !== 1 || $destfiles[0] === null) {
- throw new BuildException("Invalid destination file results for " . $this->targetdir . " with filename " . $filename);
- }
- $destname = $destfiles[0];
- $destfile = new PhingFile($this->targetdir, $destname);
-
- return SelectorUtils::isOutOfDate($file, $destfile, $this->granularity);
- }
-
-}
-
diff --git a/buildscripts/phing/classes/phing/types/selectors/DepthSelector.php b/buildscripts/phing/classes/phing/types/selectors/DepthSelector.php
deleted file mode 100644
index 3faafe96..00000000
--- a/buildscripts/phing/classes/phing/types/selectors/DepthSelector.php
+++ /dev/null
@@ -1,158 +0,0 @@
-<?php
-/*
- * $Id: DepthSelector.php,v 1.7 2005/05/26 13:10:53 mrook 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>.
- */
-
-require_once 'phing/types/selectors/BaseExtendSelector.php';
-
-/**
- * Selector that filters files based on the how deep in the directory
- * tree they are.
- *
- * @author Hans Lellelid <hans@xmpl.org> (Phing)
- * @author Bruce Atherton <bruce@callenish.com> (Ant)
- * @version $Revision: 1.7 $
- * @package phing.types.selectors
- */
-class DepthSelector extends BaseExtendSelector {
-
- public $min = -1;
- public $max = -1;
- const MIN_KEY = "min";
- const MAX_KEY = "max";
-
- public function toString() {
- $buf = "{depthselector min: ";
- $buf .= $this->min;
- $buf .= " max: ";
- $buf .= $this->max;
- $buf .= "}";
- return $buf;
- }
-
- /**
- * The minimum depth below the basedir before a file is selected.
- *
- * @param min minimum directory levels below basedir to go
- */
- public function setMin($min) {
- $this->min = (int) $min;
- }
-
- /**
- * The minimum depth below the basedir before a file is selected.
- *
- * @param min maximum directory levels below basedir to go
- */
- public function setMax($max) {
- $this->max = (int) $max;
- }
-
- /**
- * When using this as a custom selector, this method will be called.
- * It translates each parameter into the appropriate setXXX() call.
- *
- * @param parameters the complete set of parameters for this selector
- */
- public function setParameters($parameters) {
- parent::setParameters($parameters);
- if ($parameters !== null) {
- for ($i = 0, $size=count($parameters); $i < $size; $i++) {
- $paramname = $parameters[$i]->getName();
- switch(strtolower($paramname)) {
- case self::MIN_KEY:
- $this->setMin($parameters[$i]->getValue());
- break;
- case self::MAX_KEY:
- $this->setMax($parameters[$i]->getValue());
- break;
-
- default:
- $this->setError("Invalud parameter " . $paramname);
- } // switch
- }
- }
- }
-
- /**
- * Checks to make sure all settings are kosher. In this case, it
- * means that the max depth is not lower than the min depth.
- */
- public function verifySettings() {
- if ($this->min < 0 && $this->max < 0) {
- $this->setError("You must set at least one of the min or the " .
- "max levels.");
- }
- if ($this->max < $this->min && $this->max > -1) {
- $this->setError("The maximum depth is lower than the minimum.");
- }
- }
-
- /**
- * The heart of the matter. This is where the selector gets to decide
- * on the inclusion of a file in a particular fileset. Most of the work
- * for this selector is offloaded into SelectorUtils, a static class
- * that provides the same services for both FilenameSelector and
- * DirectoryScanner.
- *
- * @param basedir the base directory the scan is being done from
- * @param filename is the name of the file to check
- * @param file is a PhingFile object the selector can use
- * @return whether the file should be selected or not
- */
- public function isSelected(PhingFile $basedir, $filename, PhingFile $file) {
-
- $this->validate();
-
- $depth = -1;
- // If you felt daring, you could cache the basedir absolute path
- $abs_base = $basedir->getAbsolutePath();
- $abs_file = $file->getAbsolutePath();
-
- $tok_base = explode(DIRECTORY_SEPARATOR, $abs_base);
- $tok_file = explode(DIRECTORY_SEPARATOR, $abs_file);
-
- for($i=0,$size=count($tok_file); $i < $size; $i++) {
- $filetoken = $tok_file[$i];
- if (isset($tok_base[$i])) {
- $basetoken = $tok_base[$i];
- // Sanity check. Ditch it if you want faster performance
- if ($basetoken !== $filetoken) {
- throw new BuildException("File " . $filename .
- " does not appear within " . $abs_base . "directory");
- }
- } else { // no more basepath tokens
- $depth++;
- if ($this->max > -1 && $depth > $this->max) {
- return false;
- }
- }
- }
- if (isset($tok_base[$i + 1])) {
- throw new BuildException("File " . $filename .
- " is outside of " . $abs_base . "directory tree");
- }
- if ($this->min > -1 && $depth < $this->min) {
- return false;
- }
- return true;
- }
-
-}
-
diff --git a/buildscripts/phing/classes/phing/types/selectors/ExtendFileSelector.php b/buildscripts/phing/classes/phing/types/selectors/ExtendFileSelector.php
deleted file mode 100644
index 84a3ee5b..00000000
--- a/buildscripts/phing/classes/phing/types/selectors/ExtendFileSelector.php
+++ /dev/null
@@ -1,43 +0,0 @@
-<?php
-
-/*
- * $Id: ExtendFileSelector.php,v 1.5 2004/02/16 05:28:40 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>.
- */
-
-require_once 'phing/types/Parameterizable.php';
-require_once 'phing/types/selectors/FileSelector.php';
-
-/**
- * This is the interface to be used by all custom selectors, those that are
- * called through the &lt;custom&gt; tag. It is the amalgamation of two
- * interfaces, the FileSelector and the Paramterizable interface. Note that
- * you will almost certainly want the default behaviour for handling
- * Parameters, so you probably want to use the BaseExtendSelector class
- * as the base class for your custom selector rather than implementing
- * this interface from scratch.
- *
- * @author Hans Lellelid <hans@xmpl.org> (Phing)
- * @author Bruce Atherton <bruce@callenish.com> (Ant)
- * @package phing.types.selectors
- */
-interface ExtendFileSelector extends Parameterizable, FileSelector {
- // No further methods necessary. This is just an amalgamation of two other
- // interfaces.
-}
-
diff --git a/buildscripts/phing/classes/phing/types/selectors/ExtendSelector.php b/buildscripts/phing/classes/phing/types/selectors/ExtendSelector.php
deleted file mode 100644
index cc939254..00000000
--- a/buildscripts/phing/classes/phing/types/selectors/ExtendSelector.php
+++ /dev/null
@@ -1,127 +0,0 @@
-<?php
-
-/*
- * $Id: ExtendSelector.php,v 1.10 2005/05/26 13:10:53 mrook 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>.
- */
-
-include_once 'phing/util/StringHelper.php';
-
-/**
- * Selector that selects files by forwarding the request on to other classes.
- *
- * TODO:
- * Consider adding Path (org.apache.tools.ant.types.Path) support to this class
- * and to the Mappers class. See Ant versions for implimentation details.
- *
- * @author <a href="mailto:bruce@callenish.com">Bruce Atherton</a>
- * @package phing.types.selectors
- */
-class ExtendSelector extends BaseSelector {
-
- private $classname;
- private $dynselector;
- private $parameters = array();
-
- /**
- * Sets the classname of the custom selector.
- *
- * @param classname is the class which implements this selector
- */
- public function setClassname($classname) {
- $this->classname = $classname;
- }
-
- /**
- * Instantiates the identified custom selector class.
- */
- public function selectorCreate() {
- if ($this->classname !== null && $this->classname !== "") {
- try {
- // assume it's fully qualified, import it
- $cls = Phing::import($this->classname);
-
- // make sure class exists
- if (class_exists($cls)) {
- $this->dynselector = new $cls();
- } else {
- $this->setError("Selector " . $this->classname . " not initialized, no such class");
- }
- } catch (Exception $e) {
- $this->setError("Selector " . $this->classname . " not initialized, could not create class: " . $e->getMessage());
- }
- } else {
- $this->setError("There is no classname specified");
- }
- }
-
- /**
- * Create new parameters to pass to custom selector.
- *
- * @param p The new Parameter object
- */
- public function addParam(Parameter $p) {
- $this->parameters[] = $p;
- }
-
- /**
- * These are errors specific to ExtendSelector only. If there are
- * errors in the custom selector, it should throw a BuildException
- * when isSelected() is called.
- */
- public function verifySettings() {
- // Creation is done here rather than in isSelected() because some
- // containers may do a validation pass before running isSelected(),
- // but we need to check for the existence of the created class.
- if ($this->dynselector === null) {
- $this->selectorCreate();
- }
-
- if (empty($this->classname)) {
- $this->setError("The classname attribute is required");
- } elseif ($this->dynselector === null) {
- $this->setError("Internal Error: The custom selector was not created");
- } elseif ( !($this->dynselector instanceof ExtendFileSelector) && (count($this->parameters) > 0)) {
- $this->setError("Cannot set parameters on custom selector that does not "
- . "implement ExtendFileSelector.");
- }
- }
-
-
- /**
- * Allows the custom selector to choose whether to select a file. This
- * is also where the Parameters are passed to the custom selector,
- * since we know we must have them all by now. And since we must know
- * both classpath and classname, creating the class is deferred to here
- * as well.
- *
- * @throws BuildException
- */
- public function isSelected(PhingFile $basedir, $filename, PhingFile $file) {
-
- $this->validate();
-
- if (count($this->parameters) > 0 && $this->dynselector instanceof ExtendFileSelector) {
- // We know that dynselector must be non-null if no error message
- $this->dynselector->setParameters($this->parameters);
- }
- return $this->dynselector->isSelected($basedir, $filename, $file);
- }
-
-}
-
diff --git a/buildscripts/phing/classes/phing/types/selectors/FileSelector.php b/buildscripts/phing/classes/phing/types/selectors/FileSelector.php
deleted file mode 100644
index 05926c86..00000000
--- a/buildscripts/phing/classes/phing/types/selectors/FileSelector.php
+++ /dev/null
@@ -1,47 +0,0 @@
-<?php
-
-/*
- * $Id: FileSelector.php,v 1.4 2005/05/26 13:10:53 mrook 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>.
- */
-
-/**
- * This is the interface to be used by all selectors.
- *
- * @author Hans Lellelid, hans@xmpl.org (Phing)
- * @author Bruce Atherton, bruce@callenish.com (Ant)
- * @package phing.types.selectors
- */
-interface FileSelector {
-
- /**
- * Method that each selector will implement to create their
- * selection behaviour. If there is a problem with the setup
- * of a selector, it can throw a BuildException to indicate
- * the problem.
- *
- * @param basedir A PhingFile object for the base directory
- * @param filename The name of the file to check
- * @param file A PhingFile object for this filename
- * @return whether the file should be selected or not
- * @throws BuildException if the selector was not configured correctly
- */
- public function isSelected(PhingFile $basedir, $filename, PhingFile $file);
-
-}
-
diff --git a/buildscripts/phing/classes/phing/types/selectors/FilenameSelector.php b/buildscripts/phing/classes/phing/types/selectors/FilenameSelector.php
deleted file mode 100644
index 2315c888..00000000
--- a/buildscripts/phing/classes/phing/types/selectors/FilenameSelector.php
+++ /dev/null
@@ -1,157 +0,0 @@
-<?php
-
-/*
- * $Id: FilenameSelector.php,v 1.8 2005/05/26 13:10:53 mrook 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>.
- */
-
-
-include_once 'phing/types/selectors/BaseExtendSelector.php';
-
-/**
- * Selector that filters files based on the filename.
- *
- * @author Hans Lellelid, hans@xmpl.org (Phing)
- * @author Bruce Atherton, bruce@callenish.com (Ant)
- * @package phing.types.selectors
- */
-class FilenameSelector extends BaseExtendSelector {
-
- private $pattern = null;
- private $casesensitive = true;
- private $negated = false;
- const NAME_KEY = "name";
- const CASE_KEY = "casesensitive";
- const NEGATE_KEY = "negate";
-
- public function toString() {
- $buf = "{filenameselector name: ";
- $buf .= $this->pattern;
- $buf .= " negate: ";
- if ($this->negated) {
- $buf .= "true";
- } else {
- $buf .= "false";
- }
- $buf .= " casesensitive: ";
- if ($this->casesensitive) {
- $buf .= "true";
- } else {
- $buf .= "false";
- }
- $buf .= "}";
- return $buf;
- }
-
- /**
- * The name of the file, or the pattern for the name, that
- * should be used for selection.
- *
- * @param pattern the file pattern that any filename must match
- * against in order to be selected.
- */
- public function setName($pattern) {
- $pattern = str_replace('\\', DIRECTORY_SEPARATOR, $pattern);
- $pattern = str_replace('/', DIRECTORY_SEPARATOR, $pattern);
-
- if (StringHelper::endsWith(DIRECTORY_SEPARATOR, $pattern)) {
- $pattern .= "**";
- }
- $this->pattern = $pattern;
- }
-
- /**
- * Whether to ignore case when checking filenames.
- *
- * @param casesensitive whether to pay attention to case sensitivity
- */
- public function setCasesensitive($casesensitive) {
- $this->casesensitive = $casesensitive;
- }
-
- /**
- * You can optionally reverse the selection of this selector,
- * thereby emulating an &lt;exclude&gt; tag, by setting the attribute
- * negate to true. This is identical to surrounding the selector
- * with &lt;not&gt;&lt;/not&gt;.
- *
- * @param negated whether to negate this selection
- */
- public function setNegate($negated) {
- $this->negated = $negated;
- }
-
- /**
- * When using this as a custom selector, this method will be called.
- * It translates each parameter into the appropriate setXXX() call.
- *
- * @param array $parameters the complete set of parameters for this selector
- */
- public function setParameters($parameters) {
- parent::setParameters($parameters);
- if ($parameters !== null) {
- for ($i=0, $len=count($parameters); $i < $len; $i++) {
- $paramname = $parameters[$i]->getName();
- switch(strtolower($paramname)) {
- case self::NAME_KEY:
- $this->setName($parameters[$i]->getValue());
- break;
- case self::CASE_KEY:
- $this->setCasesensitive($parameters[$i]->getValue());
- break;
- case self::NEGATE_KEY:
- $this->setNegate($parameters[$i]->getValue());
- break;
- default:
- $this->setError("Invalid parameter " . $paramname);
- }
- } // for each param
- } // if params
- }
-
- /**
- * Checks to make sure all settings are kosher. In this case, it
- * means that the name attribute has been set.
- *
- */
- public function verifySettings() {
- if ($this->pattern === null) {
- $this->setError("The name attribute is required");
- }
- }
-
- /**
- * The heart of the matter. This is where the selector gets to decide
- * on the inclusion of a file in a particular fileset. Most of the work
- * for this selector is offloaded into SelectorUtils, a static class
- * that provides the same services for both FilenameSelector and
- * DirectoryScanner.
- *
- * @param basedir the base directory the scan is being done from
- * @param filename is the name of the file to check
- * @param file is a PhingFile object the selector can use
- * @return whether the file should be selected or not
- */
- public function isSelected(PhingFile $basedir, $filename, PhingFile $file) {
- $this->validate();
- return (SelectorUtils::matchPath($this->pattern, $filename, $this->casesensitive)
- === !($this->negated));
- }
-
-}
-
diff --git a/buildscripts/phing/classes/phing/types/selectors/MajoritySelector.php b/buildscripts/phing/classes/phing/types/selectors/MajoritySelector.php
deleted file mode 100644
index 19e0fb76..00000000
--- a/buildscripts/phing/classes/phing/types/selectors/MajoritySelector.php
+++ /dev/null
@@ -1,92 +0,0 @@
-<?php
-
-/*
- * $Id: MajoritySelector.php,v 1.6 2005/05/26 13:10:53 mrook 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>.
- */
-
-
-/**
- * This selector is here just to shake up your thinking a bit. Don't get
- * too caught up in boolean, there are other ways you can evaluate a
- * collection of selectors. This one takes a vote of the selectors it
- * contains, and majority wins. You could also have an "all-but-one"
- * selector, a "weighted-average" selector, and so on. These are left
- * as exercises for the reader (as are the usecases where this would
- * be necessary).
- *
- * @author Hans Lellelid <hans@xmpl.org> (Phing)
- * @author Bruce Atherton <bruce@callenish.com> (Ant)
- * @package phing.types.selectors
- */
-class MajoritySelector extends BaseSelectorContainer {
-
- private $allowtie = true;
-
- public function toString() {
- $buf = "";
- if ($this->hasSelectors()) {
- $buf .= "{majorityselect: ";
- $buf .= parent::toString();
- $buf .= "}";
- }
- return $buf;
- }
-
- public function setAllowtie($tiebreaker) {
- $this->allowtie = $tiebreaker;
- }
-
- /**
- * Returns true (the file is selected) if most of the other selectors
- * agree. In case of a tie, go by the allowtie setting. That defaults
- * to true, meaning in case of a tie, the file is selected.
- *
- * @param basedir the base directory the scan is being done from
- * @param filename is the name of the file to check
- * @param file is a PhingFile object for the filename that the selector
- * can use
- * @return whether the file should be selected or not
- */
- public function isSelected(PhingFile $basedir, $filename, PhingFile $file) {
-
- $this->validate();
-
- $yesvotes = 0;
- $novotes = 0;
-
- $selectors = $this->selectorElements();
- for($i=0,$size=count($selectors); $i < $size; $i++) {
- $result = $selectors[$i]->isSelected($basedir,$filename,$file);
- if ($result) {
- $yesvotes = $yesvotes + 1;
- } else {
- $novotes = $novotes + 1;
- }
- }
- if ($yesvotes > $novotes) {
- return true;
- }
- else if ($novotes > $yesvotes) {
- return false;
- }
- // At this point, we know we have a tie.
- return $this->allowtie;
- }
-}
-
diff --git a/buildscripts/phing/classes/phing/types/selectors/NoneSelector.php b/buildscripts/phing/classes/phing/types/selectors/NoneSelector.php
deleted file mode 100644
index 844078a5..00000000
--- a/buildscripts/phing/classes/phing/types/selectors/NoneSelector.php
+++ /dev/null
@@ -1,71 +0,0 @@
-<?php
-/*
- * $Id: NoneSelector.php,v 1.6 2005/05/26 13:10:53 mrook 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>.
- */
-
-require_once 'phing/types/selectors/BaseSelectorContainer.php';
-
-/**
- * This selector has a collection of other selectors. All of those selectors
- * must refuse to select a file before the file is considered selected by
- * this selector.
- *
- * @author Hans Lellelid <hans@xmpl.org>
- * @author Bruce Atherton <bruce@callenish.com> (Ant)
- * @package phing.types.selectors
- */
-class NoneSelector extends BaseSelectorContainer {
-
- public function toString() {
- $buf = "";
- if ($this->hasSelectors()) {
- $buf .= "{noneselect: ";
- $buf .= parent::toString();
- $buf .= "}";
- }
- return $buf;
- }
-
- /**
- * Returns true (the file is selected) only if all other selectors
- * agree that the file should not be selected.
- *
- * @param basedir the base directory the scan is being done from
- * @param filename is the name of the file to check
- * @param file is a java.io.File object for the filename that the selector
- * can use
- * @return whether the file should be selected or not
- */
- public function isSelected(PhingFile $basedir, $filename, PhingFile $file) {
-
- $this->validate();
-
- $selectors = $this->selectorElements();
-
- for($i=0,$size=count($selectors); $i < $size; $i++) {
- $result = $selectors[$i]->isSelected($basedir, $filename, $file);
- if ($result) {
- return false;
- }
- }
- return true;
- }
-
-}
-
diff --git a/buildscripts/phing/classes/phing/types/selectors/NotSelector.php b/buildscripts/phing/classes/phing/types/selectors/NotSelector.php
deleted file mode 100644
index 90237084..00000000
--- a/buildscripts/phing/classes/phing/types/selectors/NotSelector.php
+++ /dev/null
@@ -1,59 +0,0 @@
-<?php
-
-/*
- * $Id: NotSelector.php,v 1.4 2003/12/24 17:43:26 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>.
- */
-
-require_once 'phing/types/selectors/NoneSelector.php';
-
-/**
- * This selector has one other selectors whose meaning it inverts. It
- * actually relies on NoneSelector for its implementation of the
- * isSelected() method, but it adds a check to ensure there is only one
- * other selector contained within.
- *
- * @author Hans Lellelid <hans@xmpl.org> (Phing)
- * @author Bruce Atherton <bruce@callenish.com> (Ant)
- * @package phing.types.selectors
- */
-class NotSelector extends NoneSelector {
-
- public function toString() {
- $buf = "";
- if ($this->hasSelectors()) {
- $buf .= "{notselect: ";
- $buf .= parent::toString();
- $buf .= "}";
- }
- return $buf;
- }
-
- /**
- * Makes sure that there is only one entry, sets an error message if
- * not.
- */
- public function verifySettings() {
- if ($this->selectorCount() != 1) {
- $this->setError("One and only one selector is allowed within the " .
- "<not> tag");
- }
- }
-
-}
-
diff --git a/buildscripts/phing/classes/phing/types/selectors/OrSelector.php b/buildscripts/phing/classes/phing/types/selectors/OrSelector.php
deleted file mode 100644
index 6a8778fa..00000000
--- a/buildscripts/phing/classes/phing/types/selectors/OrSelector.php
+++ /dev/null
@@ -1,72 +0,0 @@
-<?php
-/*
- * $Id: OrSelector.php,v 1.7 2005/05/26 13:10:53 mrook 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>.
- */
-
-require_once 'phing/types/selectors/BaseSelectorContainer.php';
-
-/**
- * This selector has a collection of other selectors, any of which have to
- * select a file in order for this selector to select it.
- *
- * @author Hans Lellelid <hans@xmpl.org> (Phing)
- * @author Bruce Atherton <bruce@callenish.com> (Ant)
- * @package phing.types.selectors
- */
-class OrSelector extends BaseSelectorContainer {
-
- public function toString() {
- $buf = "";
- if ($this->hasSelectors()) {
- $buf .= "{orselect: ";
- $buf .= parent::toString();
- $buf .= "}";
- }
- return $buf;
- }
-
- /**
- * Returns true (the file is selected) if any of the other selectors
- * agree that the file should be selected.
- *
- * @param basedir the base directory the scan is being done from
- * @param filename the name of the file to check
- * @param file a PhingFile object for the filename that the selector
- * can use
- * @return boolean Whether the file should be selected or not
- */
- public function isSelected(PhingFile $basedir, $filename, PhingFile $file) {
-
- $this->validate();
-
- $selectors = $this->selectorElements();
-
- // First, check that all elements are correctly configured
-
- for($i=0,$size=count($selectors); $i < $size; $i++) {
- $result = $selectors[$i]->isSelected($basedir, $filename, $file);
- if ($result) {
- return true;
- }
- }
- return false;
- }
-
-}
-
diff --git a/buildscripts/phing/classes/phing/types/selectors/PresentSelector.php b/buildscripts/phing/classes/phing/types/selectors/PresentSelector.php
deleted file mode 100644
index f5f4c880..00000000
--- a/buildscripts/phing/classes/phing/types/selectors/PresentSelector.php
+++ /dev/null
@@ -1,154 +0,0 @@
-<?php
-
-/*
- * $Id: PresentSelector.php,v 1.9 2005/05/26 13:10:53 mrook 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>.
- */
-
-/**
- * Selector that filters files based on whether they appear in another
- * directory tree. It can contain a mapper element, so isn't available
- * as an ExtendSelector (since those parameters can't hold other
- * elements).
- *
- * @author Hans Lellelid <hans@xmpl.org> (Phing)
- * @author Bruce Atherton <bruce@callenish.com> (Ant)
- * @package phing.types.selectors
- */
-class PresentSelector extends BaseSelector {
-
- private $targetdir = null;
- private $mapperElement = null;
- private $map = null;
- private $destmustexist = true;
- private static $filePresence = array("srconly", "both");
-
- public function toString() {
- $buf = "{presentselector targetdir: ";
- if ($this->targetdir === null) {
- $buf .= "NOT YET SET";
- } else {
- $buf .= $this->targetdir->getName();
- }
- $buf .= " present: ";
- if ($this->destmustexist) {
- $buf .= "both";
- } else {
- $buf .= "srconly";
- }
- if ($this->map !== null) {
- $buf .= $this->map->toString();
- } elseif ($this->mapperElement !== null) {
- $buf .= $this->mapperElement->toString();
- }
- $buf .= "}";
- return $buf;
- }
-
- /**
- * The name of the file or directory which is checked for matching
- * files.
- *
- * @param targetdir the directory to scan looking for matching files.
- */
- public function setTargetdir(PhingFile $targetdir) {
- $this->targetdir = $targetdir;
- }
-
- /**
- * Defines the FileNameMapper to use (nested mapper element).
- * @throws BuildException
- */
- public function createMapper() {
- if ($this->mapperElement !== null) {
- throw new BuildException("Cannot define more than one mapper");
- }
- $this->mapperElement = new Mapper($this->getProject());
- return $this->mapperElement;
- }
-
-
- /**
- * This sets whether to select a file if its dest file is present.
- * It could be a <code>negate</code> boolean, but by doing things
- * this way, we get some documentation on how the system works.
- * A user looking at the documentation should clearly understand
- * that the ONLY files whose presence is being tested are those
- * that already exist in the source directory, hence the lack of
- * a <code>destonly</code> option.
- *
- * @param string $fp An attribute set to either <code>srconly</code or
- * ><code>both</code>.
- */
- public function setPresent($fp) {
- $idx = array_search($fp, self::$filePresence, true);
- if ( $idx === 0 ) {
- $this->destmustexist = false;
- }
- }
-
- /**
- * Checks to make sure all settings are kosher. In this case, it
- * means that the targetdir attribute has been set and we have a mapper.
- */
- public function verifySettings() {
- if ($this->targetdir === null) {
- $this->setError("The targetdir attribute is required.");
- }
- if ($this->mapperElement === null) {
- $this->map = new IdentityMapper();
- } else {
- $this->map = $this->mapperElement->getImplementation();
- }
- if ($this->map === null) {
- $this->setError("Could not set <mapper> element.");
- }
- }
-
- /**
- * The heart of the matter. This is where the selector gets to decide
- * on the inclusion of a file in a particular fileset.
- *
- * @param basedir the base directory the scan is being done from
- * @param filename is the name of the file to check
- * @param file is a PhingFile object the selector can use
- * @return whether the file should be selected or not
- */
- public function isSelected(PhingFile $basedir, $filename, PhingFile $file) {
-
- $this->validate();
-
- // Determine file whose existence is to be checked
- $destfiles = $this->map->main($filename);
- // If filename does not match the To attribute of the mapper
- // then filter it out of the files we are considering
- if ($destfiles === null) {
- return false;
- }
- // Sanity check
- if (count($destfiles) !== 1 || $destfiles[0] === null) {
- throw new BuildException("Invalid destination file results for "
- . $this->targetdir . " with filename " . $filename);
- }
- $destname = $destfiles[0];
- $destfile = new PhingFile($this->targetdir, $destname);
- return $destfile->exists() === $this->destmustexist;
- }
-
-}
-
diff --git a/buildscripts/phing/classes/phing/types/selectors/SelectSelector.php b/buildscripts/phing/classes/phing/types/selectors/SelectSelector.php
deleted file mode 100644
index a7644447..00000000
--- a/buildscripts/phing/classes/phing/types/selectors/SelectSelector.php
+++ /dev/null
@@ -1,124 +0,0 @@
-<?php
-
-/*
- * $Id: SelectSelector.php,v 1.6 2003/12/24 17:43:26 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>.
- */
-
-require_once 'phing/types/selectors/AndSelector.php';
-
-/**
- * This selector just holds one other selector and forwards all
- * requests to it. It exists so that there is a single selector
- * type that can exist outside of any targets, as an element of
- * project. It overrides all of the reference stuff so that it
- * works as expected. Note that this is the only selector you
- * can reference.
- *
- * @author Hans Lellelid <hans@xmpl.org> (Phing)
- * @author Bruce Atherton <bruce@callenish.com> (Ant)
- * @version $Revision: 1.6 $
- * @package phing.types.selectors
- */
-class SelectSelector extends AndSelector {
-
- public function toString() {
- $buf = "";
- if ($this->hasSelectors()) {
- $buf .= "{select: ";
- $buf .= parent::toString();
- $buf .= "}";
- }
- return $buf;
- }
-
- /**
- * Performs the check for circular references and returns the
- * referenced Selector.
- */
- private function getRef() {
- $o = $this->getCheckedRef(get_class($this), "SelectSelector");
- return $o;
- }
-
- /**
- * Indicates whether there are any selectors here.
- */
- public function hasSelectors() {
- if ($this->isReference()) {
- return $this->getRef()->hasSelectors();
- }
- return parent::hasSelectors();
- }
-
- /**
- * Gives the count of the number of selectors in this container
- */
- public function selectorCount() {
- if ($this->isReference()) {
- return $this->getRef()->selectorCount();
- }
- return parent::selectorCount();
- }
-
- /**
- * Returns the set of selectors as an array.
- */
- public function getSelectors(Project $p) {
- if ($this->isReference()) {
- return $this->getRef()->getSelectors($p);
- }
- return parent::getSelectors($p);
- }
-
- /**
- * Returns an enumerator for accessing the set of selectors.
- */
- public function selectorElements() {
- if ($this->isReference()) {
- return $this->getRef()->selectorElements();
- }
- return parent::selectorElements();
- }
-
- /**
- * Add a new selector into this container.
- *
- * @param selector the new selector to add
- * @return the selector that was added
- */
- public function appendSelector(FileSelector $selector) {
- if ($this->isReference()) {
- throw $this->noChildrenAllowed();
- }
- parent::appendSelector($selector);
- }
-
- /**
- * Makes sure that there is only one entry, sets an error message if
- * not.
- */
- public function verifySettings() {
- if ($this->selectorCount() != 1) {
- $this->setError("One and only one selector is allowed within the "
- . "<selector> tag");
- }
- }
-
-}
-
diff --git a/buildscripts/phing/classes/phing/types/selectors/SelectorContainer.php b/buildscripts/phing/classes/phing/types/selectors/SelectorContainer.php
deleted file mode 100644
index 4a73b113..00000000
--- a/buildscripts/phing/classes/phing/types/selectors/SelectorContainer.php
+++ /dev/null
@@ -1,141 +0,0 @@
-<?php
-
-/*
- * $Id: SelectorContainer.php,v 1.3 2003/11/19 05:48:30 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>.
- */
-
-
-/**
- * This is the interface for selectors that can contain other selectors.
- *
- * @author <a href="mailto:bruce@callenish.com">Bruce Atherton</a>
- * @package phing.types.selectors
- */
-interface SelectorContainer {
-
- /**
- * Indicates whether there are any selectors here.
- *
- * @return whether any selectors are in this container
- */
- public function hasSelectors();
-
- /**
- * Gives the count of the number of selectors in this container
- *
- * @return the number of selectors in this container
- */
- public function selectorCount();
-
- /**
- * Returns a *copy* of the set of selectors as an array.
- *
- * @return an array of selectors in this container
- */
- public function getSelectors(Project $p);
-
- /**
- * Returns an array for accessing the set of selectors.
- *
- * @return an enumerator that goes through each of the selectors
- */
- public function selectorElements();
-
- /**
- * Add a new selector into this container.
- *
- * @param selector the new selector to add
- * @return the selector that was added
- */
- public function appendSelector(FileSelector $selector);
-
- /* Methods below all add specific selectors */
-
- /**
- * add a "Select" selector entry on the selector list
- */
- public function createSelector();
-
- /**
- * add an "And" selector entry on the selector list
- */
- public function createAnd();
-
- /**
- * add an "Or" selector entry on the selector list
- */
- public function createOr();
-
- /**
- * add a "Not" selector entry on the selector list
- */
- public function createNot();
-
- /**
- * add a "None" selector entry on the selector list
- */
- public function createNone();
-
- /**
- * add a majority selector entry on the selector list
- */
- public function createMajority();
-
- /**
- * add a selector date entry on the selector list
- */
- public function createDate();
-
- /**
- * add a selector size entry on the selector list
- */
- public function createSize();
-
- /**
- * add a selector filename entry on the selector list
- */
- public function createFilename();
-
- /**
- * add an extended selector entry on the selector list
- */
- public function createCustom();
-
- /**
- * add a contains selector entry on the selector list
- */
- public function createContains();
-
- /**
- * add a present selector entry on the selector list
- */
- public function createPresent();
-
- /**
- * add a depth selector entry on the selector list
- */
- public function createDepth();
-
- /**
- * add a depends selector entry on the selector list
- */
- public function createDepend();
-
-}
-
diff --git a/buildscripts/phing/classes/phing/types/selectors/SelectorScanner.php b/buildscripts/phing/classes/phing/types/selectors/SelectorScanner.php
deleted file mode 100644
index f5bb898a..00000000
--- a/buildscripts/phing/classes/phing/types/selectors/SelectorScanner.php
+++ /dev/null
@@ -1,55 +0,0 @@
-<?php
-
-/*
- * $Id: SelectorScanner.php,v 1.3 2003/11/19 05:48:30 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>.
- */
-
-
-/**
- * An interface used to describe the actions required by any type of
- * directory scanner that supports Selecters.
- *
- * @author Hans Lellelid <hans@xmpl.org> (Phing)
- * @author Bruce Atherton <bruce@callenish.com> (Ant)
- * @package phing.types.selectors
- */
-interface SelectorScanner {
-
- /**
- * Sets the selectors the scanner should use.
- *
- * @param selectors the list of selectors
- */
- public function setSelectors($selectors);
-
- /**
- * Directories which were selected out of a scan.
- *
- * @param selectors list selector objects
- */
- public function getDeselectedDirectories();
-
- /**
- * Files which were selected out of a scan.
- *
- * @param selectors list selector objects
- */
- public function getDeselectedFiles();
-
-}
diff --git a/buildscripts/phing/classes/phing/types/selectors/SelectorUtils.php b/buildscripts/phing/classes/phing/types/selectors/SelectorUtils.php
deleted file mode 100644
index 87247e97..00000000
--- a/buildscripts/phing/classes/phing/types/selectors/SelectorUtils.php
+++ /dev/null
@@ -1,440 +0,0 @@
-<?php
-
-/*
- * $Id: SelectorUtils.php,v 1.5 2005/05/26 13:10:53 mrook 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>.
- */
-
-include_once 'phing/util/StringHelper.php';
-
-/**
- * <p>This is a utility class used by selectors and DirectoryScanner. The
- * functionality more properly belongs just to selectors, but unfortunately
- * DirectoryScanner exposed these as protected methods. Thus we have to
- * support any subclasses of DirectoryScanner that may access these methods.
- * </p>
- * <p>This is a Singleton.</p>
- *
- * @author Hans Lellelid, hans@xmpl.org (Phing)
- * @author Arnout J. Kuiper, ajkuiper@wxs.nl (Ant)
- * @author Magesh Umasankar
- * @author Bruce Atherton, bruce@callenish.com (Ant)
- * @package phing.types.selectors
- */
-class SelectorUtils {
-
- private static $instance;
-
- /**
- * Retrieves the instance of the Singleton.
- */
- public function getInstance() {
- if (!isset(self::$instance)) {
- self::$instance = new SelectorUtils();
- }
- return self::$instance;
- }
-
- /**
- * Tests whether or not a given path matches the start of a given
- * pattern up to the first "**".
- * <p>
- * This is not a general purpose test and should only be used if you
- * can live with false positives. For example, <code>pattern=**\a</code>
- * and <code>str=b</code> will yield <code>true</code>.
- *
- * @param pattern The pattern to match against. Must not be
- * <code>null</code>.
- * @param str The path to match, as a String. Must not be
- * <code>null</code>.
- * @param isCaseSensitive Whether or not matching should be performed
- * case sensitively.
- *
- * @return whether or not a given path matches the start of a given
- * pattern up to the first "**".
- */
- public function matchPatternStart($pattern, $str, $isCaseSensitive = true) {
-
- // When str starts with a DIRECTORY_SEPARATOR, pattern has to start with a
- // DIRECTORY_SEPARATOR.
- // When pattern starts with a DIRECTORY_SEPARATOR, str has to start with a
- // DIRECTORY_SEPARATOR.
- if (StringHelper::startsWith(DIRECTORY_SEPARATOR, $str) !==
- StringHelper::startsWith(DIRECTORY_SEPARATOR, $pattern)) {
- return false;
- }
-
- $patDirs = explode(DIRECTORY_SEPARATOR, $pattern);
- $strDirs = explode(DIRECTORY_SEPARATOR, $str);
-
- $patIdxStart = 0;
- $patIdxEnd = count($patDirs)-1;
- $strIdxStart = 0;
- $strIdxEnd = count($strDirs)-1;
-
- // up to first '**'
- while ($patIdxStart <= $patIdxEnd && $strIdxStart <= $strIdxEnd) {
- $patDir = $patDirs[$patIdxStart];
- if ($patDir == "**") {
- break;
- }
- if (!self::match($patDir, $strDirs[$strIdxStart], $isCaseSensitive)) {
- return false;
- }
- $patIdxStart++;
- $strIdxStart++;
- }
-
- if ($strIdxStart > $strIdxEnd) {
- // String is exhausted
- return true;
- } elseif ($patIdxStart > $patIdxEnd) {
- // String not exhausted, but pattern is. Failure.
- return false;
- } else {
- // pattern now holds ** while string is not exhausted
- // this will generate false positives but we can live with that.
- return true;
- }
- }
-
- /**
- * Tests whether or not a given path matches a given pattern.
- *
- * @param pattern The pattern to match against. Must not be
- * <code>null</code>.
- * @param str The path to match, as a String. Must not be
- * <code>null</code>.
- * @param isCaseSensitive Whether or not matching should be performed
- * case sensitively.
- *
- * @return <code>true</code> if the pattern matches against the string,
- * or <code>false</code> otherwise.
- */
- public function matchPath($pattern, $str, $isCaseSensitive = true) {
-
- // When str starts with a DIRECTORY_SEPARATOR, pattern has to start with a
- // DIRECTORY_SEPARATOR.
- // When pattern starts with a DIRECTORY_SEPARATOR, str has to start with a
- // DIRECTORY_SEPARATOR.
- if (StringHelper::startsWith(DIRECTORY_SEPARATOR, $str) !==
- StringHelper::startsWith(DIRECTORY_SEPARATOR, $pattern)) {
- return false;
- }
-
- $patDirs = explode(DIRECTORY_SEPARATOR, $pattern);
- $strDirs = explode(DIRECTORY_SEPARATOR, $str);
-
- $patIdxStart = 0;
- $patIdxEnd = count($patDirs)-1;
- $strIdxStart = 0;
- $strIdxEnd = count($strDirs)-1;
-
- // up to first '**'
- while ($patIdxStart <= $patIdxEnd && $strIdxStart <= $strIdxEnd) {
- $patDir = $patDirs[$patIdxStart];
- if ($patDir == "**") {
- break;
- }
- if (!self::match($patDir, $strDirs[$strIdxStart], $isCaseSensitive)) {
- return false;
- }
- $patIdxStart++;
- $strIdxStart++;
- }
- if ($strIdxStart > $strIdxEnd) {
- // String is exhausted
- for ($i=$patIdxStart; $i <= $patIdxEnd; $i++) {
- if ($patDirs[$i] != "**") {
- return false;
- }
- }
- return true;
- } elseif ($patIdxStart > $patIdxEnd) {
- // String not exhausted, but pattern is. Failure.
- return false;
- }
-
- // up to last '**'
- while ($patIdxStart <= $patIdxEnd && $strIdxStart <= $strIdxEnd) {
- $patDir = $patDirs[$patIdxEnd];
- if ($patDir == "**") {
- break;
- }
- if (!self::match($patDir, $strDirs[$strIdxEnd], $isCaseSensitive)) {
- return false;
- }
- $patIdxEnd--;
- $strIdxEnd--;
- }
-
- if ($strIdxStart > $strIdxEnd) {
- // String is exhausted
- for ($i = $patIdxStart; $i <= $patIdxEnd; $i++) {
- if ($patDirs[$i] != "**") {
- return false;
- }
- }
- return true;
- }
-
- while ($patIdxStart != $patIdxEnd && $strIdxStart <= $strIdxEnd) {
- $patIdxTmp = -1;
- for ($i = $patIdxStart+1; $i <= $patIdxEnd; $i++) {
- if ($patDirs[$i] == "**") {
- $patIdxTmp = $i;
- break;
- }
- }
- if ($patIdxTmp == $patIdxStart+1) {
- // '**/**' situation, so skip one
- $patIdxStart++;
- continue;
- }
- // Find the pattern between padIdxStart & padIdxTmp in str between
- // strIdxStart & strIdxEnd
- $patLength = ($patIdxTmp-$patIdxStart-1);
- $strLength = ($strIdxEnd-$strIdxStart+1);
- $foundIdx = -1;
-
- //strLoop: (start of outer loop)
- for ($i=0; $i <= $strLength - $patLength; $i++) {
- for ($j = 0; $j < $patLength; $j++) {
- $subPat = $patDirs[$patIdxStart+$j+1];
- $subStr = $strDirs[$strIdxStart+$i+$j];
- if (!self::match($subPat, $subStr, $isCaseSensitive)) {
- continue 2; // continue up two levels (to strLoop:)
- }
- }
- $foundIdx = $strIdxStart+$i; // only reached if all sub patterns matched
- break;
- }
-
- if ($foundIdx == -1) {
- return false;
- }
-
- $patIdxStart = $patIdxTmp;
- $strIdxStart = $foundIdx + $patLength;
- }
-
- for ($i = $patIdxStart; $i <= $patIdxEnd; $i++) {
- if ($patDirs[$i] != "**") {
- return false;
- }
- }
-
- return true;
- }
-
- /**
- * Tests whether or not a string matches against a pattern.
- * The pattern may contain two special characters:<br>
- * '*' means zero or more characters<br>
- * '?' means one and only one character
- *
- * @param pattern The pattern to match against.
- * Must not be <code>null</code>.
- * @param str The string which must be matched against the pattern.
- * Must not be <code>null</code>.
- * @param isCaseSensitive Whether or not matching should be performed
- * case sensitively.
- *
- *
- * @return <code>true</code> if the string matches against the pattern,
- * or <code>false</code> otherwise.
- */
- public function match($pattern, $str, $isCaseSensitive = true) {
-
- $patArr = StringHelper::toCharArray($pattern);
- $strArr = StringHelper::toCharArray($str);
- $patIdxStart = 0;
- $patIdxEnd = count($patArr)-1;
- $strIdxStart = 0;
- $strIdxEnd = count($strArr)-1;
-
- $containsStar = false;
- for ($i = 0, $size=count($patArr); $i < $size; $i++) {
- if ($patArr[$i] == '*') {
- $containsStar = true;
- break;
- }
- }
-
- if (!$containsStar) {
- // No '*'s, so we make a shortcut
- if ($patIdxEnd != $strIdxEnd) {
- return false; // Pattern and string do not have the same size
- }
- for ($i = 0; $i <= $patIdxEnd; $i++) {
- $ch = $patArr[$i];
- if ($ch != '?') {
- if ($isCaseSensitive && $ch !== $strArr[$i]) {
- return false;// Character mismatch
- }
- if (!$isCaseSensitive && strtoupper($ch) !==
- strtoupper($strArr[$i])) {
- return false; // Character mismatch
- }
- }
- }
- return true; // String matches against pattern
- }
-
- if ($patIdxEnd == 0) {
- return true; // Pattern contains only '*', which matches anything
- }
-
- // Process characters before first star
- while(($ch = $patArr[$patIdxStart]) != '*' && $strIdxStart <= $strIdxEnd) {
- if ($ch != '?') {
- if ($isCaseSensitive && $ch !== $strArr[$strIdxStart]) {
- return false;// Character mismatch
- }
- if (!$isCaseSensitive && strtoupper($ch) !==
- strtoupper($strArr[$strIdxStart])) {
- return false;// Character mismatch
- }
- }
- $patIdxStart++;
- $strIdxStart++;
- }
-
- if ($strIdxStart > $strIdxEnd) {
- // All characters in the string are used. Check if only '*'s are
- // left in the pattern. If so, we succeeded. Otherwise failure.
- for ($i = $patIdxStart; $i <= $patIdxEnd; $i++) {
- if ($patArr[$i] != '*') {
- return false;
- }
- }
- return true;
- }
-
- // Process characters after last star
- while(($ch = $patArr[$patIdxEnd]) != '*' && $strIdxStart <= $strIdxEnd) {
- if ($ch != '?') {
- if ($isCaseSensitive && $ch !== $strArr[$strIdxEnd]) {
- return false;// Character mismatch
- }
- if (!$isCaseSensitive && strtoupper($ch) !==
- strtoupper($strArr[$strIdxEnd])) {
- return false;// Character mismatch
- }
- }
- $patIdxEnd--;
- $strIdxEnd--;
- }
- if ($strIdxStart > $strIdxEnd) {
- // All characters in the string are used. Check if only '*'s are
- // left in the pattern. If so, we succeeded. Otherwise failure.
- for ($i = $patIdxStart; $i <= $patIdxEnd; $i++) {
- if ($patArr[$i] != '*') {
- return false;
- }
- }
- return true;
- }
-
- // process pattern between stars. padIdxStart and patIdxEnd point
- // always to a '*'.
- while ($patIdxStart !== $patIdxEnd && $strIdxStart <= $strIdxEnd) {
- $patIdxTmp = -1;
- for ($i = $patIdxStart+1; $i <= $patIdxEnd; $i++) {
- if ($patArr[$i] == '*') {
- $patIdxTmp = $i;
- break;
- }
- }
- if ($patIdxTmp === $patIdxStart + 1) {
- // Two stars next to each other, skip the first one.
- $patIdxStart++;
- continue;
- }
- // Find the pattern between padIdxStart & padIdxTmp in str between
- // strIdxStart & strIdxEnd
- $patLength = ($patIdxTmp - $patIdxStart - 1);
- $strLength = ($strIdxEnd - $strIdxStart + 1);
- $foundIdx = -1;
-
- //strLoop:
- for ($i = 0; $i <= $strLength - $patLength; $i++) {
- for ($j = 0; $j < $patLength; $j++) {
- $ch = $patArr[$patIdxStart+$j+1];
- if ($ch != '?') {
- if ($isCaseSensitive && $ch !== $strArr[$strIdxStart+$i+$j]) {
- continue 2; //continue to strLoop:
- }
- if (!$isCaseSensitive && strtoupper($ch) !==
- strtoupper($strArr[$strIdxStart+$i+$j])) {
- continue 2; //continue to strLoop:
- }
- }
- }
- // only reached if sub loop completed w/o invoking continue 2
- $foundIdx = $strIdxStart + $i;
- break;
- }
-
- if ($foundIdx == -1) {
- return false;
- }
-
- $patIdxStart = $patIdxTmp;
- $strIdxStart = $foundIdx + $patLength;
- }
-
- // All characters in the string are used. Check if only '*'s are left
- // in the pattern. If so, we succeeded. Otherwise failure.
- for ($i = $patIdxStart; $i <= $patIdxEnd; $i++) {
- if ($patArr[$i] != '*') {
- return false;
- }
- }
- return true;
- }
-
- /**
- * Returns dependency information on these two files. If src has been
- * modified later than target, it returns true. If target doesn't exist,
- * it likewise returns true. Otherwise, target is newer than src and
- * is not out of date, thus the method returns false. It also returns
- * false if the src file doesn't even exist, since how could the
- * target then be out of date.
- *
- * @param PhingFile $src the original file
- * @param PhingFile $target the file being compared against
- * @param int $granularity the amount in seconds of slack we will give in
- * determining out of dateness
- * @return whether the target is out of date
- */
- public function isOutOfDate(PhingFile $src, PhingFile $target, $granularity) {
- if (!$src->exists()) {
- return false;
- }
- if (!$target->exists()) {
- return true;
- }
- if (($src->lastModified() - $granularity) > $target->lastModified()) {
- return true;
- }
- return false;
- }
-
-}
-
diff --git a/buildscripts/phing/classes/phing/types/selectors/SizeSelector.php b/buildscripts/phing/classes/phing/types/selectors/SizeSelector.php
deleted file mode 100644
index bbc26423..00000000
--- a/buildscripts/phing/classes/phing/types/selectors/SizeSelector.php
+++ /dev/null
@@ -1,228 +0,0 @@
-<?php
-
-/*
- * $Id: SizeSelector.php,v 1.8 2005/05/26 13:10:53 mrook 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>.
- */
-
-
-/**
- * Selector that filters files based on their size.
- *
- * @author Hans Lellelid <hans@xmpl.org> (Phing)
- * @author Bruce Atherton <bruce@callenish.com> (Ant)
- * @package phing.types.selectors
- */
-class SizeSelector extends BaseExtendSelector {
-
- private $size = -1;
- private $multiplier = 1;
- private $sizelimit = -1;
- private $cmp = 2;
- const SIZE_KEY = "value";
- const UNITS_KEY = "units";
- const WHEN_KEY = "when";
-
- private static $sizeComparisons = array("less", "more", "equal");
- private static $byteUnits = array("K", "k", "kilo", "KILO",
- "Ki", "KI", "ki", "kibi", "KIBI",
- "M", "m", "mega", "MEGA",
- "Mi", "MI", "mi", "mebi", "MEBI",
- "G", "g", "giga", "GIGA",
- "Gi", "GI", "gi", "gibi", "GIBI",
- "T", "t", "tera", "TERA",
- /* You wish! */ "Ti", "TI", "ti", "tebi", "TEBI"
- );
-
- public function toString() {
- $buf = "{sizeselector value: ";
- $buf .= $this->sizelimit;
- $buf .= "compare: ";
- if ($this->cmp === 0) {
- $buf .= "less";
- } elseif ($this->cmp === 1) {
- $buf .= "more";
- } else {
- $buf .= "equal";
- }
- $buf .= "}";
- return $buf;
- }
-
- /**
- * A size selector needs to know what size to base its selecting on.
- * This will be further modified by the multiplier to get an
- * actual size limit.
- *
- * @param size the size to select against expressed in units
- */
- public function setValue($size) {
- $this->size = $size;
- if (($this->multiplier !== 0) && ($this->size > -1)) {
- $this->sizelimit = $size * $this->multiplier;
- }
- }
-
- /**
- * Sets the units to use for the comparison. This is a little
- * complicated because common usage has created standards that
- * play havoc with capitalization rules. Thus, some people will
- * use "K" for indicating 1000's, when the SI standard calls for
- * "k". Others have tried to introduce "K" as a multiple of 1024,
- * but that falls down when you reach "M", since "m" is already
- * defined as 0.001.
- * <p>
- * To get around this complexity, a number of standards bodies
- * have proposed the 2^10 standard, and at least one has adopted
- * it. But we are still left with a populace that isn't clear on
- * how capitalization should work.
- * <p>
- * We therefore ignore capitalization as much as possible.
- * Completely mixed case is not possible, but all upper and lower
- * forms are accepted for all long and short forms. Since we have
- * no need to work with the 0.001 case, this practice works here.
- * <p>
- * This function translates all the long and short forms that a
- * unit prefix can occur in and translates them into a single
- * multiplier.
- *
- * @param $units The units to compare the size to.
- * @return void
- */
- public function setUnits($units) {
- $i = array_search($units, self::$byteUnits, true);
- if ($i === false) $i = -1; // make it java-like
-
- $this->multiplier = 0;
- if (($i > -1) && ($i < 4)) {
- $this->multiplier = 1000;
- } elseif (($i > 3) && ($i < 9)) {
- $this->multiplier = 1024;
- } elseif (($i > 8) && ($i < 13)) {
- $this->multiplier = 1000000;
- } elseif (($i > 12) && ($i < 18)) {
- $this->multiplier = 1048576;
- } elseif (($i > 17) && ($i < 22)) {
- $this->multiplier = 1000000000;
- } elseif (($i > 21) && ($i < 27)) {
- $this->multiplier = 1073741824;
- } elseif (($i > 26) && ($i < 31)) {
- $this->multiplier = 1000000000000;
- } elseif (($i > 30) && ($i < 36)) {
- $this->multiplier = 1099511627776;
- }
- if (($this->multiplier > 0) && ($this->size > -1)) {
- $this->sizelimit = $this->size * $this->multiplier;
- }
- }
-
- /**
- * This specifies when the file should be selected, whether it be
- * when the file matches a particular size, when it is smaller,
- * or whether it is larger.
- *
- * @param cmp The comparison to perform, an EnumeratedAttribute
- */
- public function setWhen($cmp) {
- $c = array_search($cmp, self::$sizeComparisons, true);
- if ($c !== false) {
- $this->cmp = $c;
- }
- }
-
- /**
- * When using this as a custom selector, this method will be called.
- * It translates each parameter into the appropriate setXXX() call.
- *
- * @param parameters the complete set of parameters for this selector
- */
- public function setParameters($parameters) {
- parent::setParameters($parameters);
- if ($parameters !== null) {
- for ($i = 0, $size=count($parameters); $i < $size; $i++) {
- $paramname = $parameters[$i]->getName();
- switch(strtolower($paramname)) {
- case self::SIZE_KEY:
- try {
- $this->setValue($parameters[$i]->getValue());
- } catch (Exception $nfe) {
- $this->setError("Invalid size setting "
- . $parameters[$i]->getValue());
- }
- break;
- case self::UNITS_KEY:
- $this->setUnits($parameters[$i]->getValue());
- break;
- case self::WHEN_KEY:
- $this->setWhen($parameters[$i]->getValue());
- break;
- default:
- $this->setError("Invalid parameter " . $paramname);
- }
- }
- }
- }
-
- /**
- * <p>Checks to make sure all settings are kosher. In this case, it
- * means that the size attribute has been set (to a positive value),
- * that the multiplier has a valid setting, and that the size limit
- * is valid. Since the latter is a calculated value, this can only
- * fail due to a programming error.
- * </p>
- * <p>If a problem is detected, the setError() method is called.
- * </p>
- */
- public function verifySettings() {
- if ($this->size < 0) {
- $this->setError("The value attribute is required, and must be positive");
- } elseif ($this->multiplier < 1) {
- $this->setError("Invalid Units supplied, must be K,Ki,M,Mi,G,Gi,T,or Ti");
- } elseif ($this->sizelimit < 0) {
- $this->setError("Internal error: Code is not setting sizelimit correctly");
- }
- }
-
- /**
- * The heart of the matter. This is where the selector gets to decide
- * on the inclusion of a file in a particular fileset.
- *
- * @param basedir A PhingFile object for the base directory
- * @param filename The name of the file to check
- * @param file A PhingFile object for this filename
- * @return whether the file should be selected or not
- */
- public function isSelected(PhingFile $basedir, $filename, PhingFile $file) {
-
- $this->validate();
-
- // Directory size never selected for
- if ($file->isDirectory()) {
- return true;
- }
- if ($this->cmp === 0) {
- return ($file->length() < $this->sizelimit);
- } elseif ($this->cmp === 1) {
- return ($file->length() > $this->sizelimit);
- } else {
- return ($file->length() === $this->sizelimit);
- }
- }
-
-}
-
diff --git a/buildscripts/phing/classes/phing/types/selectors/TypeSelector.php b/buildscripts/phing/classes/phing/types/selectors/TypeSelector.php
deleted file mode 100644
index f1532308..00000000
--- a/buildscripts/phing/classes/phing/types/selectors/TypeSelector.php
+++ /dev/null
@@ -1,113 +0,0 @@
-<?php
-
-/*
- * $Id: TypeSelector.php,v 1.3 2005/05/26 13:10:53 mrook 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>.
- */
-
-require_once 'phing/types/selectors/BaseExtendSelector.php';
-
-/**
- * Selector that selects a certain kind of file: directory or regular file.
- *
- * @author Hans Lellelid <hans@xmpl.org> (Phing)
- * @author Jeff Turner <jefft@apache.org> (Ant)
- * @version $Revision: 1.3 $
- * @package phing.types.selectors
- */
-class TypeSelector extends BaseExtendSelector {
-
- private $type;
-
- /** Key to used for parameterized custom selector */
- const TYPE_KEY = "type";
-
- /** Valid types */
- private static $types = array('file', 'dir');
-
- /**
- * @return string A string describing this object
- */
- public function toString() {
- $buf = "{typeselector type: " . $this->type . "}";
- return $buf;
- }
-
- /**
- * Set the type of file to require.
- * @param string $type The type of file - 'file' or 'dir'
- */
- public function setType($type) {
- $this->type = $type;
- }
-
- /**
- * When using this as a custom selector, this method will be called.
- * It translates each parameter into the appropriate setXXX() call.
- *
- * @param array $parameters the complete set of parameters for this selector
- */
- public function setParameters($parameters) {
- parent::setParameters($parameters);
- if ($parameters !== null) {
- for ($i = 0, $size=count($parameters); $i < $size; $i++) {
- $paramname = $parameters[$i]->getName();
- if (self::TYPE_KEY == strtolower($paramname)) {
- $this->setType($parameters[$i]->getValue());
- } else {
- $this->setError("Invalid parameter " . $paramname);
- }
- }
- }
- }
-
- /**
- * Checks to make sure all settings are kosher. In this case, it
- * means that the pattern attribute has been set.
- *
- */
- public function verifySettings() {
- if ($this->type === null) {
- $this->setError("The type attribute is required");
- } elseif (!in_array($this->type, self::$types, true)) {
- $this->setError("Invalid type specified; must be one of (" . implode(self::$types) . ")");
- }
- }
-
- /**
- * The heart of the matter. This is where the selector gets to decide
- * on the inclusion of a file in a particular fileset.
- *
- * @param PhingFile $basedir the base directory the scan is being done from
- * @param string $filename is the name of the file to check
- * @param PhingFile $file is a PhingFile object the selector can use
- * @return boolean Whether the file should be selected or not
- */
- public function isSelected(PhingFile $basedir, $filename, PhingFile $file) {
-
- // throw BuildException on error
- $this->validate();
-
- if ($file->isDirectory()) {
- return $this->type === 'dir';
- } else {
- return $this->type === 'file';
- }
- }
-
-}