<pman>Intégration de la branche rel74-0.5.0

This commit is contained in:
Jephté Clain 2025-04-30 04:40:11 +04:00
commit e650e27abe
7 changed files with 59 additions and 52 deletions

View File

@ -9,4 +9,4 @@ composer:
dist: dist:
link: false link: false
require: require:
nulib/php: ^0.4.0p74 nulib/php: ^0.5.0p74

2
.idea/nulib-spout.iml generated
View File

@ -4,7 +4,7 @@
<content url="file://$MODULE_DIR$"> <content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" packagePrefix="nulib\" /> <sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" packagePrefix="nulib\" />
<sourceFolder url="file://$MODULE_DIR$/tests" isTestSource="true" packagePrefix="nulib\ext\" /> <sourceFolder url="file://$MODULE_DIR$/tests" isTestSource="true" packagePrefix="nulib\ext\" />
<sourceFolder url="file://$MODULE_DIR$/upstream-3.x/src" isTestSource="false" packagePrefix="OpenSpout\" /> <sourceFolder url="file://$MODULE_DIR$/openspout3/src" isTestSource="false" packagePrefix="OpenSpout\" />
<excludeFolder url="file://$MODULE_DIR$/vendor" /> <excludeFolder url="file://$MODULE_DIR$/vendor" />
</content> </content>
<orderEntry type="inheritedJdk" /> <orderEntry type="inheritedJdk" />

View File

@ -1,3 +1,10 @@
## Release 0.5.0p74 du 30/04/2025-04:39
* `6c1c85b` remplacer nur_func par func
* `3cdcf49` support de multiples définitions pour border
## Release 0.4.0p82 du 14/03/2025-15:40
## Release 0.4.0p74 du 14/03/2025-15:35 ## Release 0.4.0p74 du 14/03/2025-15:35
* `7e90311` tracer le hook * `7e90311` tracer le hook

View File

@ -1 +1 @@
0.4.0 0.5.0

View File

