From 2e4fe05467c25e2aeb06c6dca9178d6b612c9a60 Mon Sep 17 00:00:00 2001 From: Jephte Clain Date: Wed, 22 Oct 2025 15:43:03 +0400 Subject: [PATCH] modifs.mineures sans commentaires --- src/php/time/Hour.php | 16 -- src/php/time/Time.php | 288 ------------------------------------ src/php/types/vdate.php | 29 ---- src/php/types/vdatetime.php | 29 ---- src/php/types/vmixed.php | 22 --- src/php/types/vraw.php | 22 --- src/php/types/vtime.php | 30 ---- tests/php/time/HourTest.php | 60 -------- tests/php/time/TimeTest.php | 74 --------- 9 files changed, 570 deletions(-) delete mode 100644 src/php/time/Hour.php delete mode 100644 src/php/time/Time.php delete mode 100644 src/php/types/vdate.php delete mode 100644 src/php/types/vdatetime.php delete mode 100644 src/php/types/vmixed.php delete mode 100644 src/php/types/vraw.php delete mode 100644 src/php/types/vtime.php delete mode 100644 tests/php/time/HourTest.php delete mode 100644 tests/php/time/TimeTest.php diff --git a/src/php/time/Hour.php b/src/php/time/Hour.php deleted file mode 100644 index 72be43e..0000000 --- a/src/php/time/Hour.php +++ /dev/null @@ -1,16 +0,0 @@ -getSeconds(); - } elseif (is_int($time)) { - return $time * $unit; - } elseif (is_string($time)) { - $matched = false; - foreach (self::PATTERNS as $pattern) { - if (preg_match($pattern, $time, $ms)) { - $matched = true; - break; - } - } - if ($matched) { - $h = $ms[1]; - $m = $ms[2] ?? 0; - $s = $ms[3] ?? 0; - return intval($h) * 3600 + intval($m) * 60 + intval($s); - } - } elseif ($time instanceof DateTimeInterface) { - $hms = $time->format('His'); - return intval(substr($hms, 0, 2)) * 3600 - + intval(substr($hms, 2, 2)) * 60 - + intval(substr($hms, 4, 2)); - } elseif (is_array($time) && count($time) == 3) { - [$h, $m, $s] = $time; - return $h * 3600 + $m * 60 + $s; - } - throw exceptions::invalid_value($time, "time"); - } - - protected static function s_adjust(int &$seconds, int $unit=self::UNIT_SECONDS, ?int $step=null): int { - if ($step !== null) $unit *= $step; - $adjust = $seconds % $unit; - if ($seconds < 0) $adjust = -$adjust; - $seconds -= $adjust; - return $seconds; - } - - protected static function s_wrap_start(int &$seconds): int { - while ($seconds < 0) $seconds += 86400; - if ($seconds >= 86400) $seconds %= 86400; - return $seconds; - } - - protected static function s_wrap_end(int &$seconds): int { - while ($seconds < 0) $seconds += 86400; - if ($seconds > 86400) $seconds %= 86400; - return $seconds; - } - - /** - * @var int la valeur de l'unité en secondes, pour le constructeur et les - * méthodes {@link setu()}, {@link addu()} et {@link subu()} - */ - const UNIT = self::UNIT_SECONDS; - - /** - * @var int|null un nombre d'unité dont l'heure doit être multiple. par - * exemple, si l'unité est la minute, une valeur 5 permet d'avoir des heures - * qui vont de 5 en 5 minutes (0h00, 0h05, 0h10, etc.) - */ - const STEP = null; - - /** @var bool s'il faut garder les heures dans la plage [0, 24h] */ - const WRAP = true; - - function __construct($time=null, ?array $params=null) { - $this->unit = vint::with($params["unit"] ?? static::UNIT); - $this->step = vint::withn($params["step"] ?? self::STEP); - $this->wrap = vbool::with($params["wrap"] ?? self::WRAP); - if ($time === null) $seconds = self::s_now(); - else $seconds = self::s_get($time, $this->unit); - $this->setSeconds($seconds); - } - - protected int $unit; - - protected ?int $step; - - protected bool $wrap; - - protected int $seconds; - - function getSeconds(): int { - return $this->seconds; - } - - /** - * mettre à jour cet objet avec le nombre de secondes spécifié - * - * le nombre effectif de secondes est calculé en tenant compte de l'unité - * actuelle - * - * @return int le nombre de seconde effectif, après correction - */ - protected function setSeconds(?int $seconds): int { - $this->seconds = $seconds ?? self::s_now(); - return $this->afterUpdate(); - } - - protected function afterUpdate(): int { - self::s_adjust($this->seconds, $this->unit, $this->step); - if ($this->wrap) $this->wrapEnd(); - return $this->seconds; - } - - /** - * wrapper l'heure pour la garder dans la plage [0h, 24h[ ce qui la rend - * propice à l'utilisation comme borne inférieure d'une période - */ - function wrapStart(): self { - self::s_wrap_start($this->seconds); - return $this; - } - - /** - * wrapper l'heure pour la garder dans la plage [0h, 24h] ce qui la rend - * propice à l'utilisation comme borne supérieure d'une période - */ - function wrapEnd(): self { - self::s_wrap_end($this->seconds); - return $this; - } - - /** formatter cette heure pour affichage */ - function format(?string $format=null): string { - if ($format === null) $format = static::FORMAT; - $v = $this->seconds; - $h = intdiv($v, 3600); $v = $v % 3600; - $m = intdiv($v, 60); - $s = $v % 60; - $searches = [ - "%H", "%h", - "%M", "%m", - "%S", "%s", - "%%", - ]; - $replaces = [ - sprintf("%02u", $h), strval($h), - sprintf("%02u", $m), strval($m), - sprintf("%02u", $s), strval($s), - "%", - ]; - return str_replace($searches, $replaces, $format); - } - - function __toString(): string { - return $this->format(); - } - - /** @return int le nombre d'unités */ - function getu(): int { - return intdiv($this->seconds, $this->unit); - } - - /** créer une nouvelle heure avec le nombre d'unités spécifiées */ - function setu(int $count): self { - $this->setSeconds($count * $this->unit); - return $this; - } - - /** créer une nouvelle heure en ajoutant à cette heure le nombre d'unités spécifiées */ - function addu(int $count=1): self { - $count *= $this->unit; - if ($this->step !== null) $count *= $this->step; - $this->setSeconds($this->seconds + $count); - return $this; - } - - /** créer une nouvelle heure en soustrayant à cette heure le nombre d'unités spécifiées */ - function subu(int $count=1): self { - $count *= $this->unit; - if ($this->step !== null) $count *= $this->step; - $this->setSeconds($this->seconds - $count); - return $this; - } - - /** forcer cette heure à l'heure spécifiée */ - function set($time): self { - if ($time === null) $seconds = self::s_now(); - else $seconds = self::with($time)->getSeconds(); - $this->setSeconds($seconds); - return $this; - } - - /** ajouter à cette heure l'heure spécifiée */ - function add($time): self { - if ($time !== null) { - $this->setSeconds($this->seconds + self::with($time)->getSeconds()); - } - return $this; - } - - /** soustraire à cette heure l'heure spécifiée */ - function sub($time): self { - if ($time !== null) { - $this->setSeconds($this->seconds - self::with($time)->getSeconds()); - } - return $this; - } - - /** - * comparer avec l'heure spécifiée. retourner une valeur négative, égale à - * zéro ou positive suivant le résultat de la comparaison - */ - function compare($time): int { - if ($time === null) return 1; - else return $this->seconds - self::with($time)->getSeconds(); - } - - /** - * tester si cette heure est avant ou égale à l'heure spécifiée - */ - function before($other): bool { - if ($other === null) return false; - else return $this->seconds <= self::with($other)->getSeconds(); - } - - /** - * tester si cette heure est après ou égale à l'heure spécifiée - */ - function after($other): bool { - if ($other === null) return true; - else return $this->seconds >= self::with($other)->getSeconds(); - } -} diff --git a/src/php/types/vdate.php b/src/php/types/vdate.php deleted file mode 100644 index 3f102f7..0000000 --- a/src/php/types/vdate.php +++ /dev/null @@ -1,29 +0,0 @@ - false, - ]))); - self::assertSame("7h11", strval(new Hour("30:70:80"))); - - self::assertException(ValueException::class, function() { - return strval(new Hour("bad format")); - }); - } - - function testFormat() { - self::assertSame("0h", (new Hour(0))->format()); - self::assertSame("0h56", (new Hour(56))->format()); - self::assertSame("2h", (new Hour(120))->format()); - self::assertSame("23h59", (new Hour(1439))->format()); - self::assertSame("24h", (new Hour(1440))->format()); - self::assertSame("0h01", (new Hour(1441))->format()); - } - - function testStep() { - $h = new Hour(null, [ - "step" => 5, - ]); - $h->setu(10); self::assertSame("0h10", strval($h)); - $h->setu(12); self::assertSame("0h10", strval($h)); - $h->setu(15); self::assertSame("0h15", strval($h)); - $h->setu(17); self::assertSame("0h15", strval($h)); - - $h->set("8h"); - $h->addu(); self::assertSame("8h05", strval($h)); - $h->addu(); self::assertSame("8h10", strval($h)); - $h->addu(); self::assertSame("8h15", strval($h)); - $h->subu(); self::assertSame("8h10", strval($h)); - $h->subu(); self::assertSame("8h05", strval($h)); - $h->subu(); self::assertSame("8h", strval($h)); - } -} diff --git a/tests/php/time/TimeTest.php b/tests/php/time/TimeTest.php deleted file mode 100644 index 998b0cb..0000000 --- a/tests/php/time/TimeTest.php +++ /dev/null @@ -1,74 +0,0 @@ - false, - ]))); - self::assertSame("07:11:20", strval(new Time("30:70:80"))); - - self::assertException(ValueException::class, function() { - return strval(new Time("bad format")); - }); - } - - function testGetu() { - self::assertSame(0, (new Time(0))->getu()); - self::assertSame(86399, (new Time(-1))->getu()); - self::assertSame(1, (new Time(1))->getu()); - self::assertSame(120, (new Time(120))->getu()); - self::assertSame(86400, (new Time(86400))->getu()); - self::assertSame(0, (new Time(-86400))->getu()); - } - - function testAddu() { - $t = new Time(0); - $t->addu(0); self::assertSame(0, $t->getu()); - $t->addu(10); self::assertSame(10, $t->getu()); - $t->addu(10); self::assertSame(20, $t->getu()); - $t->addu(100); self::assertSame(120, $t->getu()); - $t->addu(86280); self::assertSame(86400, $t->getu()); - $t->addu(86400); self::assertSame(0, $t->getu()); - $t->addu(-86400); self::assertSame(0, $t->getu()); - } - - function testSubu() { - $t = new Time(0); - $t->subu(-86400); self::assertSame(86400, $t->getu()); - $t->subu(86400); self::assertSame(0, $t->getu()); - - $t = new Time(120); - $t->subu(100); self::assertSame(20, $t->getu()); - $t->subu(10); self::assertSame(10, $t->getu()); - $t->subu(10); self::assertSame(0, $t->getu()); - $t->subu(0); self::assertSame(0, $t->getu()); - } - - function testFormat() { - self::assertSame("00:00:00", (new Time(0))->format()); - self::assertSame("00:00:56", (new Time(56))->format()); - self::assertSame("00:02:00", (new Time(120))->format()); - self::assertSame("23:59:59", (new Time(86399))->format()); - self::assertSame("24:00:00", (new Time(86400))->format()); - self::assertSame("00:00:01", (new Time(86401))->format()); - } -}