modifs.mineures sans commentaires

This commit is contained in:
Jephté Clain 2023-11-09 10:34:36 +04:00
parent 6037b3e7ca
commit 547e72e7e8
11 changed files with 47 additions and 39 deletions

View File

@ -5,18 +5,12 @@ namespace nur\sery\output;
* Class Output: une destination pour écrire du contenu
*/
abstract class Output {
abstract function print($value): void;
/** afficher un tag, dont la fonction n'est pas d'être affiché à l'utilisateur, mais de structuer l'information affichée à l'utilisateur */
function printTag(?array $tag): void {
}
/** afficher un contenu destiné à être affiché à l'utilisateur */
function printContent(?array $content): void {
}
/** afficher le contenu spécifié */
abstract function print(?array $contents): void;
/** afficher une ligne de donnée au format CSV */
abstract function printCsv(?array $row): void;
/** afficher un objet */
abstract function printObject($object): void;
}

View File

@ -6,6 +6,6 @@ trait TOutputObjectAsCsv {
if ($object === null) return;
if (is_object($object)) $object = (array)$object;
if (is_array($object)) $this->printCsv($object);
else $this->printContent([$object]);
else $this->print([$object]);
}
}

View File

@ -1,16 +1,13 @@
<?php
namespace nur\sery\output;
use nulib\str;
class TtyOutput extends Output {
use TOutputObjectAsCsv;
function print($value): void {
echo $value;
}
function printTag(?array $tag): void {
# Ne pas écrire les tags
#XXX convertir certains tags en couleurs?
function print(?array $contents): void {
echo str::join("", $contents);
}
function printCsv(?array $row): void {

View File

@ -1,10 +1,12 @@
<?php
namespace nur\sery\output;
use nulib\str;
class WebOutput extends Output {
use TOutputObjectAsCsv;
function print($value): void {
echo $value;
function print($contents): void {
echo str::join("", $contents);
}
}

View File

@ -1,27 +1,37 @@
<?php
namespace nur\sery\schema;
use nur\sery\StateException;
use nur\sery\schema\input\Input;
use nur\sery\schema\values\AssocValue;
use nur\sery\schema\values\IValue;
use nur\sery\schema\values\ScalarValue;
use nur\sery\schema\values\SeqValue;
use nulib\StateException;
#XXX
# analyze() et [analyzer_func] --> indique ce qu'est la valeur qu'on vérifixe
# retourne MISSING (la valeur n'existe pas)
# NULL (la valeur existe mais est nulle)
# STRING (la valeur est une chaine qu'il faut parser)
# INVALID (la valeur n'est pas du bon type et il n'est pas possible de la convertir)
# VALID (la valeur est dans le bon type)
# extract() et [extractor_func] --> si analyze() retourne STRING, extraire la
# chaine à parser
# parse() et [parser_func] --> parser la chaine et retourner la valeur
# format() et [formatter_func] --> formatter la valeur et retourner une chaine
class Schema {
/**
* créer une nouvelle instance de cette classe à partir d'un schéma non
* créer une nouvelle instance de cette classe à partir d'un schéma
*
* @param bool $normalized indique si le schéma est normalisé
* normalisé
*/
static function new(&$md, $schema): self {
if ($md === null) $md = new static($schema);
static function new(&$md, $schema, bool $normalized=false): self {
if ($md === null) $md = new static($schema, !$normalized);
return $md;
}
/** obtenir une instance de cette classe à partir d'un schéma normalisé */
static function with(array $schema): self {
return new static($schema, false);
}
static function normalize($schema): array {
if ($schema === null) throw new SchemaException("schema is required");
elseif (!is_array($schema)) $schema = [$schema];

View File

@ -1,5 +1,7 @@
<?php
namespace nur\sery\schema;
namespace nur\sery\schema\input;
use nur\sery\schema\input\Input;
/**
* Class FormInput: accès à des paramètres de formulaire (POST ou GET, dans cet

View File

@ -1,5 +1,7 @@
<?php
namespace nur\sery\schema;
namespace nur\sery\schema\input;
use nur\sery\schema\input\Input;
/**
* Class GetInput: accès à des paramètres de formulaire de type GET uniquement

View File

@ -1,5 +1,5 @@
<?php
namespace nur\sery\schema;
namespace nur\sery\schema\input;
/**
* Class Input: accès à une valeur

View File

@ -1,5 +1,7 @@
<?php
namespace nur\sery\schema;
namespace nur\sery\schema\input;
use nur\sery\schema\input\Input;
/**
* Class PostInput: accès à des paramètres de formulaire de type POST uniquement

View File

@ -6,6 +6,9 @@ use nur\sery\schema\types\IType;
class ScalarValue implements IValue {
use TValue;
/** @var ?Result résultat de l'analyse de la valeur */
protected ?Result $result;
function __construct(&$value, array $schema, $key=null, bool $verifix=true) {
$this->schema = $schema;
$this->reset($value, $key, $verifix);
@ -37,9 +40,6 @@ class ScalarValue implements IValue {
return $this->type;
}
/** @var ?Result résultat de l'analyse de la valeur */
protected $result;
function exists(): bool {
return $this->type()->exists($this->value, $this->key);
}

View File

@ -5,14 +5,13 @@ use nur\sery\schema\Schema;
trait TValue {
/** @var array schéma normalisé de cette valeur */
protected $schema;
protected array $schema;
/** @var Schema */
protected $md;
protected Schema $md;
function md(): Schema {
if ($this->md === null) $this->md = Schema::with($this->schema);
return $this->md;
return Schema::new($this->md, $this->schema, true);
}
/** @var mixed valeur ou référence d'un tableau contenant la valeur */