geno/wp-content/plugins/mailpoet/vendor-prefixed/symfony/translation/Interval.php
2024-02-01 11:54:18 +00:00

52 lines
1.5 KiB
PHP

<?php
namespace MailPoetVendor\Symfony\Component\Translation;
if (!defined('ABSPATH')) exit;
@\trigger_error(\sprintf('The "%s" class is deprecated since Symfony 4.2, use IdentityTranslator instead.', Interval::class), \E_USER_DEPRECATED);
use MailPoetVendor\Symfony\Component\Translation\Exception\InvalidArgumentException;
class Interval
{
public static function test($number, $interval)
{
$interval = \trim($interval);
if (!\preg_match('/^' . self::getIntervalRegexp() . '$/x', $interval, $matches)) {
throw new InvalidArgumentException(\sprintf('"%s" is not a valid interval.', $interval));
}
if ($matches[1]) {
foreach (\explode(',', $matches[2]) as $n) {
if ($number == $n) {
return \true;
}
}
} else {
$leftNumber = self::convertNumber($matches['left']);
$rightNumber = self::convertNumber($matches['right']);
return ('[' === $matches['left_delimiter'] ? $number >= $leftNumber : $number > $leftNumber) && (']' === $matches['right_delimiter'] ? $number <= $rightNumber : $number < $rightNumber);
}
return \false;
}
public static function getIntervalRegexp()
{
return <<<EOF
({\\s*
(\\-?\\d+(\\.\\d+)?[\\s*,\\s*\\-?\\d+(\\.\\d+)?]*)
\\s*})
|
(?P<left_delimiter>[\\[\\]])
\\s*
(?P<left>-Inf|\\-?\\d+(\\.\\d+)?)
\\s*,\\s*
(?P<right>\\+?Inf|\\-?\\d+(\\.\\d+)?)
\\s*
(?P<right_delimiter>[\\[\\]])
EOF;
}
private static function convertNumber(string $number) : float
{
if ('-Inf' === $number) {
return \log(0);
} elseif ('+Inf' === $number || 'Inf' === $number) {
return -\log(0);
}
return (float) $number;
}
}