modifs.mineures sans commentaires

This commit is contained in:
Jephté Clain 2024-04-25 17:46:14 +04:00
parent b6d20261e2
commit 7be840f2cc
30 changed files with 86 additions and 65 deletions

42
bbnurse
View File

@ -1,7 +1,7 @@
#!/bin/bash #!/bin/bash
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8 # -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
#source /etc/nulib.sh || exit 1 source /etc/nulib.sh || exit 1
source "$(dirname -- "$0")/vendor/nulib/php/load.sh" || exit 1 #source "$(dirname -- "$0")/vendor/nulib/php/load.sh" || exit 1
function copy_nurse() { function copy_nurse() {
: :
@ -20,9 +20,16 @@ function copy_mature() {
setx src=abspath "$src" setx src=abspath "$src"
[ "${src#$MYDIR/src/}" != "$src" ] || die "la source doit être dans nur-sery/src/" [ "${src#$MYDIR/src/}" != "$src" ] || die "la source doit être dans nur-sery/src/"
src="${src#$MYDIR/src/}" src="${src#$MYDIR/src/}"
if [[ "$src" == */* ]]; then
path="${src%/*}" path="${src%/*}"
filename="${src##*/}" filename="${src##*/}"
else
path=
filename="$src"
fi
class="${filename%.php}" class="${filename%.php}"
srcdir="$MYDIR/src"
src="$srcdir/$src"
elif [ -d "$src" ]; then elif [ -d "$src" ]; then
# répertoire de package # répertoire de package
setx src=abspath "$src" setx src=abspath "$src"
@ -48,14 +55,13 @@ function copy_mature() {
destpackage='nulib' destpackage='nulib'
fi fi
local dest="${1:-.}"; shift setx Dest=abspath "$Dest"
setx dest=abspath "$dest" if [[ "$Dest" == */nulib ]]; then
if [[ "$dest" == */nulib ]]; then
libname=nulib libname=nulib
libdir="$dest" libdir="$Dest"
elif [[ "$dest" == */nulib/* ]]; then elif [[ "$Dest" == */nulib/* ]]; then
libname=nulib libname=nulib
libdir="${dest%%/nulib/*}/nulib" libdir="${Dest%%/nulib/*}/nulib"
else else
die "seul la maturation vers nulib est supporté" die "seul la maturation vers nulib est supporté"
fi fi
@ -75,7 +81,12 @@ function copy_mature() {
if [ -n "$class" ]; then if [ -n "$class" ]; then
# Maturation d'un seul fichier # Maturation d'un seul fichier
die "TODO" etitle "Maturation de $srcpackage vers $destpackage"
srcname="${src#$srcdir/}"
dest="$destdir/$srcname"
estep "$srcname"
mkdirof "$dest"
sed "s|${nurserypackage//\\/\\\\}|${nulibpackage//\\/\\\\}|g" <"$src" >"$dest"
else else
# Maturation de toute un package # Maturation de toute un package
etitle "Maturation de $srcpackage vers $destpackage" etitle "Maturation de $srcpackage vers $destpackage"
@ -84,7 +95,7 @@ function copy_mature() {
for src in "${srcs[@]}"; do for src in "${srcs[@]}"; do
srcname="${src#$srcdir/}" srcname="${src#$srcdir/}"
dest="$destdir/$srcname" dest="$destdir/$srcname"
estep "${src#$srcdir/}" estep "$srcname"
mkdirof "$dest" mkdirof "$dest"
sed "s|${nurserypackage//\\/\\\\}|${nulibpackage//\\/\\\\}|g" <"$src" >"$dest" sed "s|${nurserypackage//\\/\\\\}|${nulibpackage//\\/\\\\}|g" <"$src" >"$dest"
done done
@ -113,14 +124,17 @@ function update_mature() {
: :
} }
action=update action=copy
evolution=mature evolution=mature
Dest=
args=( args=(
"Gérer la maturation d'une classe ou d'un package" "Gérer la maturation d'une classe ou d'un package"
" "
-cm SRC [-d DEST]
-cn SRC -cn SRC
-cm SRC [DEST] -u[n|m] package|Class [-d DEST]
-u[n|m] package|Class [DEST]
IMPORTANT: pour l'instant, seule la copie à maturation (-cm) est implémentée
Il y a deux types d'évolutions possibles: Il y a deux types d'évolutions possibles:
* mettre en nurserie (-n) * mettre en nurserie (-n)
@ -142,6 +156,7 @@ Pour chaque type d'évolution, il y a deux actions possibles:
la version mature à maturation la version mature à maturation
L'argument est un 'package' ou un 'sous\\package' (dont le nom commence par L'argument est un 'package' ou un 'sous\\package' (dont le nom commence par
une minuscule) ou une 'Classe' (dont le nom commence par une majuscule)" une minuscule) ou une 'Classe' (dont le nom commence par une majuscule)"
-d:,--dest Dest= "Spécifier la destination"
-c,--copy action=copy "Copier de/vers un projet nulib-*" -c,--copy action=copy "Copier de/vers un projet nulib-*"
-u,--update action=update "Mettre à jour un projet. C'est l'option par défaut" -u,--update action=update "Mettre à jour un projet. C'est l'option par défaut"
-i,-n,--nurse evolution=nurse "Mettre en nurserie" -i,-n,--nurse evolution=nurse "Mettre en nurserie"
@ -149,4 +164,5 @@ Pour chaque type d'évolution, il y a deux actions possibles:
) )
parse_args "$@"; set -- "${args[@]}" parse_args "$@"; set -- "${args[@]}"
[ -n "$Dest" ] || Dest=.
"${action}_${evolution}" "$@" "${action}_${evolution}" "$@"

View File

@ -1,6 +1,7 @@
<?php <?php
namespace nur\b\io; namespace nur\b\io;
use nur\sery\file\base\FileReader;
use nur\v\http; use nur\v\http;
/** /**

View File

@ -3,6 +3,7 @@ namespace nur\ref;
use nur\data\types\Metadata; use nur\data\types\Metadata;
use nur\md; use nur\md;
use nur\sery\os\file\file;
/** /**
* Class ref_type: référence des types utilisables dans les schémas * Class ref_type: référence des types utilisables dans les schémas
@ -104,7 +105,7 @@ class ref_type {
/** comme {@link CONTENT} mais nullable */ /** comme {@link CONTENT} mais nullable */
const NCONTENT = "?".self::CONTENT; const NCONTENT = "?".self::CONTENT;
/** comme {@link FILE} mais nullable */ /** comme {@link \nur\sery\FILE} mais nullable */
const NFILE = "?".self::FILE; const NFILE = "?".self::FILE;
/** comme {@link DATETIME} mais nullable */ /** comme {@link DATETIME} mais nullable */

View File

@ -79,6 +79,15 @@ class cv {
############################################################################# #############################################################################
/** échanger les deux valeurs */
static final function swap(&$a, &$b): void {
$tmp = $a;
$a = $b;
$b = $tmp;
}
#############################################################################
/** mettre à jour $dest avec $value si $cond($value) est vrai */ /** mettre à jour $dest avec $value si $cond($value) est vrai */
static final function set_if(&$dest, $value, callable $cond) { static final function set_if(&$dest, $value, callable $cond) {
if ($cond($value)) $dest = $value; if ($cond($value)) $dest = $value;

View File

@ -1,12 +1,12 @@
<?php <?php
namespace nur\sery\os; namespace nur\sery;
use nur\sery\os\file\FileReader; use nur\sery\file\base\FileReader;
use nur\sery\os\file\FileWriter; use nur\sery\file\base\FileWriter;
use nur\sery\os\file\MemoryStream; use nur\sery\file\base\MemoryStream;
use nur\sery\os\file\SharedFile; use nur\sery\file\base\SharedFile;
use nur\sery\os\file\TempStream; use nur\sery\file\base\TempStream;
use nur\sery\os\file\TmpfileWriter; use nur\sery\file\base\TmpfileWriter;
/** /**
* Class file: outils pour gérer les fichiers * Class file: outils pour gérer les fichiers

View File

@ -1,5 +1,5 @@
<?php <?php
namespace nur\sery\os\file; namespace nur\sery\file;
use nur\sery\os\EOFException; use nur\sery\os\EOFException;
use nur\sery\os\IOException; use nur\sery\os\IOException;

View File

@ -1,5 +1,5 @@
<?php <?php
namespace nur\sery\os\file; namespace nur\sery\file;
use nur\sery\os\IOException; use nur\sery\os\IOException;

View File

@ -1,5 +1,5 @@
<?php <?php
namespace nur\sery\os\file; namespace nur\sery\file;
use Iterator; use Iterator;
use nur\sery\os\IOException; use nur\sery\os\IOException;

View File

@ -1,7 +1,5 @@
<?php <?php
namespace nur\sery\os\file; namespace nur\sery\file\base;
use nur\sery\os\IOException;
/** /**
* Class FileReader: un fichier accédé en lecture * Class FileReader: un fichier accédé en lecture

View File

@ -1,9 +1,8 @@
<?php <?php
namespace nur\sery\os\file; namespace nur\sery\file\base;
use nur\sery\os\IOException; use nur\sery\os\IOException;
use nur\sery\os\sh; use nur\sery\os\sh;
use nur\sery\web\http;
/** /**
* Class FileWriter: un fichier accédé en lecture/écriture * Class FileWriter: un fichier accédé en lecture/écriture

View File

@ -1,7 +1,5 @@
<?php <?php
namespace nur\sery\os\file; namespace nur\sery\file\base;
use nur\sery\os\IOException;
/** /**
* Class MemoryStream: un flux qui peut être lu ou écrit, et qui reste * Class MemoryStream: un flux qui peut être lu ou écrit, et qui reste

View File

@ -1,5 +1,5 @@
<?php <?php
namespace nur\sery\os\file; namespace nur\sery\file\base;
use nur\sery\ValueException; use nur\sery\ValueException;

View File

@ -1,8 +1,10 @@
<?php <?php
namespace nur\sery\os\file; namespace nur\sery\file\base;
use nur\sery\file\csv\csv_flavours;
use nur\sery\file\IReader;
use nur\sery\file\IWriter;
use nur\sery\NoMoreDataException; use nur\sery\NoMoreDataException;
use nur\sery\os\csv\csv_flavours;
use nur\sery\os\EOFException; use nur\sery\os\EOFException;
use nur\sery\os\IOException; use nur\sery\os\IOException;
use nur\sery\php\iter\AbstractIterator; use nur\sery\php\iter\AbstractIterator;

View File

@ -1,18 +1,19 @@
<?php <?php
namespace nur\sery\os\file; namespace nur\sery\file\base;
use nur\A; use nur\sery\file\_IFile;
use nur\b\io\IOException; use nur\sery\os\IOException;
trait TStreamFilter { trait TStreamFilter {
private $filters = null; private $filters = null;
function appendFilter(string $filterName, ?int $readWrite=null, $params=null): void { function appendFilter(string $filterName, ?int $readWrite=null, $params=null): void {
A::append($this->filters, [$filterName, $readWrite, $params]); $this->filters[] = [$filterName, $readWrite, $params];
} }
function prependFilter(string $filterName, ?int $readWrite=null, $params=null): void { function prependFilter(string $filterName, ?int $readWrite=null, $params=null): void {
A::prepend($this->filters, [$filterName, $readWrite, $params]); if ($this->filters === null) $this->filters = [];
array_unshift($this->filters, [$filterName, $readWrite, $params]);
} }
function setEncodingFilter(string $from, string $to): void { function setEncodingFilter(string $from, string $to): void {

View File

@ -1,5 +1,5 @@
<?php <?php
namespace nur\sery\os\file; namespace nur\sery\file\base;
/** /**
* Class TempStream: un flux qui peut être lu ou écrit, et qui reste en mémoire, * Class TempStream: un flux qui peut être lu ou écrit, et qui reste en mémoire,

View File

@ -1,9 +1,8 @@
<?php <?php
namespace nur\sery\os\file; namespace nur\sery\file\base;
use nur\sery\os\IOException; use nur\sery\os\IOException;
use nur\sery\os\path; use nur\sery\os\path;
use nur\sery\web\http;
/** /**
* Class TmpfileWriter: un fichier temporaire accédé en lecture/écriture * Class TmpfileWriter: un fichier temporaire accédé en lecture/écriture

View File

@ -1,5 +1,5 @@
<?php <?php
namespace nur\sery\os\file; namespace nur\sery\file\base;
use nur\sery\os\IOException; use nur\sery\os\IOException;
use nur\sery\web\http; use nur\sery\web\http;

View File

@ -1,8 +1,8 @@
<?php <?php
namespace nur\sery\os\csv; namespace nur\sery\file\csv;
use nur\A; use nur\sery\cl;
use nur\ref\ref_csv; use nur\sery\ref\os\csv\ref_csv;
class csv_flavours { class csv_flavours {
const MAP = [ const MAP = [
@ -41,6 +41,6 @@ class csv_flavours {
} }
static final function get_encoding(string $flavour): ?string { static final function get_encoding(string $flavour): ?string {
return A::get(self::ENCODINGS, $flavour); return cl::get(self::ENCODINGS, $flavour);
} }
} }

View File

@ -3,7 +3,7 @@ namespace nur\sery\output\std;
use Exception; use Exception;
use nur\sery\cl; use nur\sery\cl;
use nur\sery\os\file\Stream; use nur\sery\file\base\Stream;
use nur\sery\php\content\content; use nur\sery\php\content\content;
use nur\sery\php\content\IContent; use nur\sery\php\content\IContent;
use nur\sery\php\content\IPrintable; use nur\sery\php\content\IPrintable;

View File

@ -1,8 +1,6 @@
<?php <?php
namespace nur\sery; namespace nur\sery;
use nur\base;
/** /**
* Class str: gestion des chaines de caractère "simples" * Class str: gestion des chaines de caractère "simples"
*/ */

View File

@ -1,13 +1,14 @@
<?php <?php
namespace nur\sery\os\file; namespace nur\sery\file\base;
use nur\sery\file\base\FileReader;
use PHPUnit\Framework\TestCase; use PHPUnit\Framework\TestCase;
class FileReaderTest extends TestCase { class FileReaderTest extends TestCase {
function testIgnoreBom() { function testIgnoreBom() {
# la lecture avec et sans BOM doit être identique # la lecture avec et sans BOM doit être identique
## sans BOM ## sans BOM
$reader = new FileReader(__DIR__.'/impl/sans_bom.txt'); $reader = new FileReader(__DIR__ . '/impl/sans_bom.txt');
self::assertSame("0123456789", $reader->fread(10)); self::assertSame("0123456789", $reader->fread(10));
self::assertSame(10, $reader->ftell()); self::assertSame(10, $reader->ftell());
$reader->seek(30); $reader->seek(30);
@ -20,7 +21,7 @@ class FileReaderTest extends TestCase {
self::assertSame("0123456789\n", $reader->getContents()); self::assertSame("0123456789\n", $reader->getContents());
$reader->close(); $reader->close();
## avec BOM ## avec BOM
$reader = new FileReader(__DIR__.'/impl/avec_bom.txt'); $reader = new FileReader(__DIR__ . '/impl/avec_bom.txt');
self::assertSame("0123456789", $reader->fread(10)); self::assertSame("0123456789", $reader->fread(10));
self::assertSame(10, $reader->ftell()); self::assertSame(10, $reader->ftell());
$reader->seek(30); $reader->seek(30);
@ -35,25 +36,25 @@ class FileReaderTest extends TestCase {
} }
function testCsvAutoParams() { function testCsvAutoParams() {
$reader = new FileReader(__DIR__.'/impl/msexcel.csv'); $reader = new FileReader(__DIR__ . '/impl/msexcel.csv');
self::assertSame(["nom", "prenom", "age"], $reader->fgetcsv()); self::assertSame(["nom", "prenom", "age"], $reader->fgetcsv());
self::assertSame(["clain", "jephte", "50"], $reader->fgetcsv()); self::assertSame(["clain", "jephte", "50"], $reader->fgetcsv());
self::assertNull($reader->fgetcsv()); self::assertNull($reader->fgetcsv());
$reader->close(); $reader->close();
$reader = new FileReader(__DIR__.'/impl/ooffice.csv'); $reader = new FileReader(__DIR__ . '/impl/ooffice.csv');
self::assertSame(["nom", "prenom", "age"], $reader->fgetcsv()); self::assertSame(["nom", "prenom", "age"], $reader->fgetcsv());
self::assertSame(["clain", "jephte", "50"], $reader->fgetcsv()); self::assertSame(["clain", "jephte", "50"], $reader->fgetcsv());
self::assertNull($reader->fgetcsv()); self::assertNull($reader->fgetcsv());
$reader->close(); $reader->close();
$reader = new FileReader(__DIR__.'/impl/weird.tsv'); $reader = new FileReader(__DIR__ . '/impl/weird.tsv');
self::assertSame(["nom", "prenom", "age"], $reader->fgetcsv()); self::assertSame(["nom", "prenom", "age"], $reader->fgetcsv());
self::assertSame(["clain", "jephte", "50"], $reader->fgetcsv()); self::assertSame(["clain", "jephte", "50"], $reader->fgetcsv());
self::assertNull($reader->fgetcsv()); self::assertNull($reader->fgetcsv());
$reader->close(); $reader->close();
$reader = new FileReader(__DIR__.'/impl/avec_bom.csv'); $reader = new FileReader(__DIR__ . '/impl/avec_bom.csv');
self::assertSame(["nom", "prenom", "age"], $reader->fgetcsv()); self::assertSame(["nom", "prenom", "age"], $reader->fgetcsv());
self::assertSame(["clain", "jephte", "50"], $reader->fgetcsv()); self::assertSame(["clain", "jephte", "50"], $reader->fgetcsv());
self::assertNull($reader->fgetcsv()); self::assertNull($reader->fgetcsv());

View File

@ -2,7 +2,7 @@
namespace nur\sery\php\time; namespace nur\sery\php\time;
use DateTimeZone; use DateTimeZone;
use PHPUnit\Framework\TestCase; use nulib\tests\TestCase;
class DateTest extends TestCase { class DateTest extends TestCase {
protected static function dt(string $datetime): Date { protected static function dt(string $datetime): Date {

View File

@ -2,7 +2,7 @@
namespace nur\sery\php\time; namespace nur\sery\php\time;
use DateTimeZone; use DateTimeZone;
use PHPUnit\Framework\TestCase; use nulib\tests\TestCase;
class DateTimeTest extends TestCase { class DateTimeTest extends TestCase {
protected static function dt(string $datetime): DateTime { protected static function dt(string $datetime): DateTime {

View File

@ -2,9 +2,7 @@
namespace nur\sery\php\time; namespace nur\sery\php\time;
use DateTimeZone; use DateTimeZone;
use nur\sery\php\time\DateTime; use nulib\tests\TestCase;
use nur\sery\php\time\Delay;
use nur\t\TestCase;
class DelayTest extends TestCase { class DelayTest extends TestCase {
protected static function dt(string $datetime): DateTime { protected static function dt(string $datetime): DateTime {