From 3f82f1d009e1bd39b276193a37da4cf39de6fb19 Mon Sep 17 00:00:00 2001 From: Thomas Peterson Date: Fri, 25 Jul 2025 16:22:26 +0200 Subject: [PATCH] Fixes --- cobertura.xml | 11362 +++++++++++++++-------------- src/Option/Parser.php | 7 + src/Option/Parser/Fieldset.php | 90 + src/Option/Type/Fieldset.php | 69 + tests/Json/Type/FieldsetTest.php | 62 + 5 files changed, 6012 insertions(+), 5578 deletions(-) create mode 100644 src/Option/Parser/Fieldset.php create mode 100644 src/Option/Type/Fieldset.php create mode 100644 tests/Json/Type/FieldsetTest.php diff --git a/cobertura.xml b/cobertura.xml index 79eced3..a806fbc 100644 --- a/cobertura.xml +++ b/cobertura.xml @@ -1,59 +1,59 @@ - + /home/thomas/projekte/calc/src - + - + - + - - - - - + + + + + - + - + - + - + - + - + - + - + - + - + - + - - - - + + + + - + - + @@ -61,50 +61,50 @@ - + - + - + - + - + - + - + - + - + - + - + - + - - - - - - + + + + + + - - - + + + - + - + @@ -112,119 +112,119 @@ - + - + - + - - - - - + + + + + - + - - - - - - - - - - + + + + + + + + + + - + - - - - - - - - + + + + + + + + - + - - - - + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - - + + + + + - - - - - - - + + + + + + + - - - - + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -267,479 +267,102 @@ - + - + - + - - - + + + - + - + - + - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -747,27 +370,25 @@ - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + @@ -775,55 +396,45 @@ - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + @@ -831,275 +442,111 @@ - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1107,27 +554,25 @@ - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + @@ -1135,55 +580,45 @@ - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + @@ -1191,27 +626,592 @@ - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1219,27 +1219,27 @@ - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + @@ -1247,27 +1247,27 @@ - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + @@ -1275,27 +1275,27 @@ - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + @@ -1303,27 +1303,27 @@ - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + @@ -1331,27 +1331,27 @@ - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + @@ -1359,26 +1359,26 @@ - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + @@ -1437,496 +1437,496 @@ - + - + - + - - + + - + - - - - - - - - - - - - - - + + + + + + + + + + + + + + - + - - - - - - - + + + + + + + - - - + + + - - - - - + + + + + - + - - - - + + + + - - - - - + + + + + - - + + - + - - - - + + + + - - - - - + + + + + - - + + - + - - - - - - - - - + + + + + + + + + - + - - - - - - - + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - - - + + + - - - - - - - - - + + + + + + + + + - - - - - + + + + + - - - - - - + + + + + + - - - - - + + + + + - - - - - - - - - - - + + + + + + + + + + + - + - - - - - - - + + + + + + + - + - + - + - - - + + + - + - + - + - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - + + + + + + + + + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2035,19 +2035,19 @@ - + - + - + - - + + - + - + @@ -2057,71 +2057,71 @@ - - - + + + - + - + - + - - - - - - + + + + + + - + - - - - - - + + + + + + - + - - - - - - - - - - - - - - + + + + + + + + + + + + + + - + - + - + - - - - - - - - + + + + + + + + @@ -2130,10 +2130,10 @@ - + - - + + @@ -2141,146 +2141,146 @@ - + - - + + - + - + - + - - + + - + - + - + - - + + - + - + - + - - + + - + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - - - - + + + + + + + - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - - - - - - - - + + + + + + + + - + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - + - - - + + + - + - + - + - + - + - + @@ -2288,9 +2288,9 @@ - + - + @@ -2298,14 +2298,14 @@ - + - + - + - + @@ -2313,11 +2313,11 @@ - + - - - + + + @@ -2325,15 +2325,15 @@ - + - - - - - - - + + + + + + + @@ -2341,9 +2341,9 @@ - + - + @@ -2351,29 +2351,29 @@ - + - - - - - + + + + + - + - + - + - - + + - + - + @@ -2381,22 +2381,22 @@ - + - + - + - - - + + + - + - - + + @@ -2409,9 +2409,9 @@ - + - + @@ -2419,14 +2419,14 @@ - + - + - + - + @@ -2434,14 +2434,14 @@ - + - + - + - + @@ -2449,332 +2449,332 @@ - + - + - + - + - + - - - + + + - + - + - + - - - + + + - + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - + - - - - - - + + + + + + - + - - - - - + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - + + + + + + + - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - + - + - - + + - - - + + + - - - - - - - + + + + + + + - + - - - - - - - - - + + + + + + + + + - - - - - - + + + + + + - + - - + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2782,19 +2782,19 @@ - + - + - + - - + + @@ -2805,26 +2805,26 @@ - - + + - + - + - + - - + + @@ -2835,20 +2835,20 @@ - - + + - + - + - + - + @@ -2856,1092 +2856,1092 @@ - + - - - - + + + + - + - + - + - + - + - + - - - - - - + + + + + + - + - + - + - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - + + + + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - + - + - + - + - + - + - - - - - - - - - - + + + + + + + + + + - + - - - - - - - - - - - + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - + - + - + - + - - - - - - - + + + + + + + - + - - - - - - - - - - + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - + - + - + - + - + - - - - + + + + - + - + - + - + - + - + - + - + - + - + - + - + - - - - - - - - - - - - - + + + + + + + + + + + + + - + - - - + + + - - + + - + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - + - + - + - + - + - + - + - + - + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - + + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - - - - - + + + + + + + + - + - - - - - - - - + + + + + + + + - + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - + - + - + - + - - - - + + + + - - - - + + + + - + - + - + - - + + - + - - - - - - - - - + + + + + + + + + - + - - - - + + + + - + - - - - - - - + + + + + + + - + - - - - - - - - + + + + + + + + - + - - - - - - - - + + + + + + + + - + - - - - - - - - + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - - + + @@ -4186,8 +4186,8 @@ - - + + @@ -4438,54 +4438,54 @@ - + - + - + - - - + + + - + - + - + - + - + - + - + - - - - - - + + + + + + - + - + - + - - - - - + + + + + @@ -4538,24 +4538,24 @@ - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + @@ -4600,86 +4600,86 @@ - + - + - + - + - + - - - - - - - - - - - + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + - + - - - - + + + + - + - - - - - - - - + + + + + + + + @@ -4689,137 +4689,137 @@ - + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - + - + - + - + - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + - - - - - - - - - - - - + + + + + + + + + + + + @@ -4827,53 +4827,53 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -4903,18 +4903,18 @@ - + - + - + - + - + - + @@ -4928,23 +4928,23 @@ - + - - - - - + + + + + - + - - - - - - + + + + + + @@ -4953,14 +4953,14 @@ - + - + - + - + @@ -4973,9 +4973,9 @@ - + - + @@ -5066,40 +5066,40 @@ - + - + - - + + - - - - - - - - - - - + + + + + + + + + + + - - + + - + @@ -5140,31 +5140,31 @@ - + - + - + - + - - - - - + + + + + - - - - - + + + + + @@ -5172,16 +5172,16 @@ - + - + - + - - - - + + + + @@ -5194,134 +5194,134 @@ - + - - - - - - - - - - + + + + + + + + + + - + - + - + - + - + - + - + - + - + - + - + - - - - - - - - - - - - - - + + + + + + + + + + + + + + - - - - + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - + - + - + - + - + - + - + - - - - + + + + @@ -5334,39 +5334,38 @@ - + - + - + - + - - - - - - - - - - - + + + + + + + + + + - + - + - - - + + + @@ -5379,77 +5378,83 @@ - + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + - + - + - - - + + + @@ -5462,67 +5467,74 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + - + - + - + - + - + - + @@ -5537,110 +5549,110 @@ - - - - - - - - + + + + + + + + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - + - - - + + + - - - + + + - - - - - - - - + + + + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - + @@ -5657,28 +5669,28 @@ - + - - + + - - + + - + - - - - + + + + - + @@ -5689,28 +5701,28 @@ - - + + - - - - - - + + + + + + - + - + - + - + @@ -5718,9 +5730,9 @@ - + - + @@ -5734,22 +5746,22 @@ - + - - - - - - - + + + + + + + - + - + @@ -5757,217 +5769,323 @@ - - - - - - - + + + + + + + - + - + - + - + + - + - - - - - - + + + - - - - - + + + + + + + + + + + + + + + - + - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -5996,157 +6114,157 @@ - + - + - + - + - + - - + + - - + + - + - - - + + + - - - + + + - - - - - + + + + + - + - + - + - - + + - + - - - - - - - + + + + + + + - - - - - - - - - + + + + + + + + + - + - + - + - + - + - - - - - - - + + + + + + + - + - - - - - - - + + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - + - + - + - - + + - + - - - - - - + + + + + + - + @@ -6154,23 +6272,23 @@ - - - + + + - + - - - - - - - + + + + + + + - + @@ -6179,29 +6297,29 @@ - - + + - + - - - - - - - - + + + + + + + + - + @@ -6209,19 +6327,19 @@ - - - - - - - - - - + + + + + + + + + + - + @@ -6230,80 +6348,80 @@ - - + + - + - + - + - + - - - - - - - - + + + + + + + + - + - - + + - - + + - - + + - - - - - + + + + + - + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - + - - - - + + + + @@ -6314,25 +6432,25 @@ - + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + @@ -6356,42 +6474,42 @@ - + - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - + + + @@ -6411,116 +6529,116 @@ - - - - - + + + + + - + - - - - + + + + - + - - - - + + + + - + - + - + - + - + - + - + - + - - - - - - - - - - + + + + + + + + + + - - + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + @@ -6538,36 +6656,36 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -6587,34 +6705,34 @@ - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - + - + - + - + @@ -6633,25 +6751,25 @@ - + - - - - - - - - - - - - + + + + + + + + + + + + - + @@ -6664,241 +6782,241 @@ - - - - - - - - - - - - + + + + + + + + + + + + - + - + - + - + - + - + - + - + - + - - - - - - - + + + + + + + - + - - - - - - - + + + + + + + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - + - + - + - + - + - - - - + + + + - - - - - + + + + + - + - + - + - + - + - - - - + + + + - + - + - - - - - - - - - - + + + + + + + + + + - - - - - + + + + + - - - - - - - - - - - + + + + + + + + + + + - + - + - + - + - + - - + + - - - + + + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + @@ -6908,122 +7026,122 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -7031,29 +7149,29 @@ - + - + - + - + - + - + - + - + - + @@ -7066,189 +7184,189 @@ - + - - - - - - - + + + + + + + - + - - - + + + - + - - - - - - - - - - - + + + + + + + + + + + - + - - - + + + - - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + - - - - - - - + + + + + + + - + - - - - - - - - - - - - - - + + + + + + + + + + + + + + - + - - - + + + - + - + - + - - - + + + - + - + - + - - - - - - - - - + + + + + + + + + - + - + - + - + - + - + - + - + - + - - - - + + + + @@ -7265,27 +7383,27 @@ - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + @@ -7306,52 +7424,52 @@ - + - + - + - + - + - - - - - - + + + + + + - + - - - - + + + + - - - - - - - - - - - + + + + + + + + + + + @@ -7378,124 +7496,212 @@ - + - + - + - + + - + - + - + - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - + + + - - - - - - + + + + + + + + + + + + + + + + + + + - + - + - + - - - + - + - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - + + + + + + + + + + + + + + + - + - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - + @@ -7505,145 +7711,145 @@ - + - + - + - + - + - + - + - + - + - + - + - - - - - - + + + + + + - + - + - + - - - - - - - - + + + + + + + + - - - - + + + + - + - + - + - - + + - - - - + + + + - - - - - - - - - - - - - + + + + + + + + + + + + + - + - + - + - - - - - - - - - - - - + + + + + + + + + + + + - + - + - + - - + + @@ -7668,143 +7874,143 @@ - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + @@ -7827,129 +8033,129 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -7964,33 +8170,33 @@ - + - + - + - - - + + + - + - + - + - - + + - - - - + + + + @@ -8008,48 +8214,48 @@ - + - + - + - + - + - - - - + + + + - - - - - - + + + + + + - - - - + + + + - - - - - - + + + + + + @@ -8062,112 +8268,112 @@ - + - + - + - - + + - + - + - + - + - + - - - + + + - + - - - - - - - - - - + + + + + + + + + + - + - - - - - - + + + + + + - - - + + + - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - - - + + + - + - + - + - - + + - + - + - + - + @@ -8177,112 +8383,112 @@ - + - - - - - - - - - - + + + + + + + + + + - + - - - - - - + + + + + + - - - + + + - - - - + + + + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - + + + - + - + - + - - - + + + - + - + - + - + - + - + - + - - - - + + + + - + - - - + + + - + - - + + @@ -8300,14 +8506,14 @@ - + - + - + - + @@ -8315,164 +8521,164 @@ - + - + - + - + - + - + - + - - - + + + - + - - - - - + + + + + - + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - + + + + + + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - + + - - - - - - + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - + @@ -8485,9 +8691,9 @@ - + - + @@ -8495,9 +8701,9 @@ - + - + @@ -8505,9 +8711,9 @@ - + - + @@ -8515,9 +8721,9 @@ - + - + @@ -8525,46 +8731,46 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -8572,19 +8778,19 @@ - + - + - + - + - + - + @@ -8592,9 +8798,9 @@ - + - + @@ -8602,109 +8808,109 @@ - + - + - + - - - - - - - - - + + + + + + + + + - + - + - + - + - - - + + + - - - + + + - + - - - - - - - - - - - - + + + + + + + + + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -8712,148 +8918,148 @@ - + - - - - - - - - - + + + + + + + + + - + - - - - - - - + + + + + + + - - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - + - + - + - + - + - + - + - + - + - + - - - - + + + + - + - + - + - + - + - + - - + + - + - + - + - - - - + + + + - + - - - - + + + + - - - - - - - - + + + + + + + + @@ -8878,187 +9084,187 @@ - + - + - + - + - + - - - - - - - - - - - - - - + + + + + + + + + + + + + + - + - + - + - - - + + + - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + - + - + - + - + - + - + - + - + - + - + - + - + - - - - - + + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - - - - + + + + + + + - + - + - + - + - + - - - - - - - - - - - - - - + + + + + + + + + + + + + + @@ -9066,97 +9272,97 @@ - - - + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + - + - + - + - + - + - + - + - + - + - + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + @@ -9164,301 +9370,301 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - + + + + + + + + - + - + - + - + - + - + - + - + - + - + - + - + - - - - - + + + + + - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + - - - - - - - - - - - + + + + + + + - - - - - + - + - + - + - + - - - - - - + + + + + - - - + + + + + + - + - + - + - + - + - - - - - - - - - - - + + + + - - - - + + + + + - + - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -9471,24 +9677,24 @@ - + - + - + - + - + - + - + - + @@ -9501,29 +9707,29 @@ - + - + - + - + - + - - - - + + + + - - + + diff --git a/src/Option/Parser.php b/src/Option/Parser.php index 913ac5f..099ed25 100644 --- a/src/Option/Parser.php +++ b/src/Option/Parser.php @@ -3,6 +3,7 @@ namespace PSC\Library\Calc\Option; use PSC\Library\Calc\Option\Parser\Checkbox; +use PSC\Library\Calc\Option\Parser\Fieldset; use PSC\Library\Calc\Option\Parser\Headline; use PSC\Library\Calc\Option\Parser\Hidden; use PSC\Library\Calc\Option\Parser\Input; @@ -60,6 +61,9 @@ class Parser case 11: $obj = new Radio(); break; + case 12: + $obj = new Fieldset($this->paperContainer, $this->paperRepository, $this->templates); + break; } return $obj; @@ -105,6 +109,9 @@ class Parser case 'media': $obj = new Media(); break; + case 'fieldset': + $obj = new Fieldset($this->paperContainer, $this->paperRepository, $this->templates); + break; } return $obj; diff --git a/src/Option/Parser/Fieldset.php b/src/Option/Parser/Fieldset.php new file mode 100644 index 0000000..96bd07a --- /dev/null +++ b/src/Option/Parser/Fieldset.php @@ -0,0 +1,90 @@ +element = new \PSC\Library\Calc\Option\Type\Fieldset(); + $this->optionParser = new \PSC\Library\Calc\Option\Parser($paperContainer, $paperRepository, $templates); + } + + public function parseJson(): PSCFieldset + { + parent::parseJson(); + + foreach ($this->json['options'] as $option) { + $obj = $this->optionParser->getOptByJsonType($option['type'], $option['mode'] ?? null); + if ($obj) { + $obj->fromJson($option); + if ($obj instanceof Select) { + $obj->setPaperContainer($this->getPaperContainer()); + $obj->setPaperRepository($this->getPaperRepository()); + } + if ($obj instanceof Template) { + $element = $obj->parseJson(); + + $default = $element->getDefault(); + $node = $this->templates->xpath('//option[@id="' . $element->getSelect() . '"]'); + $obj = $this->optionParser->getOptByType($node[0]); + $element = $obj->parseJson(); + if ($default != '') { + $element->setDefault($default); + } + } else { + $element = $obj->parseJson(); + } + $this->element->addOption($element); + } + } + + return $this->element; + } + + public function parseXML(): PSCFieldset + { + parent::parseXML(); + + foreach ($this->node->children() as $key => $option) { + if ($key == 'option') { + $obj = $this->optionParser->getOptByType($option['type'], $option['mode'] ?? null); + if ($obj) { + $obj->fromXML($option); + if ($obj instanceof Select) { + $obj->setPaperContainer($this->paperContainer); + $obj->setPaperRepository($this->paperRepository); + } + if ($obj instanceof Template) { + $element = $obj->parseXML(); + + $default = $element->getDefault(); + $node = $this->templates->xpath('//option[@id="' . $element->getSelect() . '"]'); + $obj = $this->optionParser->getOptByType($node[0]['type'], $node[0]['mode'] ?? null); + $obj->fromXML($node[0]); + $element = $obj->parseXML(); + if ($default != '') { + $element->setDefault($default); + } + } else { + $element = $obj->parseXML(); + } + $this->element->addOption($element); + } + } + } + + return $this->element; + } +} diff --git a/src/Option/Type/Fieldset.php b/src/Option/Type/Fieldset.php new file mode 100644 index 0000000..4abe04e --- /dev/null +++ b/src/Option/Type/Fieldset.php @@ -0,0 +1,69 @@ +options = new \ArrayIterator(); + } + + public function addOption(Base $option): void + { + $this->options->append($option); + } + + public function getOptions(): \ArrayIterator + { + return $this->options; + } + + public function getOptionById(string $id): null|Base + { + return array_find((array) $this->options, function (Base $c) use ($id) { + return $c->getId() == $id; + }); + } + + public function generateXML(): array + { + $tmp = []; + $options = $this->options; + if (count($options) > 0) { + $tmp = ['option' => function () use ($options) { + $xml_options = []; + foreach ($options as $option) { + $xml_options[] = $option->generateXML(); + } + + return $xml_options; + }]; + } + + return array_merge_recursive($tmp, parent::generateXML()); + } + + public function generateJson(): \stdClass + { + $obj = new \stdClass(); + $obj->id = $this->getId(); + $obj->dependencys = []; + $obj->options = []; + $obj->type = 12; + foreach ($this->edgesCollectionContainer as $col) { + $obj->dependencys[] = $col->generateJson(); + } + foreach ($this->getOptions() as $opt) { + $obj->options[] = $opt->generateJson(); + } + return $obj; + } +} diff --git a/tests/Json/Type/FieldsetTest.php b/tests/Json/Type/FieldsetTest.php new file mode 100644 index 0000000..867ad96 --- /dev/null +++ b/tests/Json/Type/FieldsetTest.php @@ -0,0 +1,62 @@ +json = json_decode('{ + "id": "1", + "dependencys": [], + "type": 12, + "options": [ + { + "id": "auflage", + "name": "Auflage", + "default": "100", + "dependencys": [], + "placeHolder": "Placeholder", + "required": false, + "type": 2 + }, + { + "id": "seiten_umschlag", + "name": "Seiten Umschlag", + "default": "2", + "dependencys": [], + "placeHolder": "Placeholder", + "required": false, + "type": 2 + } + + ] + }', true); + + $this->xml = ''; + } + + public function testFromJson() + { + $parser = new Fieldset(null, null, null); + $parser->fromJson($this->json); + $obj = $parser->parseJson(); + $xml = ArrayToXml::convert($obj->generateXML(), 'option'); + self::assertXmlStringEqualsXmlString($xml, $this->xml); + } + + public function testFromXML() + { + $parser = new Fieldset(null, null, null); + $parser->fromXML(simplexml_load_string($this->xml)); + $obj = $parser->parseXML(); + self::assertJsonStringEqualsJsonString(json_encode($obj->generateJson()), json_encode($this->json)); + } +}