<?php namespace nur\b\io; /** * Interface IWriter: abstraction d'une destination dans laquelle on peut écrire * (fichier, flux, etc.) */ interface IWriter { ## gestion de l'indentation /** réinitialiser l'indentation */ function resetIndent(?int $indentLevel=0, ?string $indentString=null): void; /** augmenter le niveau d'indentation et retourner le niveau précédent */ function indent(): int; /** diminuer le niveau d'indentation */ function dedent(): void; ## écriture sur le flux /** si ce writer est basé sur une resource, la retourner, sinon null. */ function getResource(); /** vérifier si ce writer écrit sur un terminal */ function isatty(): bool; /** si ce writer est basé sur une resource, ajouter un filtre. */ function appendFilter(string $filterName, ?int $readWrite=null, $params=null): void; /** si ce writer est basé sur une resource, ajouter un filtre. */ function prependFilter(string $filterName, ?int $readWrite=null, $params=null): void; /** si ce writer est basé sur une resource, spécifier l'encoding. */ function setEncodingFilter(string $to, string $from="utf-8"): void; /** * obtenir la chaine qui serait affichée avec l'une des fonctions write() ou * print() */ function toString(string $sep, array $values, bool $updateIndent=true): string; /** * écrire une suite de valeurs collées les unes aux autres dans la destination */ function write(...$values): IWriter; /** * afficher une suite de valeurs collées les unes aux autres suivie d'un saut * à la ligne */ function wnl(...$values): IWriter; /** * écrire une suite de valeurs séparées par des espaces dans la destination. * les valeurs null et false sont ignorées (comme inexistantes) */ function print(...$values): IWriter; /** * afficher une suite de valeurs séparées par des espaces suivie d'un saut à * la ligne. les valeurs null et false sont ignorées (comme inexistantes) */ function pnl(...$values): IWriter; /** afficher les lignes */ function writeLines(iterable $lines): IWriter; /** fermer le fichier si c'est nécessaire */ function close(bool $close=true): void; }