mirror of
https://github.com/shlinkio/shlink.git
synced 2025-02-17 15:59:56 +03:00
Removed class which is now part of the installer package
This commit is contained in:
parent
2059b4050b
commit
672321abab
2 changed files with 0 additions and 145 deletions
|
@ -1,65 +0,0 @@
|
||||||
<?php
|
|
||||||
declare(strict_types=1);
|
|
||||||
|
|
||||||
namespace Shlinkio\Shlink\Common\Collection;
|
|
||||||
|
|
||||||
use function array_key_exists;
|
|
||||||
use function array_shift;
|
|
||||||
use function is_array;
|
|
||||||
|
|
||||||
final class PathCollection
|
|
||||||
{
|
|
||||||
/** @var array */
|
|
||||||
private $array;
|
|
||||||
|
|
||||||
public function __construct(array $array)
|
|
||||||
{
|
|
||||||
$this->array = $array;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function pathExists(array $path): bool
|
|
||||||
{
|
|
||||||
return $this->checkPathExists($path, $this->array);
|
|
||||||
}
|
|
||||||
|
|
||||||
private function checkPathExists(array $path, array $array): bool
|
|
||||||
{
|
|
||||||
// As soon as a step is not found, the path does not exist
|
|
||||||
$step = array_shift($path);
|
|
||||||
if (! array_key_exists($step, $array)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Once the path is empty, we have found all the parts in the path
|
|
||||||
if (empty($path)) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// If current value is not an array, then we have not found the path
|
|
||||||
$newArray = $array[$step];
|
|
||||||
if (! is_array($newArray)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
return $this->checkPathExists($path, $newArray);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return mixed
|
|
||||||
*/
|
|
||||||
public function getValueInPath(array $path)
|
|
||||||
{
|
|
||||||
$array = $this->array;
|
|
||||||
|
|
||||||
do {
|
|
||||||
$step = array_shift($path);
|
|
||||||
if (! is_array($array) || ! array_key_exists($step, $array)) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
$array = $array[$step];
|
|
||||||
} while (! empty($path));
|
|
||||||
|
|
||||||
return $array;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,80 +0,0 @@
|
||||||
<?php
|
|
||||||
declare(strict_types=1);
|
|
||||||
|
|
||||||
namespace ShlinkioTest\Shlink\Common\Collection;
|
|
||||||
|
|
||||||
use PHPUnit\Framework\TestCase;
|
|
||||||
use Shlinkio\Shlink\Common\Collection\PathCollection;
|
|
||||||
|
|
||||||
class PathCollectionTest extends TestCase
|
|
||||||
{
|
|
||||||
/** @var PathCollection */
|
|
||||||
private $collection;
|
|
||||||
|
|
||||||
public function setUp()
|
|
||||||
{
|
|
||||||
$this->collection = new PathCollection([
|
|
||||||
'foo' => [
|
|
||||||
'bar' => [
|
|
||||||
'baz' => 'Hello world!',
|
|
||||||
],
|
|
||||||
],
|
|
||||||
'something' => [],
|
|
||||||
'another' => [
|
|
||||||
'one' => 'Shlink',
|
|
||||||
],
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @test
|
|
||||||
* @dataProvider providePaths
|
|
||||||
*/
|
|
||||||
public function pathExistsReturnsExpectedValue(array $path, bool $expected)
|
|
||||||
{
|
|
||||||
$this->assertEquals($expected, $this->collection->pathExists($path));
|
|
||||||
}
|
|
||||||
|
|
||||||
public function providePaths(): array
|
|
||||||
{
|
|
||||||
return [
|
|
||||||
[[], false],
|
|
||||||
[['boo'], false],
|
|
||||||
[['foo', 'nop'], false],
|
|
||||||
[['another', 'one', 'nop'], false],
|
|
||||||
[['foo'], true],
|
|
||||||
[['foo', 'bar'], true],
|
|
||||||
[['foo', 'bar', 'baz'], true],
|
|
||||||
[['something'], true],
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @test
|
|
||||||
* @dataProvider providePathsWithValue
|
|
||||||
*/
|
|
||||||
public function getValueInPathReturnsExpectedValue(array $path, $expected)
|
|
||||||
{
|
|
||||||
$this->assertEquals($expected, $this->collection->getValueInPath($path));
|
|
||||||
}
|
|
||||||
|
|
||||||
public function providePathsWithValue(): array
|
|
||||||
{
|
|
||||||
return [
|
|
||||||
[[], null],
|
|
||||||
[['boo'], null],
|
|
||||||
[['foo', 'nop'], null],
|
|
||||||
[['another', 'one', 'nop'], null],
|
|
||||||
[['foo'], [
|
|
||||||
'bar' => [
|
|
||||||
'baz' => 'Hello world!',
|
|
||||||
],
|
|
||||||
]],
|
|
||||||
[['foo', 'bar'], [
|
|
||||||
'baz' => 'Hello world!',
|
|
||||||
]],
|
|
||||||
[['foo', 'bar', 'baz'], 'Hello world!'],
|
|
||||||
[['something'], []],
|
|
||||||
];
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
Add table
Reference in a new issue