modifs.mineures sans commentaires

This commit is contained in:
Jephté Clain 2025-03-19 08:37:17 +04:00
parent b9e91bd917
commit 62fc315b9e
4 changed files with 39 additions and 12 deletions

View File

@ -136,7 +136,7 @@ abstract class Wrapper implements ArrayAccess, IteratorAggregate {
/** retourner true si la valeur existe */
function isPresent($key=false): bool {
return $this->getResult()->present;
return $this->getResult($key)->present;
}
/** retourner le type associé à la valeur */
@ -146,17 +146,17 @@ abstract class Wrapper implements ArrayAccess, IteratorAggregate {
/** retourner true si la valeur est disponible */
function isAvailable($key=false): bool {
return $this->getResult()->available;
return $this->getResult($key)->available;
}
/** retourner true si la valeur est valide */
function isValid($key=false): bool {
return $this->getResult()->valid;
return $this->getResult($key)->valid;
}
/** retourner true si la valeur est dans sa forme normalisée */
function isNormalized($key=false): bool {
return $this->getResult()->normalized;
return $this->getResult($key)->normalized;
}

View File

@ -85,11 +85,11 @@ class AssocSchema extends Schema {
}
function getWrapper(&$value=null, $valueKey=null, ?array $params=null, ?Wrapper &$wrapper=null): AssocWrapper {
# si pas de valeur ni de wrapper, pas de vérification et donc pas d'exception
# cf le code similaire dans ScalarWrapper::__construct()
$dontNormalize = $value === null && $wrapper === null;
# si pas de valeur ni de wrapper, pas d'analyse et donc pas d'exception
# cf le code similaire dans AssocWrapper::__construct()
$dontAnalyze = $value === null && $wrapper === null;
if (!($wrapper instanceof AssocWrapper)) $wrapper = $this->newWrapper();
if ($params !== null) $wrapper->resetParams($params);
return $wrapper->reset($value, $valueKey, $dontNormalize? ["normalize" => false]: null);
return $wrapper->reset($value, $valueKey, $dontAnalyze? ["analyze" => false]: null);
}
}

View File

@ -89,9 +89,9 @@ class ScalarSchema extends Schema {
function getWrapper(&$value=null, $valueKey=null, ?array $params=null, ?Wrapper &$wrapper=null): ScalarWrapper {
# si pas de valeur ni de wrapper, pas de vérification et donc pas d'exception
# cf le code similaire dans ScalarWrapper::__construct()
$dontNormalize = $value === null && $wrapper === null;
$dontAnalyze = $value === null && $wrapper === null;
if (!($wrapper instanceof ScalarWrapper)) $wrapper = $this->newWrapper();
if ($params !== null) $wrapper->resetParams($params);
return $wrapper->reset($value, $valueKey, $dontNormalize? ["normalize" => false]: null);
return $wrapper->reset($value, $valueKey, $dontAnalyze? ["analyze" => false]: null);
}
}

View File

@ -98,8 +98,35 @@ class AssocSchemaTest extends TestCase {
],
]), $schema->getDefinition());
//yaml::dump($schema->getDefinition());
}
$wrapper = $schema->getWrapper();
$wrapper->getKeys();
function testWrapper() {
$schema = new AssocSchema([
"a" => "string",
"b" => "int",
"c" => "bool",
]);
$array = ["c" => false, "a" => " string "];
$schema->getWrapper($array);
self::assertSame([
"a" => "string",
"b" => null,
"c" => false,
], $array);
$array = ["c" => false, "a" => " string "];
$schema->getWrapper($array, null, ["ensure_order" => false]);
self::assertSame([
"c" => false,
"a" => "string",
"b" => null,
], $array);
$array = ["a" => " string "];
$schema->getWrapper($array, null, ["ensure_keys" => false]);
self::assertSame([
"a" => "string",
], $array);
}
}