@ -18,7 +18,7 @@
"openspout/openspout": "v3.7.4" "openspout/openspout": "v3.7.4"
}, },
"require": { "require": {
"nulib/php": "^0.4.0p74", "nulib/php": "^0.5.0p74",
"ext-dom": "*", "ext-dom": "*",
"ext-filter": "*", "ext-filter": "*",
"ext-libxml": "*", "ext-libxml": "*",

45
composer.lock generated
View File

@ -4,15 +4,15 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically" "This file is @generated automatically"
], ],
"content-hash": "fa3bdcdf89054b7afba88c4ed3e09db4", "content-hash": "fe6b4daee2e700fcdc3dc40c9ffe935d",
"packages": [ "packages": [
{ {
"name": "nulib/php", "name": "nulib/php",
"version": "0.4.0p74", "version": "0.5.0p74",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://git.univ-reunion.fr/sda-php/nulib.git", "url": "https://git.univ-reunion.fr/sda-php/nulib.git",
"reference": "559feda663fc99f8baee2ba32f164b19bdd01927" "reference": "4037bf20424eb48708e5fdf9fc8e10f2ef71d134"
}, },
"require": { "require": {
"ext-json": "*", "ext-json": "*",
@ -22,6 +22,8 @@
"require-dev": { "require-dev": {
"ext-curl": "*", "ext-curl": "*",
"ext-pcntl": "*", "ext-pcntl": "*",
"ext-pdo": "*",
"ext-pgsql": "*",
"ext-posix": "*", "ext-posix": "*",
"ext-sqlite3": "*", "ext-sqlite3": "*",
"nulib/tests": "^7.4" "nulib/tests": "^7.4"
@ -50,7 +52,7 @@
} }
], ],
"description": "fonctions et classes essentielles", "description": "fonctions et classes essentielles",
"time": "2025-03-14T11:23:41+00:00" "time": "2025-04-30T00:32:10+00:00"
}, },
{ {
"name": "symfony/deprecation-contracts", "name": "symfony/deprecation-contracts",
@ -745,16 +747,16 @@
}, },
{ {
"name": "friendsofphp/php-cs-fixer", "name": "friendsofphp/php-cs-fixer",
"version": "v3.72.0", "version": "v3.75.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git", "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git",
"reference": "900389362c43d116fee1ffc51f7878145fa61b57" "reference": "399a128ff2fdaf4281e4e79b755693286cdf325c"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/900389362c43d116fee1ffc51f7878145fa61b57", "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/399a128ff2fdaf4281e4e79b755693286cdf325c",
"reference": "900389362c43d116fee1ffc51f7878145fa61b57", "reference": "399a128ff2fdaf4281e4e79b755693286cdf325c",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -762,6 +764,7 @@
"composer/semver": "^3.4", "composer/semver": "^3.4",
"composer/xdebug-handler": "^3.0.3", "composer/xdebug-handler": "^3.0.3",
"ext-filter": "*", "ext-filter": "*",
"ext-hash": "*",
"ext-json": "*", "ext-json": "*",
"ext-tokenizer": "*", "ext-tokenizer": "*",
"fidry/cpu-core-counter": "^1.2", "fidry/cpu-core-counter": "^1.2",
@ -836,7 +839,7 @@
], ],
"support": { "support": {
"issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues", "issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues",
"source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.72.0" "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.75.0"
}, },
"funding": [ "funding": [
{ {
@ -844,20 +847,20 @@
"type": "github" "type": "github"
} }
], ],
"time": "2025-03-13T11:25:37+00:00" "time": "2025-03-31T18:40:42+00:00"
}, },
{ {
"name": "myclabs/deep-copy", "name": "myclabs/deep-copy",
"version": "1.13.0", "version": "1.13.1",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/myclabs/DeepCopy.git", "url": "https://github.com/myclabs/DeepCopy.git",
"reference": "024473a478be9df5fdaca2c793f2232fe788e414" "reference": "1720ddd719e16cf0db4eb1c6eca108031636d46c"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/024473a478be9df5fdaca2c793f2232fe788e414", "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/1720ddd719e16cf0db4eb1c6eca108031636d46c",
"reference": "024473a478be9df5fdaca2c793f2232fe788e414", "reference": "1720ddd719e16cf0db4eb1c6eca108031636d46c",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -896,7 +899,7 @@
], ],
"support": { "support": {
"issues": "https://github.com/myclabs/DeepCopy/issues", "issues": "https://github.com/myclabs/DeepCopy/issues",
"source": "https://github.com/myclabs/DeepCopy/tree/1.13.0" "source": "https://github.com/myclabs/DeepCopy/tree/1.13.1"
}, },
"funding": [ "funding": [
{ {
@ -904,7 +907,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2025-02-12T12:17:51+00:00" "time": "2025-04-29T12:36:36+00:00"
}, },
{ {
"name": "nikic/php-parser", "name": "nikic/php-parser",
@ -1122,16 +1125,16 @@
}, },
{ {
"name": "phpstan/phpstan", "name": "phpstan/phpstan",
"version": "1.12.21", "version": "1.12.25",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/phpstan/phpstan.git", "url": "https://github.com/phpstan/phpstan.git",
"reference": "14276fdef70575106a3392a4ed553c06a984df28" "reference": "e310849a19e02b8bfcbb63147f495d8f872dd96f"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/phpstan/phpstan/zipball/14276fdef70575106a3392a4ed553c06a984df28", "url": "https://api.github.com/repos/phpstan/phpstan/zipball/e310849a19e02b8bfcbb63147f495d8f872dd96f",
"reference": "14276fdef70575106a3392a4ed553c06a984df28", "reference": "e310849a19e02b8bfcbb63147f495d8f872dd96f",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -1176,7 +1179,7 @@
"type": "github" "type": "github"
} }
], ],
"time": "2025-03-09T09:24:50+00:00" "time": "2025-04-27T12:20:45+00:00"
}, },
{ {
"name": "phpstan/phpstan-phpunit", "name": "phpstan/phpstan-phpunit",

View File

@ -6,7 +6,6 @@ use nulib\file\tab\AbstractBuilder;
use nulib\file\tab\TAbstractBuilder; use nulib\file\tab\TAbstractBuilder;
use nulib\os\path; use nulib\os\path;
use nulib\php\func; use nulib\php\func;
use nulib\php\nur_func;
use nulib\php\time\Date; use nulib\php\time\Date;
use nulib\php\time\DateTime; use nulib\php\time\DateTime;
use nulib\ref\ext\spout\ref_builder; use nulib\ref\ext\spout\ref_builder;
@ -86,20 +85,23 @@ class SpoutBuilder extends AbstractBuilder {
if (($wrap = $cell["wrap"] ?? null) !== null) $style->setShouldWrapText($wrap); if (($wrap = $cell["wrap"] ?? null) !== null) $style->setShouldWrapText($wrap);
if (($format = $cell["format"] ?? null) !== null) $style->setFormat($format); if (($format = $cell["format"] ?? null) !== null) $style->setFormat($format);
if (($border = $cell["border"] ?? null) !== null) { if (($border = $cell["border"] ?? null) !== null) {
if (is_string($border)) { if (is_array($border)) $borderDefs = $border;
$parts = explode(" ", $border); else $borderDefs = preg_split('/\s*,\s*/', trim(strval($border)));
$border = []; $border = null;
foreach ($borderDefs as $borderDef) {
$parts = preg_split('/\s+/', $borderDef);
$borderDef = [];
$styleAll = null; $styleAll = null;
$widthAll = null; $widthAll = null;
$colorAll = null; $colorAll = null;
foreach ($parts as $part) { foreach ($parts as $part) {
if ($part === "all") { if ($part === "all") {
$border["left"] = []; $borderDef["left"] = [];
$border["top"] = []; $borderDef["top"] = [];
$border["right"] = []; $borderDef["right"] = [];
$border["bottom"] = []; $borderDef["bottom"] = [];
} elseif (preg_match('/^(left|top|right|bottom)$/', $part)) { } elseif (preg_match('/^(left|top|right|bottom)$/', $part)) {
$border[$part] = []; $borderDef[$part] = [];
} elseif (preg_match('/^(none|solid|dashed|dotted|double)$/', $part)) { } elseif (preg_match('/^(none|solid|dashed|dotted|double)$/', $part)) {
$styleAll = $part; $styleAll = $part;
} elseif (preg_match('/^(thin|medium|thick)$/', $part)) { } elseif (preg_match('/^(thin|medium|thick)$/', $part)) {
@ -108,22 +110,22 @@ class SpoutBuilder extends AbstractBuilder {
$colorAll = $part; $colorAll = $part;
} }
} }
foreach ($border as &$part) { foreach ($borderDef as &$part) {
if ($styleAll !== null) $part["style"] = $styleAll; if ($styleAll !== null) $part["style"] = $styleAll;
if ($widthAll !== null) $part["width"] = $widthAll; if ($widthAll !== null) $part["width"] = $widthAll;
if ($colorAll !== null) $part["color"] = $colorAll; if ($colorAll !== null) $part["color"] = $colorAll;
}; unset($part); }; unset($part);
}
$top = $border["top"] ?? null; $top = $borderDef["top"] ?? null;
$right = $border["right"] ?? null; $right = $borderDef["right"] ?? null;
$bottom = $border["bottom"] ?? null; $bottom = $borderDef["bottom"] ?? null;
$left = $border["left"] ?? null; $left = $borderDef["left"] ?? null;
$border = null;
self::add_border_part($border, "top", $top); self::add_border_part($border, "top", $top);
self::add_border_part($border, "right", $right); self::add_border_part($border, "right", $right);
self::add_border_part($border, "bottom", $bottom); self::add_border_part($border, "bottom", $bottom);
self::add_border_part($border, "left", $left); self::add_border_part($border, "left", $left);
}
if ($border !== null) $style->setBorder($border); if ($border !== null) $style->setBorder($border);
} }
return $style; return $style;
@ -321,13 +323,8 @@ class SpoutBuilder extends AbstractBuilder {
} }
if (array_key_exists("cook_func", $sheetParams)) { if (array_key_exists("cook_func", $sheetParams)) {
$cookFunc = $sheetParams["cook_func"] ?? null; $cookFunc = $sheetParams["cook_func"] ?? null;
$cookCtx = $cookArgs = null; if ($cookFunc !== null) $cookFunc = func::with($cookFunc)->bind($this);
if ($cookFunc !== null) { $this->cookFunc = $cookFunc;
nur_func::ensure_func($cookFunc, $this, $cookArgs);
$cookCtx = nur_func::_prepare($cookFunc);
}
$this->cookCtx = $cookCtx;
$this->cookArgs = $cookArgs;
} }
} }
return $this; return $this;