52 lines
1.5 KiB
PHP
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;
|
|
}
|
|
}
|