| Viewing file:  Expression.php (2.54 KB)      -rw-r--r-- Select action/file-type:
 
  (+) |  (+) |  (+) | Code (+) | Session (+) |  (+) | SDB (+) |  (+) |  (+) |  (+) |  (+) |  (+) | 
 
<?php
 /*
 * This file is part of the Symfony package.
 *
 * (c) Fabien Potencier <fabien@symfony.com>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */
 
 namespace Symfony\Component\Finder\Expression;
 
 /**
 * @author Jean-François Simon <contact@jfsimon.fr>
 */
 class Expression implements ValueInterface
 {
 const TYPE_REGEX = 1;
 const TYPE_GLOB  = 2;
 
 /**
 * @var ValueInterface
 */
 private $value;
 
 /**
 * @param string $expr
 *
 * @return Expression
 */
 public static function create($expr)
 {
 return new self($expr);
 }
 
 /**
 * @param string $expr
 */
 public function __construct($expr)
 {
 try {
 $this->value = Regex::create($expr);
 } catch (\InvalidArgumentException $e) {
 $this->value = new Glob($expr);
 }
 }
 
 /**
 * @return string
 */
 public function __toString()
 {
 return $this->render();
 }
 
 /**
 * {@inheritdoc}
 */
 public function render()
 {
 return $this->value->render();
 }
 
 /**
 * {@inheritdoc}
 */
 public function renderPattern()
 {
 return $this->value->renderPattern();
 }
 
 /**
 * @return bool
 */
 public function isCaseSensitive()
 {
 return $this->value->isCaseSensitive();
 }
 
 /**
 * @return int
 */
 public function getType()
 {
 return $this->value->getType();
 }
 
 /**
 * {@inheritdoc}
 */
 public function prepend($expr)
 {
 $this->value->prepend($expr);
 
 return $this;
 }
 
 /**
 * {@inheritdoc}
 */
 public function append($expr)
 {
 $this->value->append($expr);
 
 return $this;
 }
 
 /**
 * @return bool
 */
 public function isRegex()
 {
 return self::TYPE_REGEX === $this->value->getType();
 }
 
 /**
 * @return bool
 */
 public function isGlob()
 {
 return self::TYPE_GLOB === $this->value->getType();
 }
 
 /**
 * @throws \LogicException
 *
 * @return Glob
 */
 public function getGlob()
 {
 if (self::TYPE_GLOB !== $this->value->getType()) {
 throw new \LogicException('Regex can\'t be transformed to glob.');
 }
 
 return $this->value;
 }
 
 /**
 * @return Regex
 */
 public function getRegex()
 {
 return self::TYPE_REGEX === $this->value->getType() ? $this->value : $this->value->toRegex();
 }
 }
 
 |