modifs.mineures sans commentaires
This commit is contained in:
parent
6037b3e7ca
commit
547e72e7e8
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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]);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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];
|
||||
|
|
|
@ -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
|
|
@ -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
|
|
@ -1,5 +1,5 @@
|
|||
<?php
|
||||
namespace nur\sery\schema;
|
||||
namespace nur\sery\schema\input;
|
||||
|
||||
/**
|
||||
* Class Input: accès à une valeur
|
|
@ -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
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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 */
|
||||
|
|
Loading…
Reference in New Issue