modifs.mineures sans commentaires
This commit is contained in:
parent
94c268d81a
commit
417b2bc693
@ -183,9 +183,11 @@ class ArgDef {
|
|||||||
$parents = $this->parents;
|
$parents = $this->parents;
|
||||||
if ($parents === null) return;
|
if ($parents === null) return;
|
||||||
foreach ($parents as $parent) {
|
foreach ($parents as $parent) {
|
||||||
$argDef = $parent["arg"] ?? null;
|
$argDef = $parent[0] ?? null;
|
||||||
|
if (is_array($argDef)) $argDef = new self($argDef);
|
||||||
|
elseif (is_string($argDef)) $argDef = $argDefs->getArgDef($argDef);
|
||||||
|
else throw new ArgException("parent must be string or array");
|
||||||
if ($argDef === null) continue;
|
if ($argDef === null) continue;
|
||||||
$argDef = new self($argDef);
|
|
||||||
$this->options = $argDef->options;
|
$this->options = $argDef->options;
|
||||||
$this->removeOptions(varray::withn($parent["remove"] ?? null));
|
$this->removeOptions(varray::withn($parent["remove"] ?? null));
|
||||||
$this->addOptions(varray::withn($parent["add"] ?? null));
|
$this->addOptions(varray::withn($parent["add"] ?? null));
|
||||||
|
@ -63,6 +63,8 @@ abstract class ArgDefs {
|
|||||||
public ?bool $autohelp = null;
|
public ?bool $autohelp = null;
|
||||||
public ?bool $autoremains = null;
|
public ?bool $autoremains = null;
|
||||||
|
|
||||||
|
abstract function getArgDef(string $option): ?ArgDef;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* consommer les arguments de $src en avançant l'index $srci et provisionner
|
* consommer les arguments de $src en avançant l'index $srci et provisionner
|
||||||
* $dest à partir de $desti. si $desti est plus grand que 0, celà veut dire
|
* $dest à partir de $desti. si $desti est plus grand que 0, celà veut dire
|
||||||
|
@ -34,4 +34,24 @@ faire une implémentation SimpleArgsParser qui ne supporte pas les commandes, un
|
|||||||
|
|
||||||
puis faire une implémentation ArgsParser qui supporte les commandes, et les options dynamiques
|
puis faire une implémentation ArgsParser qui supporte les commandes, et les options dynamiques
|
||||||
|
|
||||||
|
## WIP
|
||||||
|
|
||||||
|
"parent" est remplacé par "defaults", "merges", "merge"
|
||||||
|
"add" et "remove" sont au niveau de la définition
|
||||||
|
|
||||||
|
ainsi, ["extends" => [PARENT, "add" => A, "remove" => R]]
|
||||||
|
devient ["merge" => PARENT, "add" => A, "remove" => R]
|
||||||
|
|
||||||
|
supporter aussi "merge" => $string
|
||||||
|
|
||||||
|
NB: dans ce cas, "add" est peut-être inutile?
|
||||||
|
|
||||||
|
documenter que dans les cas simples, on peut tout simplement refaire la définition, e.g
|
||||||
|
~~~php
|
||||||
|
[
|
||||||
|
["-x", "help" => "first"],
|
||||||
|
["-x", "help" => "second"],
|
||||||
|
]
|
||||||
|
~~~
|
||||||
|
|
||||||
-*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8:noeol:binary
|
-*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8:noeol:binary
|
@ -123,8 +123,7 @@ class ArgDefTest extends TestCase {
|
|||||||
$BASE = ["-o:", "--longo"];
|
$BASE = ["-o:", "--longo"];
|
||||||
|
|
||||||
$argDef = new ArgDef([
|
$argDef = new ArgDef([
|
||||||
"parent" => [
|
"parent" => [$BASE,
|
||||||
"arg" => $BASE,
|
|
||||||
"add" => ["-a", "--longa"],
|
"add" => ["-a", "--longa"],
|
||||||
"remove" => ["-o", "--longo"],
|
"remove" => ["-o", "--longo"],
|
||||||
],
|
],
|
||||||
@ -135,8 +134,7 @@ class ArgDefTest extends TestCase {
|
|||||||
false, 0, 0, "");
|
false, 0, 0, "");
|
||||||
|
|
||||||
$argDef = new ArgDef([
|
$argDef = new ArgDef([
|
||||||
"parent" => [
|
"parent" => [$BASE,
|
||||||
"arg" => $BASE,
|
|
||||||
"add" => ["-a", "--longa"],
|
"add" => ["-a", "--longa"],
|
||||||
"remove" => ["-o", "--longo"],
|
"remove" => ["-o", "--longo"],
|
||||||
],
|
],
|
||||||
|
Loading…
x
Reference in New Issue
Block a user