commiting uncommited changes on live site
[weblabels.fsf.org.git] / crm.fsf.org / 20131203 / files / sites / all / modules-old / civicrm / vendor / symfony / finder / Symfony / Component / Finder / Iterator / PathFilterIterator.php
1 <?php
2
3 /*
4 * This file is part of the Symfony package.
5 *
6 * (c) Fabien Potencier <fabien@symfony.com>
7 *
8 * For the full copyright and license information, please view the LICENSE
9 * file that was distributed with this source code.
10 */
11
12 namespace Symfony\Component\Finder\Iterator;
13
14 /**
15 * PathFilterIterator filters files by path patterns (e.g. some/special/dir).
16 *
17 * @author Fabien Potencier <fabien@symfony.com>
18 * @author Włodzimierz Gajda <gajdaw@gajdaw.pl>
19 */
20 class PathFilterIterator extends MultiplePcreFilterIterator
21 {
22 /**
23 * Filters the iterator values.
24 *
25 * @return bool true if the value should be kept, false otherwise
26 */
27 public function accept()
28 {
29 $filename = $this->current()->getRelativePathname();
30
31 if ('\\' === DIRECTORY_SEPARATOR) {
32 $filename = str_replace('\\', '/', $filename);
33 }
34
35 // should at least not match one rule to exclude
36 foreach ($this->noMatchRegexps as $regex) {
37 if (preg_match($regex, $filename)) {
38 return false;
39 }
40 }
41
42 // should at least match one rule
43 $match = true;
44 if ($this->matchRegexps) {
45 $match = false;
46 foreach ($this->matchRegexps as $regex) {
47 if (preg_match($regex, $filename)) {
48 return true;
49 }
50 }
51 }
52
53 return $match;
54 }
55
56 /**
57 * Converts strings to regexp.
58 *
59 * PCRE patterns are left unchanged.
60 *
61 * Default conversion:
62 * 'lorem/ipsum/dolor' ==> 'lorem\/ipsum\/dolor/'
63 *
64 * Use only / as directory separator (on Windows also).
65 *
66 * @param string $str Pattern: regexp or dirname.
67 *
68 * @return string regexp corresponding to a given string or regexp
69 */
70 protected function toRegex($str)
71 {
72 return $this->isRegex($str) ? $str : '/'.preg_quote($str, '/').'/';
73 }
74 }