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
|
* Class Output: une destination pour écrire du contenu
|
||||||
*/
|
*/
|
||||||
abstract class Output {
|
abstract class Output {
|
||||||
abstract function print($value): void;
|
/** afficher le contenu spécifié */
|
||||||
|
abstract function print(?array $contents): 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 une ligne de donnée au format CSV */
|
/** afficher une ligne de donnée au format CSV */
|
||||||
abstract function printCsv(?array $row): void;
|
abstract function printCsv(?array $row): void;
|
||||||
|
|
||||||
|
/** afficher un objet */
|
||||||
abstract function printObject($object): void;
|
abstract function printObject($object): void;
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,6 +6,6 @@ trait TOutputObjectAsCsv {
|
||||||
if ($object === null) return;
|
if ($object === null) return;
|
||||||
if (is_object($object)) $object = (array)$object;
|
if (is_object($object)) $object = (array)$object;
|
||||||
if (is_array($object)) $this->printCsv($object);
|
if (is_array($object)) $this->printCsv($object);
|
||||||
else $this->printContent([$object]);
|
else $this->print([$object]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,16 +1,13 @@
|
||||||
<?php
|
<?php
|
||||||
namespace nur\sery\output;
|
namespace nur\sery\output;
|
||||||
|
|
||||||
|
use nulib\str;
|
||||||
|
|
||||||
class TtyOutput extends Output {
|
class TtyOutput extends Output {
|
||||||
use TOutputObjectAsCsv;
|
use TOutputObjectAsCsv;
|
||||||
|
|
||||||
function print($value): void {
|
function print(?array $contents): void {
|
||||||
echo $value;
|
echo str::join("", $contents);
|
||||||
}
|
|
||||||
|
|
||||||
function printTag(?array $tag): void {
|
|
||||||
# Ne pas écrire les tags
|
|
||||||
#XXX convertir certains tags en couleurs?
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function printCsv(?array $row): void {
|
function printCsv(?array $row): void {
|
||||||
|
|
|
@ -1,10 +1,12 @@
|
||||||
<?php
|
<?php
|
||||||
namespace nur\sery\output;
|
namespace nur\sery\output;
|
||||||
|
|
||||||
|
use nulib\str;
|
||||||
|
|
||||||
class WebOutput extends Output {
|
class WebOutput extends Output {
|
||||||
use TOutputObjectAsCsv;
|
use TOutputObjectAsCsv;
|
||||||
|
|
||||||
function print($value): void {
|
function print($contents): void {
|
||||||
echo $value;
|
echo str::join("", $contents);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,27 +1,37 @@
|
||||||
<?php
|
<?php
|
||||||
namespace nur\sery\schema;
|
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\AssocValue;
|
||||||
use nur\sery\schema\values\IValue;
|
use nur\sery\schema\values\IValue;
|
||||||
use nur\sery\schema\values\ScalarValue;
|
use nur\sery\schema\values\ScalarValue;
|
||||||
use nur\sery\schema\values\SeqValue;
|
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 {
|
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é
|
* normalisé
|
||||||
*/
|
*/
|
||||||
static function new(&$md, $schema): self {
|
static function new(&$md, $schema, bool $normalized=false): self {
|
||||||
if ($md === null) $md = new static($schema);
|
if ($md === null) $md = new static($schema, !$normalized);
|
||||||
return $md;
|
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 {
|
static function normalize($schema): array {
|
||||||
if ($schema === null) throw new SchemaException("schema is required");
|
if ($schema === null) throw new SchemaException("schema is required");
|
||||||
elseif (!is_array($schema)) $schema = [$schema];
|
elseif (!is_array($schema)) $schema = [$schema];
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
<?php
|
<?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
|
* Class FormInput: accès à des paramètres de formulaire (POST ou GET, dans cet
|
|
@ -1,5 +1,7 @@
|
||||||
<?php
|
<?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
|
* Class GetInput: accès à des paramètres de formulaire de type GET uniquement
|
|
@ -1,5 +1,5 @@
|
||||||
<?php
|
<?php
|
||||||
namespace nur\sery\schema;
|
namespace nur\sery\schema\input;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class Input: accès à une valeur
|
* Class Input: accès à une valeur
|
|
@ -1,5 +1,7 @@
|
||||||
<?php
|
<?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
|
* 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 {
|
class ScalarValue implements IValue {
|
||||||
use TValue;
|
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) {
|
function __construct(&$value, array $schema, $key=null, bool $verifix=true) {
|
||||||
$this->schema = $schema;
|
$this->schema = $schema;
|
||||||
$this->reset($value, $key, $verifix);
|
$this->reset($value, $key, $verifix);
|
||||||
|
@ -37,9 +40,6 @@ class ScalarValue implements IValue {
|
||||||
return $this->type;
|
return $this->type;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** @var ?Result résultat de l'analyse de la valeur */
|
|
||||||
protected $result;
|
|
||||||
|
|
||||||
function exists(): bool {
|
function exists(): bool {
|
||||||
return $this->type()->exists($this->value, $this->key);
|
return $this->type()->exists($this->value, $this->key);
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,14 +5,13 @@ use nur\sery\schema\Schema;
|
||||||
|
|
||||||
trait TValue {
|
trait TValue {
|
||||||
/** @var array schéma normalisé de cette valeur */
|
/** @var array schéma normalisé de cette valeur */
|
||||||
protected $schema;
|
protected array $schema;
|
||||||
|
|
||||||
/** @var Schema */
|
/** @var Schema */
|
||||||
protected $md;
|
protected Schema $md;
|
||||||
|
|
||||||
function md(): Schema {
|
function md(): Schema {
|
||||||
if ($this->md === null) $this->md = Schema::with($this->schema);
|
return Schema::new($this->md, $this->schema, true);
|
||||||
return $this->md;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/** @var mixed valeur ou référence d'un tableau contenant la valeur */
|
/** @var mixed valeur ou référence d'un tableau contenant la valeur */
|
||||||
|
|
Loading…
Reference in New Issue