X-Git-Url: http://aleph1.co.uk/gitweb/?a=blobdiff_plain;ds=sidebyside;f=vendor%2Fbehat%2Fbehat%2Fsrc%2FBehat%2FBehat%2FContext%2FSnippet%2FGenerator%2FCachedContextIdentifier.php;fp=vendor%2Fbehat%2Fbehat%2Fsrc%2FBehat%2FBehat%2FContext%2FSnippet%2FGenerator%2FCachedContextIdentifier.php;h=6ff1bb662722f4c92f52c14183891ea3c16d1f61;hb=1270d9129ce8f27c9b28b10518e32132c58e0aca;hp=0000000000000000000000000000000000000000;hpb=c27c0f0cdaa3f354b1fe54a56ae7e854be6e3f68;p=yaffs-website diff --git a/vendor/behat/behat/src/Behat/Behat/Context/Snippet/Generator/CachedContextIdentifier.php b/vendor/behat/behat/src/Behat/Behat/Context/Snippet/Generator/CachedContextIdentifier.php new file mode 100644 index 000000000..6ff1bb662 --- /dev/null +++ b/vendor/behat/behat/src/Behat/Behat/Context/Snippet/Generator/CachedContextIdentifier.php @@ -0,0 +1,54 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Behat\Behat\Context\Snippet\Generator; + +use Behat\Behat\Context\Environment\ContextEnvironment; + +/** + * Decorates actual identifier and caches its answers per suite. + * + * @author Konstantin Kudryashov + */ +final class CachedContextIdentifier implements TargetContextIdentifier +{ + /** + * @var TargetContextIdentifier + */ + private $decoratedIdentifier; + /** + * @var array + */ + private $contextClasses = array(); + + /** + * Initialise the identifier. + * + * @param TargetContextIdentifier $identifier + */ + public function __construct(TargetContextIdentifier $identifier) + { + $this->decoratedIdentifier = $identifier; + } + + /** + * {@inheritdoc} + */ + public function guessTargetContextClass(ContextEnvironment $environment) + { + $suiteKey = $environment->getSuite()->getName(); + + if (array_key_exists($suiteKey, $this->contextClasses)) { + return $this->contextClasses[$suiteKey]; + } + + return $this->contextClasses[$suiteKey] = $this->decoratedIdentifier->guessTargetContextClass($environment); + } +}