Skip to content

Commit 1211b14

Browse files
committed
Add RemapNumericParameterIndexes
1 parent 24405df commit 1211b14

File tree

2 files changed

+40
-0
lines changed

2 files changed

+40
-0
lines changed

src/ParameterStrategy.php

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,30 @@ public function convertParameterArray(array $parameters): array
156156
return $parameters;
157157
}
158158

159+
/**
160+
* @param array $parameters
161+
* @return array
162+
*/
163+
public function remapNumericParameterIndexes(array $parameters): array
164+
{
165+
$index = 0;
166+
$remapTo = $this->keys();
167+
$remappedParameters = [];
168+
169+
foreach ($parameters as $key => $value) {
170+
$newIndex = $key;
171+
172+
if (is_numeric($key)) {
173+
$newIndex = $remapTo[$index];
174+
}
175+
176+
$remappedParameters[$newIndex] = $value;
177+
$index++;
178+
}
179+
180+
return $remappedParameters;
181+
}
182+
159183
/**
160184
* @return bool
161185
*/

tests/ParameterStrategyTest.php

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,22 @@ public function testValidateParameter()
6666
$this->assertFalse($parameterStrategy->validateParameter('test', 'ing'));
6767
}
6868

69+
public function testRemapNumericParameterIndexes()
70+
{
71+
$parameterStrategy = new ParameterStrategy(1, 1, [
72+
'test' => new \WildPHP\Commands\Parameters\NumericParameter(),
73+
'ing' => new \WildPHP\Commands\Parameters\NumericParameter()
74+
]);
75+
76+
$parameters = [1, 2];
77+
$expected = ['test' => 1, 'ing' => 2];
78+
$this->assertEquals($expected, $parameterStrategy->remapNumericParameterIndexes($parameters));
79+
80+
$parameters = [1, 'foo' => 2];
81+
$expected = ['test' => 1, 'foo' => 2];
82+
$this->assertEquals($expected, $parameterStrategy->remapNumericParameterIndexes($parameters));
83+
}
84+
6985
public function testConvertParameter()
7086
{
7187
$parameterStrategy = new \WildPHP\Commands\ParameterStrategy(1, 4, [

0 commit comments

Comments
 (0)