forked from GNUsocial/gnu-social
		
	
		
			
	
	
		
			149 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
		
		
			
		
	
	
			149 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
|   | <?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; | ||
|  | 
 | ||
|  | @trigger_error('The '.__NAMESPACE__.'\Expression class is deprecated since Symfony 2.8 and will be removed in 3.0.', E_USER_DEPRECATED); | ||
|  | 
 | ||
|  | /** | ||
|  |  * @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 self | ||
|  |      */ | ||
|  |     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(); | ||
|  |     } | ||
|  | 
 | ||
|  |     /** | ||
|  |      * @return Glob | ||
|  |      * | ||
|  |      * @throws \LogicException | ||
|  |      */ | ||
|  |     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(); | ||
|  |     } | ||
|  | } |