| 1 |
<?php |
| 2 |
|
| 3 |
/** |
| 4 |
* This file is part of the ramsey/uuid library |
| 5 |
* |
| 6 |
* For the full copyright and license information, please view the LICENSE |
| 7 |
* file that was distributed with this source code. |
| 8 |
* |
| 9 |
* @copyright Copyright (c) Ben Ramsey <[email protected]> |
| 10 |
* @license http://opensource.org/licenses/MIT MIT |
| 11 |
*/ |
| 12 |
|
| 13 |
declare(strict_types=1); |
| 14 |
|
| 15 |
namespace WP_DEFENDER_VENDOR\Ramsey\Uuid\Math; |
| 16 |
|
| 17 |
use WP_DEFENDER_VENDOR\Brick\Math\RoundingMode as BrickMathRounding; |
| 18 |
|
| 19 |
/** |
| 20 |
* @internal Polyfill for WP_DEFENDER_VENDOR\Brick\Math\RoundingMode constant naming |
| 21 |
* changes introduced in brick/math 0.15 (UPPER_SNAKE_CASE → PascalCase) |
| 22 |
*/ |
| 23 |
final class BrickMathRoundingMode |
| 24 |
{ |
| 25 |
/** |
| 26 |
* Maps ramsey/uuid rounding mode constants to their PascalCase (>= 0.15) |
| 27 |
* and UPPER_SNAKE_CASE (< 0.15) equivalents in brick/math |
| 28 |
*/ |
| 29 |
private const ROUNDING_MODE_MAP = [ |
| 30 |
RoundingMode::UNNECESSARY => ['Unnecessary', 'UNNECESSARY'], |
| 31 |
RoundingMode::UP => ['Up', 'UP'], |
| 32 |
RoundingMode::DOWN => ['Down', 'DOWN'], |
| 33 |
RoundingMode::CEILING => ['Ceiling', 'CEILING'], |
| 34 |
RoundingMode::FLOOR => ['Floor', 'FLOOR'], |
| 35 |
RoundingMode::HALF_UP => ['HalfUp', 'HALF_UP'], |
| 36 |
RoundingMode::HALF_DOWN => ['HalfDown', 'HALF_DOWN'], |
| 37 |
RoundingMode::HALF_CEILING => ['HalfCeiling', 'HALF_CEILING'], |
| 38 |
RoundingMode::HALF_FLOOR => ['HalfFloor', 'HALF_FLOOR'], |
| 39 |
RoundingMode::HALF_EVEN => ['HalfEven', 'HALF_EVEN'], |
| 40 |
]; |
| 41 |
|
| 42 |
/** |
| 43 |
* Resolves a ramsey/uuid rounding mode to the correct |
| 44 |
* WP_DEFENDER_VENDOR\Brick\Math\RoundingMode value for the installed version. |
| 45 |
* |
| 46 |
* @return BrickMathRounding::* |
| 47 |
*/ |
| 48 |
public static function resolve(int $roundingMode) |
| 49 |
{ |
| 50 |
[$pascal, $snake] = self::ROUNDING_MODE_MAP[$roundingMode] |
| 51 |
?? self::ROUNDING_MODE_MAP[RoundingMode::UNNECESSARY]; |
| 52 |
|
| 53 |
$class = BrickMathRounding::class; |
| 54 |
|
| 55 |
/** @var BrickMathRounding::* */ |
| 56 |
return defined("$class::$pascal") |
| 57 |
? constant("$class::$pascal") |
| 58 |
: constant("$class::$snake"); |
| 59 |
} |
| 60 |
} |
| 61 |
|