Sin descripción

Interval.php 1.6KB

1234567891011121314151617
  1. <?php
  2. 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
  3. ({\\s*
  4. (\\-?\\d+(\\.\\d+)?[\\s*,\\s*\\-?\\d+(\\.\\d+)?]*)
  5. \\s*})
  6. |
  7. (?P<left_delimiter>[\\[\\]])
  8. \\s*
  9. (?P<left>-Inf|\\-?\\d+(\\.\\d+)?)
  10. \\s*,\\s*
  11. (?P<right>\\+?Inf|\\-?\\d+(\\.\\d+)?)
  12. \\s*
  13. (?P<right_delimiter>[\\[\\]])
  14. EOF;
  15. } private static function convertNumber(string $number) : float { if ('-Inf' === $number) { return \log(0); } elseif ('+Inf' === $number || 'Inf' === $number) { return -\log(0); } return (float) $number; } }