|
Server : Apache/2.4.62 System : FreeBSD fbsdweb2.web.rcn.net 14.1-RELEASE FreeBSD 14.1-RELEASE releng/14.1-n267679-10e31f0946d8 GENERIC amd64 User : www ( 80) PHP Version : 8.3.8 Disable Function : NONE Directory : /domains/irtiweb/CATS/vendor/behat/behat/src/Behat/Behat/Definition/Pattern/ |
Upload File : |
<?php
/*
* This file is part of the Behat.
* (c) Konstantin Kudryashov <[email protected]>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Behat\Behat\Definition\Pattern;
use Behat\Behat\Definition\Exception\UnknownPatternException;
use Behat\Behat\Definition\Exception\UnsupportedPatternTypeException;
use Behat\Behat\Definition\Pattern\Policy\PatternPolicy;
/**
* Transforms patterns using registered policies.
*
* @author Konstantin Kudryashov <[email protected]>
*/
final class PatternTransformer
{
/**
* @var PatternPolicy[]
*/
private $policies = array();
/**
* Registers pattern policy.
*
* @param PatternPolicy $policy
*/
public function registerPatternPolicy(PatternPolicy $policy)
{
$this->policies[] = $policy;
}
/**
* Generates pattern.
*
* @param string $type
* @param string $stepText
*
* @return Pattern
*
* @throws UnsupportedPatternTypeException
*/
public function generatePattern($type, $stepText)
{
foreach ($this->policies as $policy) {
if ($policy->supportsPatternType($type)) {
return $policy->generatePattern($stepText);
}
}
throw new UnsupportedPatternTypeException(sprintf('Can not find policy for a pattern type `%s`.', $type), $type);
}
/**
* Transforms pattern string to regex.
*
* @param string $pattern
*
* @return string
*
* @throws UnknownPatternException
*/
public function transformPatternToRegex($pattern)
{
foreach ($this->policies as $policy) {
if ($policy->supportsPattern($pattern)) {
return $policy->transformPatternToRegex($pattern);
}
}
throw new UnknownPatternException(sprintf('Can not find policy for a pattern `%s`.', $pattern), $pattern);
}
}