protected function getSinceUntilRegExp($sinceVersion, $untilVersion)
{
$sinceVersion = str_pad($sinceVersion, 3, '.0');
$untilVersion = str_pad($untilVersion, 3, '.0');
if (!($sinceVersion < $untilVersion)) {
throw new \LogicException('since must be lesser than until');
}
if ($sinceVersion[0] === $untilVersion[0]) {
return sprintf('(?:%d\\.[%d-%d])', $sinceVersion[0], $sinceVersion[2], $untilVersion[2]);
} elseif (abs($sinceVersion[0] - $untilVersion[0]) === 1) {
return sprintf('(?:%d\\.[%d-9])|(?:%d\\.[0-%d])', $sinceVersion[0], $sinceVersion[2], $untilVersion[0], $untilVersion[2]);
} else {
return sprintf('(?:%d\\.[%d-9])|(?:%d\\.[0-%d])|(?:[%d-%d]\\.\\d)', $sinceVersion[0], $sinceVersion[2], $untilVersion[0], $untilVersion[2], 9 < $sinceVersion[0] + 1 ? 9 : $sinceVersion[0] + 1, 0 > $untilVersion[0] - 1 ? 0 : $untilVersion[0] - 1);
}
}