Файл: vendor/ramsey/uuid/src/Math/BrickMathRoundingMode.php
Строк: 95
<?php
/**
* This file is part of the ramsey/uuid library
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*
* @copyright Copyright (c) Ben Ramsey <ben@benramsey.com>
* @license http://opensource.org/licenses/MIT MIT
*/
declare(strict_types=1);
namespace RamseyUuidMath;
use BrickMathRoundingMode as BrickMathRounding;
/**
* @internal Polyfill for BrickMathRoundingMode constant naming
* changes introduced in brick/math 0.15 (UPPER_SNAKE_CASE → PascalCase)
*/
final class BrickMathRoundingMode
{
/**
* Maps ramsey/uuid rounding mode constants to their PascalCase (>= 0.15)
* and UPPER_SNAKE_CASE (< 0.15) equivalents in brick/math
*/
private const ROUNDING_MODE_MAP = [
RoundingMode::UNNECESSARY => ['Unnecessary', 'UNNECESSARY'],
RoundingMode::UP => ['Up', 'UP'],
RoundingMode::DOWN => ['Down', 'DOWN'],
RoundingMode::CEILING => ['Ceiling', 'CEILING'],
RoundingMode::FLOOR => ['Floor', 'FLOOR'],
RoundingMode::HALF_UP => ['HalfUp', 'HALF_UP'],
RoundingMode::HALF_DOWN => ['HalfDown', 'HALF_DOWN'],
RoundingMode::HALF_CEILING => ['HalfCeiling', 'HALF_CEILING'],
RoundingMode::HALF_FLOOR => ['HalfFloor', 'HALF_FLOOR'],
RoundingMode::HALF_EVEN => ['HalfEven', 'HALF_EVEN'],
];
/**
* Resolves a ramsey/uuid rounding mode to the correct
* BrickMathRoundingMode value for the installed version.
*
* @return BrickMathRounding::*
*/
public static function resolve(int $roundingMode)
{
[$pascal, $snake] = self::ROUNDING_MODE_MAP[$roundingMode]
?? self::ROUNDING_MODE_MAP[RoundingMode::UNNECESSARY];
$class = BrickMathRounding::class;
/** @var BrickMathRounding::* */
return defined("$class::$pascal")
? constant("$class::$pascal")
: constant("$class::$snake");
}
}