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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user