From f55c66e1f34bb13513f848feb1d8a5ef9896c1cc Mon Sep 17 00:00:00 2001 From: Jephte Clain Date: Mon, 6 Oct 2025 08:59:29 +0400 Subject: [PATCH] support --no-arg --- php/src/app/args/Aodef.php | 5 ++++ php/tests/app/{cli => args}/AodefTest.php | 3 +-- php/tests/app/{cli => args}/AolistTest.php | 5 +--- .../app/{cli => args}/SimpleAolistTest.php | 2 +- .../{cli => args}/SimpleArgsParserTest.php | 26 ++++++++++++++++++- 5 files changed, 33 insertions(+), 8 deletions(-) rename php/tests/app/{cli => args}/AodefTest.php (98%) rename php/tests/app/{cli => args}/AolistTest.php (90%) rename php/tests/app/{cli => args}/SimpleAolistTest.php (98%) rename php/tests/app/{cli => args}/SimpleArgsParserTest.php (85%) diff --git a/php/src/app/args/Aodef.php b/php/src/app/args/Aodef.php index 89d9da2..4486eb8 100644 --- a/php/src/app/args/Aodef.php +++ b/php/src/app/args/Aodef.php @@ -436,6 +436,11 @@ class Aodef { $longest ??= self::get_longest($this->_options, self::TYPE_SHORT); if ($longest !== null) { $longest = preg_replace('/[^A-Za-z0-9]+/', "_", $longest); + # les options --no-name mettent à jour la valeur $name et inversent + # le traitement + if ($longest !== "no_" && str::del_prefix($longest, "no_")) { + $this->inverse ??= true; + } if (preg_match('/^[0-9]/', $longest)) { # le nom de la propriété ne doit pas commencer par un chiffre $longest = "p$longest"; diff --git a/php/tests/app/cli/AodefTest.php b/php/tests/app/args/AodefTest.php similarity index 98% rename from php/tests/app/cli/AodefTest.php rename to php/tests/app/args/AodefTest.php index c27d6c1..db6b6d1 100644 --- a/php/tests/app/cli/AodefTest.php +++ b/php/tests/app/args/AodefTest.php @@ -1,7 +1,6 @@ parse($dest, ["-aabb"]); + self::assertSame(["plouf" => 0, "args" => []], $dest); + + $parser = new SimpleArgsParser([ + ["-a", "--plouf", "value" => true], + ["-b", "--no-plouf", "value" => false], + ]); + $dest = ["plouf" => null]; + $parser->parse($dest, []); + self::assertSame(["plouf" => null, "args" => []], $dest); + $dest = ["plouf" => null]; + $parser->parse($dest, ["-a"]); + self::assertSame(["plouf" => true, "args" => []], $dest); + $dest = ["plouf" => null]; + $parser->parse($dest, ["-b"]); + self::assertSame(["plouf" => false, "args" => []], $dest); + } }