PluggableStepTokensReplacer   A
last analyzed

Complexity

Total Complexity 3

Size/Duplication

Total Lines 31
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 1

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 3
c 1
b 0
f 0
lcom 1
cbo 1
dl 0
loc 31
rs 10

2 Methods

Rating   Name   Duplication   Size   Complexity  
A registerStepTokensReplacers() 0 4 1
A replaceTokens() 0 10 2
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