Compare commits

..

No commits in common. "32fbed599e2e3cfc616df70fe51ba8ec4cb3aefd" and "2b2af6be95070c1262740ab0242c96c1d86af568" have entirely different histories.

7 changed files with 205 additions and 102 deletions

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$/openspout3/src" isTestSource="false" packagePrefix="OpenSpout\" /> <sourceFolder url="file://$MODULE_DIR$/upstream-3.x/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

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

View File

@ -1,10 +1,3 @@
## Release 0.5.0p82 du 30/04/2025-04:43
## 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.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

View File

@ -1 +1 @@
0.5.0 0.4.0

View File

@ -18,7 +18,7 @@
"openspout/openspout": "v4.27.0" "openspout/openspout": "v4.27.0"
}, },
"require": { "require": {
"nulib/php": "^0.5.0p82", "nulib/php": "^0.4.0p82",
"ext-dom": "*", "ext-dom": "*",
"ext-fileinfo": "*", "ext-fileinfo": "*",
"ext-filter": "*", "ext-filter": "*",

244
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": "a52c55d2e232adab0d6e67b6b6358568", "content-hash": "b8cc65f204cb4f352f82d67135a72dc8",
"packages": [ "packages": [
{ {
"name": "nulib/php", "name": "nulib/php",
"version": "0.5.0p82", "version": "0.4.0p82",
"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": "9f8b6545e68079728bb7349487b99024bd7d5090" "reference": "fd120298a91bddcaa3da2decd34b8f99853fb070"
}, },
"require": { "require": {
"ext-json": "*", "ext-json": "*",
@ -22,8 +22,6 @@
"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": "^8.2" "nulib/tests": "^8.2"
@ -52,7 +50,7 @@
} }
], ],
"description": "fonctions et classes essentielles", "description": "fonctions et classes essentielles",
"time": "2025-04-30T00:33:36+00:00" "time": "2025-03-14T11:24:39+00:00"
}, },
{ {
"name": "symfony/deprecation-contracts", "name": "symfony/deprecation-contracts",
@ -202,16 +200,16 @@
}, },
{ {
"name": "symfony/yaml", "name": "symfony/yaml",
"version": "v7.2.5", "version": "v7.2.3",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/yaml.git", "url": "https://github.com/symfony/yaml.git",
"reference": "4c4b6f4cfcd7e52053f0c8bfad0f7f30fb924912" "reference": "ac238f173df0c9c1120f862d0f599e17535a87ec"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/yaml/zipball/4c4b6f4cfcd7e52053f0c8bfad0f7f30fb924912", "url": "https://api.github.com/repos/symfony/yaml/zipball/ac238f173df0c9c1120f862d0f599e17535a87ec",
"reference": "4c4b6f4cfcd7e52053f0c8bfad0f7f30fb924912", "reference": "ac238f173df0c9c1120f862d0f599e17535a87ec",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -254,7 +252,7 @@
"description": "Loads and dumps YAML files", "description": "Loads and dumps YAML files",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"support": { "support": {
"source": "https://github.com/symfony/yaml/tree/v7.2.5" "source": "https://github.com/symfony/yaml/tree/v7.2.3"
}, },
"funding": [ "funding": [
{ {
@ -270,7 +268,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2025-03-03T07:12:39+00:00" "time": "2025-01-07T12:55:42+00:00"
} }
], ],
"packages-dev": [ "packages-dev": [
@ -915,16 +913,16 @@
}, },
{ {
"name": "friendsofphp/php-cs-fixer", "name": "friendsofphp/php-cs-fixer",
"version": "v3.75.0", "version": "v3.72.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": "399a128ff2fdaf4281e4e79b755693286cdf325c" "reference": "900389362c43d116fee1ffc51f7878145fa61b57"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/399a128ff2fdaf4281e4e79b755693286cdf325c", "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/900389362c43d116fee1ffc51f7878145fa61b57",
"reference": "399a128ff2fdaf4281e4e79b755693286cdf325c", "reference": "900389362c43d116fee1ffc51f7878145fa61b57",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -932,7 +930,6 @@
"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",
@ -1007,7 +1004,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.75.0" "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.72.0"
}, },
"funding": [ "funding": [
{ {
@ -1015,7 +1012,121 @@
"type": "github" "type": "github"
} }
], ],
"time": "2025-03-31T18:40:42+00:00" "time": "2025-03-13T11:25:37+00:00"
},
{
"name": "icecave/parity",
"version": "3.0.1",
"source": {
"type": "git",
"url": "https://github.com/icecave/parity.git",
"reference": "4fe835483e0f89f0f96763c47cb9fdca26c24bdc"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/icecave/parity/zipball/4fe835483e0f89f0f96763c47cb9fdca26c24bdc",
"reference": "4fe835483e0f89f0f96763c47cb9fdca26c24bdc",
"shasum": ""
},
"require": {
"icecave/repr": "^4",
"php": ">=7.3"
},
"require-dev": {
"eloquent/liberator": "^2",
"eloquent/phony": "^5",
"eloquent/phony-phpunit": "^7",
"friendsofphp/php-cs-fixer": "^2",
"phpunit/phpunit": "^9"
},
"type": "library",
"autoload": {
"psr-4": {
"Icecave\\Parity\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "James Harris",
"email": "mailjamesharris@gmail.com",
"homepage": "https://github.com/jmalloc"
}
],
"description": "A customizable deep comparison library.",
"homepage": "https://github.com/icecave/parity",
"keywords": [
"compare",
"comparison",
"equal",
"equality",
"greater",
"less",
"sort",
"sorting"
],
"support": {
"issues": "https://github.com/icecave/parity/issues",
"source": "https://github.com/icecave/parity/tree/3.0.1"
},
"time": "2021-02-04T05:51:24+00:00"
},
{
"name": "icecave/repr",
"version": "4.0.0",
"source": {
"type": "git",
"url": "https://github.com/icecave/repr.git",
"reference": "3dad35ee43394404ae0f1926d754e7b7820da8e4"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/icecave/repr/zipball/3dad35ee43394404ae0f1926d754e7b7820da8e4",
"reference": "3dad35ee43394404ae0f1926d754e7b7820da8e4",
"shasum": ""
},
"require": {
"php": ">=7.2"
},
"require-dev": {
"eloquent/phony-phpunit": "^6",
"friendsofphp/php-cs-fixer": "^2",
"phpunit/phpunit": "^8"
},
"type": "library",
"autoload": {
"psr-4": {
"Icecave\\Repr\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "James Harris",
"email": "mailjamesharris@gmail.com",
"homepage": "https://github.com/jmalloc"
}
],
"description": "A library for generating string representations of any value, inspired by Python's reprlib library.",
"homepage": "https://github.com/icecave/repr",
"keywords": [
"human",
"readable",
"repr",
"representation",
"string"
],
"support": {
"issues": "https://github.com/icecave/repr/issues",
"source": "https://github.com/icecave/repr/tree/4.0.0"
},
"time": "2020-08-25T02:05:11+00:00"
}, },
{ {
"name": "infection/abstract-testframework-adapter", "name": "infection/abstract-testframework-adapter",
@ -1324,16 +1435,16 @@
}, },
{ {
"name": "infection/mutator", "name": "infection/mutator",
"version": "0.4.1", "version": "0.4.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/infection/mutator.git", "url": "https://github.com/infection/mutator.git",
"reference": "3c976d721b02b32f851ee4e15d553ef1e9186d1d" "reference": "51d6d01a2357102030aee9d603063c4bad86b144"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/infection/mutator/zipball/3c976d721b02b32f851ee4e15d553ef1e9186d1d", "url": "https://api.github.com/repos/infection/mutator/zipball/51d6d01a2357102030aee9d603063c4bad86b144",
"reference": "3c976d721b02b32f851ee4e15d553ef1e9186d1d", "reference": "51d6d01a2357102030aee9d603063c4bad86b144",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -1361,7 +1472,7 @@
"description": "Mutator interface to implement custom mutators (mutation operators) for Infection", "description": "Mutator interface to implement custom mutators (mutation operators) for Infection",
"support": { "support": {
"issues": "https://github.com/infection/mutator/issues", "issues": "https://github.com/infection/mutator/issues",
"source": "https://github.com/infection/mutator/tree/0.4.1" "source": "https://github.com/infection/mutator/tree/0.4.0"
}, },
"funding": [ "funding": [
{ {
@ -1373,24 +1484,25 @@
"type": "open_collective" "type": "open_collective"
} }
], ],
"time": "2025-04-29T08:19:52+00:00" "time": "2024-05-14T22:39:59+00:00"
}, },
{ {
"name": "justinrainbow/json-schema", "name": "justinrainbow/json-schema",
"version": "6.4.1", "version": "6.2.1",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/jsonrainbow/json-schema.git", "url": "https://github.com/jsonrainbow/json-schema.git",
"reference": "35d262c94959571e8736db1e5c9bc36ab94ae900" "reference": "dff04e3c7c11451a6b4e30709e17c44526ebff73"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/jsonrainbow/json-schema/zipball/35d262c94959571e8736db1e5c9bc36ab94ae900", "url": "https://api.github.com/repos/jsonrainbow/json-schema/zipball/dff04e3c7c11451a6b4e30709e17c44526ebff73",
"reference": "35d262c94959571e8736db1e5c9bc36ab94ae900", "reference": "dff04e3c7c11451a6b4e30709e17c44526ebff73",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"ext-json": "*", "ext-json": "*",
"icecave/parity": "^3.0",
"marc-mabe/php-enum": "^4.0", "marc-mabe/php-enum": "^4.0",
"php": "^7.2 || ^8.0" "php": "^7.2 || ^8.0"
}, },
@ -1446,9 +1558,9 @@
], ],
"support": { "support": {
"issues": "https://github.com/jsonrainbow/json-schema/issues", "issues": "https://github.com/jsonrainbow/json-schema/issues",
"source": "https://github.com/jsonrainbow/json-schema/tree/6.4.1" "source": "https://github.com/jsonrainbow/json-schema/tree/6.2.1"
}, },
"time": "2025-04-04T13:08:07+00:00" "time": "2025-03-06T21:27:10+00:00"
}, },
{ {
"name": "marc-mabe/php-enum", "name": "marc-mabe/php-enum",
@ -1525,16 +1637,16 @@
}, },
{ {
"name": "myclabs/deep-copy", "name": "myclabs/deep-copy",
"version": "1.13.1", "version": "1.13.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/myclabs/DeepCopy.git", "url": "https://github.com/myclabs/DeepCopy.git",
"reference": "1720ddd719e16cf0db4eb1c6eca108031636d46c" "reference": "024473a478be9df5fdaca2c793f2232fe788e414"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/1720ddd719e16cf0db4eb1c6eca108031636d46c", "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/024473a478be9df5fdaca2c793f2232fe788e414",
"reference": "1720ddd719e16cf0db4eb1c6eca108031636d46c", "reference": "024473a478be9df5fdaca2c793f2232fe788e414",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -1573,7 +1685,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.1" "source": "https://github.com/myclabs/DeepCopy/tree/1.13.0"
}, },
"funding": [ "funding": [
{ {
@ -1581,7 +1693,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2025-04-29T12:36:36+00:00" "time": "2025-02-12T12:17:51+00:00"
}, },
{ {
"name": "nikic/php-parser", "name": "nikic/php-parser",
@ -2026,16 +2138,16 @@
}, },
{ {
"name": "phpstan/phpstan", "name": "phpstan/phpstan",
"version": "1.12.25", "version": "1.12.21",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/phpstan/phpstan.git", "url": "https://github.com/phpstan/phpstan.git",
"reference": "e310849a19e02b8bfcbb63147f495d8f872dd96f" "reference": "14276fdef70575106a3392a4ed553c06a984df28"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/phpstan/phpstan/zipball/e310849a19e02b8bfcbb63147f495d8f872dd96f", "url": "https://api.github.com/repos/phpstan/phpstan/zipball/14276fdef70575106a3392a4ed553c06a984df28",
"reference": "e310849a19e02b8bfcbb63147f495d8f872dd96f", "reference": "14276fdef70575106a3392a4ed553c06a984df28",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -2080,7 +2192,7 @@
"type": "github" "type": "github"
} }
], ],
"time": "2025-04-27T12:20:45+00:00" "time": "2025-03-09T09:24:50+00:00"
}, },
{ {
"name": "phpstan/phpstan-phpunit", "name": "phpstan/phpstan-phpunit",
@ -3335,16 +3447,16 @@
}, },
{ {
"name": "sanmai/later", "name": "sanmai/later",
"version": "0.1.5", "version": "0.1.4",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/sanmai/later.git", "url": "https://github.com/sanmai/later.git",
"reference": "cf5164557d19930295892094996f049ea12ba14d" "reference": "e24c4304a4b1349c2a83151a692cec0c10579f60"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/sanmai/later/zipball/cf5164557d19930295892094996f049ea12ba14d", "url": "https://api.github.com/repos/sanmai/later/zipball/e24c4304a4b1349c2a83151a692cec0c10579f60",
"reference": "cf5164557d19930295892094996f049ea12ba14d", "reference": "e24c4304a4b1349c2a83151a692cec0c10579f60",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -3387,7 +3499,7 @@
"description": "Later: deferred wrapper object", "description": "Later: deferred wrapper object",
"support": { "support": {
"issues": "https://github.com/sanmai/later/issues", "issues": "https://github.com/sanmai/later/issues",
"source": "https://github.com/sanmai/later/tree/0.1.5" "source": "https://github.com/sanmai/later/tree/0.1.4"
}, },
"funding": [ "funding": [
{ {
@ -3395,7 +3507,7 @@
"type": "github" "type": "github"
} }
], ],
"time": "2024-12-06T02:36:26+00:00" "time": "2023-10-24T00:25:28+00:00"
}, },
{ {
"name": "sanmai/pipeline", "name": "sanmai/pipeline",
@ -4444,16 +4556,16 @@
}, },
{ {
"name": "symfony/console", "name": "symfony/console",
"version": "v7.2.5", "version": "v7.2.1",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/console.git", "url": "https://github.com/symfony/console.git",
"reference": "e51498ea18570c062e7df29d05a7003585b19b88" "reference": "fefcc18c0f5d0efe3ab3152f15857298868dc2c3"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/console/zipball/e51498ea18570c062e7df29d05a7003585b19b88", "url": "https://api.github.com/repos/symfony/console/zipball/fefcc18c0f5d0efe3ab3152f15857298868dc2c3",
"reference": "e51498ea18570c062e7df29d05a7003585b19b88", "reference": "fefcc18c0f5d0efe3ab3152f15857298868dc2c3",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -4517,7 +4629,7 @@
"terminal" "terminal"
], ],
"support": { "support": {
"source": "https://github.com/symfony/console/tree/v7.2.5" "source": "https://github.com/symfony/console/tree/v7.2.1"
}, },
"funding": [ "funding": [
{ {
@ -4533,7 +4645,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2025-03-12T08:11:12+00:00" "time": "2024-12-11T03:49:26+00:00"
}, },
{ {
"name": "symfony/event-dispatcher", "name": "symfony/event-dispatcher",
@ -5285,16 +5397,16 @@
}, },
{ {
"name": "symfony/process", "name": "symfony/process",
"version": "v7.2.5", "version": "v7.2.4",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/process.git", "url": "https://github.com/symfony/process.git",
"reference": "87b7c93e57df9d8e39a093d32587702380ff045d" "reference": "d8f411ff3c7ddc4ae9166fb388d1190a2df5b5cf"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/process/zipball/87b7c93e57df9d8e39a093d32587702380ff045d", "url": "https://api.github.com/repos/symfony/process/zipball/d8f411ff3c7ddc4ae9166fb388d1190a2df5b5cf",
"reference": "87b7c93e57df9d8e39a093d32587702380ff045d", "reference": "d8f411ff3c7ddc4ae9166fb388d1190a2df5b5cf",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -5326,7 +5438,7 @@
"description": "Executes commands in sub-processes", "description": "Executes commands in sub-processes",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"support": { "support": {
"source": "https://github.com/symfony/process/tree/v7.2.5" "source": "https://github.com/symfony/process/tree/v7.2.4"
}, },
"funding": [ "funding": [
{ {
@ -5342,7 +5454,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2025-03-13T12:21:46+00:00" "time": "2025-02-05T08:33:46+00:00"
}, },
{ {
"name": "symfony/service-contracts", "name": "symfony/service-contracts",
@ -5578,16 +5690,16 @@
}, },
{ {
"name": "thecodingmachine/safe", "name": "thecodingmachine/safe",
"version": "v3.1.1", "version": "v3.0.2",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/thecodingmachine/safe.git", "url": "https://github.com/thecodingmachine/safe.git",
"reference": "234f6fe34a0bead8c5ae1cfc0800539442e6f619" "reference": "22ffad3248982a784f9870a37aeb2e522bd19645"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/thecodingmachine/safe/zipball/234f6fe34a0bead8c5ae1cfc0800539442e6f619", "url": "https://api.github.com/repos/thecodingmachine/safe/zipball/22ffad3248982a784f9870a37aeb2e522bd19645",
"reference": "234f6fe34a0bead8c5ae1cfc0800539442e6f619", "reference": "22ffad3248982a784f9870a37aeb2e522bd19645",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -5697,7 +5809,7 @@
"description": "PHP core functions that throw exceptions instead of returning FALSE on error", "description": "PHP core functions that throw exceptions instead of returning FALSE on error",
"support": { "support": {
"issues": "https://github.com/thecodingmachine/safe/issues", "issues": "https://github.com/thecodingmachine/safe/issues",
"source": "https://github.com/thecodingmachine/safe/tree/v3.1.1" "source": "https://github.com/thecodingmachine/safe/tree/v3.0.2"
}, },
"funding": [ "funding": [
{ {
@ -5713,7 +5825,7 @@
"type": "github" "type": "github"
} }
], ],
"time": "2025-04-28T07:56:17+00:00" "time": "2025-02-19T19:23:00+00:00"
}, },
{ {
"name": "theseer/tokenizer", "name": "theseer/tokenizer",

View File

@ -6,6 +6,7 @@ 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;
@ -94,23 +95,20 @@ class SpoutBuilder extends AbstractBuilder {
if (($rotation = $cell["rotation"] ?? null) !== null) $style->setTextRotation($rotation); if (($rotation = $cell["rotation"] ?? null) !== null) $style->setTextRotation($rotation);
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_array($border)) $borderDefs = $border; if (is_string($border)) {
else $borderDefs = preg_split('/\s*,\s*/', trim(strval($border))); $parts = explode(" ", $border);
$border = null; $border = [];
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") {
$borderDef["left"] = []; $border["left"] = [];
$borderDef["top"] = []; $border["top"] = [];
$borderDef["right"] = []; $border["right"] = [];
$borderDef["bottom"] = []; $border["bottom"] = [];
} elseif (preg_match('/^(left|top|right|bottom)$/', $part)) { } elseif (preg_match('/^(left|top|right|bottom)$/', $part)) {
$borderDef[$part] = []; $border[$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)) {
@ -119,23 +117,18 @@ class SpoutBuilder extends AbstractBuilder {
$colorAll = $part; $colorAll = $part;
} }
} }
foreach ($borderDef as &$part) { foreach ($border 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 = $borderDef["top"] ?? null;
$right = $borderDef["right"] ?? null;
$bottom = $borderDef["bottom"] ?? null;
$left = $borderDef["left"] ?? null;
self::add_border_part($border, "top", $top);
self::add_border_part($border, "right", $right);
self::add_border_part($border, "bottom", $bottom);
self::add_border_part($border, "left", $left);
} }
if ($border !== null) $style->setBorder(new Border(...$border)); $parts = null;
self::add_border_part($parts, "top", $border["top"] ?? null);
self::add_border_part($parts, "right", $border["right"] ?? null);
self::add_border_part($parts, "bottom", $border["bottom"] ?? null);
self::add_border_part($parts, "left", $border["left"] ?? null);
if ($parts !== null) $style->setBorder(new Border(...$parts));
} }
if (($autofit = $cell["autofit"] ?? null) !== null) $style->setShouldShrinkToFit($autofit); if (($autofit = $cell["autofit"] ?? null) !== null) $style->setShouldShrinkToFit($autofit);
return $style; return $style;
@ -340,8 +333,13 @@ 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;
if ($cookFunc !== null) $cookFunc = func::with($cookFunc)->bind($this); $cookCtx = $cookArgs = null;
$this->cookFunc = $cookFunc; if ($cookFunc !== null) {
nur_func::ensure_func($cookFunc, $this, $cookArgs);
$cookCtx = nur_func::_prepare($cookFunc);
}
$this->cookCtx = $cookCtx;
$this->cookArgs = $cookArgs;
} }
} }
return $this; return $this;