PluggableStepTokensReplacer::replaceTokens()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 10
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 10
rs 9.4285
cc 2
eloc 4
nc 2
nop 3
1
<?php
2
/**
3
 * @author Alexei Gorobet <[email protected]>
4
 */
5
namespace Behat\TokensExtension;
6
7
use Behat\Gherkin\Node\FeatureNode;
8
use Behat\Gherkin\Node\StepNode;
9
use Behat\Testwork\Environment\Environment;
10
11
/**
12
 * Pluggable tokens replacer service that executes replacement leveraging registered tagged services.
13
 */
14
final class PluggableStepTokensReplacer implements StepTokensReplacer
15
{
16
    /**
17
     * @var StepTokensReplacer[]
18
     */
19
    private $stepTokensReplacers = array();
20
21
    /**
22
     * Registers new step tokens replacer.
23
     *
24
     * @param StepTokensReplacer $stepTokensReplacer
25
     */
26
    public function registerStepTokensReplacers(StepTokensReplacer $stepTokensReplacer)
27
    {
28
        $this->stepTokensReplacers[] = $stepTokensReplacer;
29
    }
30
31
    /**
32
     * @inheritdoc
33
     */
34
    public function replaceTokens(Environment $env, FeatureNode $feature, StepNode $step)
35
    {
36
        // Process registered step tokens replacers.
37
        foreach ($this->stepTokensReplacers as $stepTokensReplacer) {
38
            // @todo: Make sure registered tokens replacer claims to support tokens replacement in passed step.
39
            $step = $stepTokensReplacer->replaceTokens($env, $feature, $step);
40
        }
41
42
        return $step;
43
    }
44
}
45