ttrss/vendor/open-telemetry/sdk/Common/Configuration/Parser/MapParser.php

46 lines
1.1 KiB
PHP
Raw Normal View History

2023-10-20 14:12:29 +00:00
<?php
declare(strict_types=1);
namespace OpenTelemetry\SDK\Common\Configuration\Parser;
use InvalidArgumentException;
class MapParser
{
private const VARIABLE_SEPARATOR = ',';
private const KEY_VALUE_SEPARATOR = '=';
public static function parse($value): array
{
if (is_array($value)) {
return $value;
}
$result = [];
if (null === $value || trim($value) === '') {
return $result;
}
foreach (explode(self::VARIABLE_SEPARATOR, $value) as $pair) {
self::validateKeyValuePair($pair);
[$key, $value] = explode(self::KEY_VALUE_SEPARATOR, $pair, 2);
$result[trim($key)] = trim($value);
}
return $result;
}
private static function validateKeyValuePair(string $pair)
{
if (strpos($pair, self::KEY_VALUE_SEPARATOR) === false) {
throw new InvalidArgumentException(sprintf(
'Key-Value pair "%s" does not contain separator "%s"',
$pair,
self::KEY_VALUE_SEPARATOR
));
}
}
}