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); + } }