commiting uncommited changes on live site
[weblabels.fsf.org.git] / crm.fsf.org / 20131203 / files / sites / all / modules-new / civicrm / vendor / symfony / finder / Symfony / Component / Finder / Iterator / FilenameFilterIterator.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 use Symfony\Component\Finder\Expression\Expression;
15
16 /**
17 * FilenameFilterIterator filters files by patterns (a regexp, a glob, or a string).
18 *
19 * @author Fabien Potencier <fabien@symfony.com>
20 */
21 class FilenameFilterIterator extends MultiplePcreFilterIterator
22 {
23 /**
24 * Filters the iterator values.
25 *
26 * @return bool true if the value should be kept, false otherwise
27 */
28 public function accept()
29 {
30 $filename = $this->current()->getFilename();
31
32 // should at least not match one rule to exclude
33 foreach ($this->noMatchRegexps as $regex) {
34 if (preg_match($regex, $filename)) {
35 return false;
36 }
37 }
38
39 // should at least match one rule
40 $match = true;
41 if ($this->matchRegexps) {
42 $match = false;
43 foreach ($this->matchRegexps as $regex) {
44 if (preg_match($regex, $filename)) {
45 return true;
46 }
47 }
48 }
49
50 return $match;
51 }
52
53 /**
54 * Converts glob to regexp.
55 *
56 * PCRE patterns are left unchanged.
57 * Glob strings are transformed with Glob::toRegex().
58 *
59 * @param string $str Pattern: glob or regexp
60 *
61 * @return string regexp corresponding to a given glob or regexp
62 */
63 protected function toRegex($str)
64 {
65 return Expression::create($str)->getRegex()->render();
66 }
67 }