Skip to content

Commit ca3db70

Browse files
committed
🚿 switch -> match
1 parent ced6668 commit ca3db70

File tree

1 file changed

+93
-89
lines changed

1 file changed

+93
-89
lines changed

examples/svgMeltedModules.php

Lines changed: 93 additions & 89 deletions
Original file line numberDiff line numberDiff line change
@@ -71,14 +71,18 @@ protected function collectModules():array{
7171
return $paths;
7272
}
7373

74-
protected function moduleTransform(int $x, int $y, int $M_TYPE, int $M_TYPE_LAYER):string{
74+
protected function moduleTransform(int $x, int $y, int $M_TYPE, int $M_TYPE_LAYER):string|null{
7575
$bits = $this->matrix->checkNeighbours($x, $y, null);
7676
$check = fn(int $all, int $any = 0):bool => ($bits & ($all | (~$any & 0xff))) === $all;
7777

7878
$template = ($M_TYPE & QRMatrix::IS_DARK) === QRMatrix::IS_DARK
7979
? $this->darkModule($check, $this->options->inverseMelt)
8080
: $this->lightModule($check, $this->options->inverseMelt);
8181

82+
if($template === ''){
83+
return null;
84+
}
85+
8286
$r = $this->options->meltRadius;
8387

8488
return sprintf($template, $x, $y, $r, (1 - $r), (1 - 2 * $r));
@@ -89,58 +93,58 @@ protected function moduleTransform(int $x, int $y, int $M_TYPE, int $M_TYPE_LAYE
8993
*/
9094
protected function darkModule(Closure $check, bool $invert):string{
9195

92-
switch(true){
96+
return match(true){
9397
// 4 rounded
94-
case !$invert && $check(0b00000000, 0b01010101):
95-
case $invert && $check(0b00000000, 0b00000000):
96-
return 'M%1$s,%2$s m0,%3$s v%5$s q0,%3$s %3$s,%3$s h%5$s q%3$s,0 %3$s,-%3$s v-%5$s q0,-%3$s -%3$s,-%3$s h-%5$s q-%3$s,0 -%3$s,%3$sZ';
98+
!$invert && $check(0b00000000, 0b01010101),
99+
$invert && $check(0b00000000, 0b00000000)
100+
=> 'M%1$s,%2$s m0,%3$s v%5$s q0,%3$s %3$s,%3$s h%5$s q%3$s,0 %3$s,-%3$s v-%5$s q0,-%3$s -%3$s,-%3$s h-%5$s q-%3$s,0 -%3$s,%3$sZ',
97101

98102
// 3 rounded
99-
case $invert && $check(0b01000000, 0b00000000): // 135
100-
return 'M%1$s,%2$s m0,1 h%4$s q%3$s,0 %3$s,-%3$s v-%5$s q0,-%3$s -%3$s,-%3$s h-%5$s q-%3$s,0 -%3$s,%3$sZ';
101-
case $invert && $check(0b00000001, 0b00000000): // 357
102-
return 'M%1$s,%2$s v%4$s q0,%3$s %3$s,%3$s h%5$s q%3$s,0 %3$s,-%3$s v-%5$s q0,-%3$s -%3$s,-%3$sZ';
103-
case $invert && $check(0b00000100, 0b00000000): // 571
104-
return 'M%1$s,%2$s m1,0 v%4$s q0,%3$s -%3$s,%3$s h-%5$s q-%3$s,0 -%3$s,-%3$s v-%5$s q0,-%3$s %3$s,-%3$sZ';
105-
case $invert && $check(0b00010000, 0b00000000): // 713
106-
return 'M%1$s,%2$s m1,1 h-%4$s q-%3$s,0 -%3$s,-%3$s v-%5$s q0,-%3$s %3$s,-%3$s h%5$s q%3$s,0 %3$s,%3$sZ';
103+
$invert && $check(0b01000000, 0b00000000) // 135
104+
=> 'M%1$s,%2$s m0,1 h%4$s q%3$s,0 %3$s,-%3$s v-%5$s q0,-%3$s -%3$s,-%3$s h-%5$s q-%3$s,0 -%3$s,%3$sZ',
105+
$invert && $check(0b00000001, 0b00000000) // 357
106+
=> 'M%1$s,%2$s v%4$s q0,%3$s %3$s,%3$s h%5$s q%3$s,0 %3$s,-%3$s v-%5$s q0,-%3$s -%3$s,-%3$sZ',
107+
$invert && $check(0b00000100, 0b00000000) // 571
108+
=> 'M%1$s,%2$s m1,0 v%4$s q0,%3$s -%3$s,%3$s h-%5$s q-%3$s,0 -%3$s,-%3$s v-%5$s q0,-%3$s %3$s,-%3$sZ',
109+
$invert && $check(0b00010000, 0b00000000) // 713
110+
=> 'M%1$s,%2$s m1,1 h-%4$s q-%3$s,0 -%3$s,-%3$s v-%5$s q0,-%3$s %3$s,-%3$s h%5$s q%3$s,0 %3$s,%3$sZ',
107111

108112
// 2 rounded
109-
case !$invert && $check(0b00100000, 0b01010101): // 13
110-
case $invert && $check(0b00000000, 0b01110000):
111-
return 'M%1$s,%2$s m0,1 h1 v-%4$s q0,-%3$s -%3$s,-%3$s h-%5$s q-%3$s,0 -%3$s,%3$sZ';
112-
case !$invert && $check(0b10000000, 0b01010101): // 35
113-
case $invert && $check(0b00000000, 0b11000001):
114-
return 'M%1$s,%2$s v1 h%4$s q%3$s,0 %3$s,-%3$s v-%5$s q0,-%3$s -%3$s,-%3$sZ';
115-
case !$invert && $check(0b00000010, 0b01010101): // 57
116-
case $invert && $check(0b00000000, 0b00000111):
117-
return 'M%1$s,%2$s v%4$s q0,%3$s %3$s,%3$s h%5$s q%3$s,0 %3$s,-%3$s v-%4$sZ';
118-
case !$invert && $check(0b00001000, 0b01010101): // 71
119-
case $invert && $check(0b00000000, 0b00011100):
120-
return 'M%1$s,%2$s m1,1 v-1 h-%4$s q-%3$s,0 -%3$s,%3$s v%5$s q0,%3$s %3$s,%3$sZ';
113+
!$invert && $check(0b00100000, 0b01010101), // 13
114+
$invert && $check(0b00000000, 0b01110000)
115+
=> 'M%1$s,%2$s m0,1 h1 v-%4$s q0,-%3$s -%3$s,-%3$s h-%5$s q-%3$s,0 -%3$s,%3$sZ',
116+
!$invert && $check(0b10000000, 0b01010101), // 35
117+
$invert && $check(0b00000000, 0b11000001)
118+
=> 'M%1$s,%2$s v1 h%4$s q%3$s,0 %3$s,-%3$s v-%5$s q0,-%3$s -%3$s,-%3$sZ',
119+
!$invert && $check(0b00000010, 0b01010101), // 57
120+
$invert && $check(0b00000000, 0b00000111)
121+
=> 'M%1$s,%2$s v%4$s q0,%3$s %3$s,%3$s h%5$s q%3$s,0 %3$s,-%3$s v-%4$sZ',
122+
!$invert && $check(0b00001000, 0b01010101), // 71
123+
$invert && $check(0b00000000, 0b00011100)
124+
=> 'M%1$s,%2$s m1,1 v-1 h-%4$s q-%3$s,0 -%3$s,%3$s v%5$s q0,%3$s %3$s,%3$sZ',
121125
// diagonal
122-
case $invert && $check(0b01000100, 0b00000000): // 15
123-
return 'M%1$s,%2$s m0,1 h%4$s q%3$s,0 %3$s,-%3$s v-%4$s h-%4$s q-%3$s,0 -%3$s,%3$sZ';
124-
case $invert && $check(0b00010001, 0b00000000): // 37
125-
return 'M%1$s,%2$s h%4$s q%3$s,0 %3$s,%3$s v%4$s h-%4$s q-%3$s,0 -%3$s,-%3$sZ';
126+
$invert && $check(0b01000100, 0b00000000) // 15
127+
=> 'M%1$s,%2$s m0,1 h%4$s q%3$s,0 %3$s,-%3$s v-%4$s h-%4$s q-%3$s,0 -%3$s,%3$sZ',
128+
$invert && $check(0b00010001, 0b00000000) // 37
129+
=> 'M%1$s,%2$s h%4$s q%3$s,0 %3$s,%3$s v%4$s h-%4$s q-%3$s,0 -%3$s,-%3$sZ',
126130

127131
// 1 rounded
128-
case !$invert && $check(0b00101000, 0b01010101): // 1
129-
case $invert && $check(0b00000000, 0b01111100):
130-
return 'M%1$s,%2$s m0,1 h1 v-1 h-%4$s q-%3$s,0 -%3$s,%3$sZ';
131-
case !$invert && $check(0b10100000, 0b01010101): // 3
132-
case $invert && $check(0b00000000, 0b11110001):
133-
return 'M%1$s,%2$s h%4$s q%3$s,0 %3$s,%3$s v%4$s h-1Z';
134-
case !$invert && $check(0b10000010, 0b01010101): // 5
135-
case $invert && $check(0b00000000, 0b11000111):
136-
return 'M%1$s,%2$s h1 v%4$s q0,%3$s -%3$s,%3$s h-%4$sZ';
137-
case !$invert && $check(0b00001010, 0b01010101): // 7
138-
case $invert && $check(0b00000000, 0b00011111):
139-
return 'M%1$s,%2$s v%4$s q0,%3$s %3$s,%3$s h%4$s v-1Z';
140-
default:
141-
// full square
142-
return 'M%1$s,%2$s h1 v1 h-1Z';
143-
}
132+
!$invert && $check(0b00101000, 0b01010101), // 1
133+
$invert && $check(0b00000000, 0b01111100)
134+
=> 'M%1$s,%2$s m0,1 h1 v-1 h-%4$s q-%3$s,0 -%3$s,%3$sZ',
135+
!$invert && $check(0b10100000, 0b01010101), // 3
136+
$invert && $check(0b00000000, 0b11110001)
137+
=> 'M%1$s,%2$s h%4$s q%3$s,0 %3$s,%3$s v%4$s h-1Z',
138+
!$invert && $check(0b10000010, 0b01010101), // 5
139+
$invert && $check(0b00000000, 0b11000111)
140+
=> 'M%1$s,%2$s h1 v%4$s q0,%3$s -%3$s,%3$s h-%4$sZ',
141+
!$invert && $check(0b00001010, 0b01010101), // 7
142+
$invert && $check(0b00000000, 0b00011111)
143+
=> 'M%1$s,%2$s v%4$s q0,%3$s %3$s,%3$s h%4$s v-1Z',
144+
// full square
145+
default
146+
=> 'M%1$s,%2$s h1 v1 h-1Z',
147+
};
144148

145149
}
146150

@@ -149,58 +153,58 @@ protected function darkModule(Closure $check, bool $invert):string{
149153
*/
150154
protected function lightModule(Closure $check, bool $invert):string{
151155

152-
switch(true){
156+
return match(true){
153157
// 4 rounded
154-
case !$invert && $check(0b11111111, 0b01010101):
155-
case $invert && $check(0b10101010, 0b01010101):
156-
return 'M%1$s,%2$s h%3$s q-%3$s,0 -%3$s,%3$sz m1,0 v%3$s q0,-%3$s -%3$s,-%3$sz m0,1 h-%3$s q%3$s,0 %3$s,-%3$sz m-1,0 v-%3$s q0,%3$s %3$s,%3$sZ';
158+
!$invert && $check(0b11111111, 0b01010101),
159+
$invert && $check(0b10101010, 0b01010101)
160+
=> 'M%1$s,%2$s h%3$s q-%3$s,0 -%3$s,%3$sz m1,0 v%3$s q0,-%3$s -%3$s,-%3$sz m0,1 h-%3$s q%3$s,0 %3$s,-%3$sz m-1,0 v-%3$s q0,%3$s %3$s,%3$sZ',
157161

158162
// 3 rounded
159-
case !$invert && $check(0b10111111, 0b00000000): // 135
160-
return 'M%1$s,%2$s h%3$s q-%3$s,0 -%3$s,%3$sz m1,0 v%3$s q0,-%3$s -%3$s,-%3$sz m0,1 h-%3$s q%3$s,0 %3$s,-%3$sZ';
161-
case !$invert && $check(0b11111110, 0b00000000): // 357
162-
return 'M%1$s,%2$s m1,0 v%3$s q0,-%3$s -%3$s,-%3$sz m0,1 h-%3$s q%3$s,0 %3$s,-%3$sz m-1,0 v-%3$s q0,%3$s %3$s,%3$sZ';
163-
case !$invert && $check(0b11111011, 0b00000000): // 571
164-
return 'M%1$s,%2$s h%3$s q-%3$s,0 -%3$s,%3$sz m0,1 v-%3$s q0,%3$s %3$s,%3$sz m1,0 h-%3$s q%3$s,0 %3$s,-%3$sZ';
165-
case !$invert && $check(0b11101111, 0b00000000): // 713
166-
return 'M%1$s,%2$s h%3$s q-%3$s,0 -%3$s,%3$sz m0,1 v-%3$s q0,%3$s %3$s,%3$sz m1,-1 v%3$s q0,-%3$s -%3$s,-%3$sZ';
163+
!$invert && $check(0b10111111, 0b00000000) // 135
164+
=> 'M%1$s,%2$s h%3$s q-%3$s,0 -%3$s,%3$sz m1,0 v%3$s q0,-%3$s -%3$s,-%3$sz m0,1 h-%3$s q%3$s,0 %3$s,-%3$sZ',
165+
!$invert && $check(0b11111110, 0b00000000) // 357
166+
=> 'M%1$s,%2$s m1,0 v%3$s q0,-%3$s -%3$s,-%3$sz m0,1 h-%3$s q%3$s,0 %3$s,-%3$sz m-1,0 v-%3$s q0,%3$s %3$s,%3$sZ',
167+
!$invert && $check(0b11111011, 0b00000000) // 571
168+
=> 'M%1$s,%2$s h%3$s q-%3$s,0 -%3$s,%3$sz m0,1 v-%3$s q0,%3$s %3$s,%3$sz m1,0 h-%3$s q%3$s,0 %3$s,-%3$sZ',
169+
!$invert && $check(0b11101111, 0b00000000) // 713
170+
=> 'M%1$s,%2$s h%3$s q-%3$s,0 -%3$s,%3$sz m0,1 v-%3$s q0,%3$s %3$s,%3$sz m1,-1 v%3$s q0,-%3$s -%3$s,-%3$sZ',
167171

168172
// 2 rounded
169-
case !$invert && $check(0b10001111, 0b01110000): // 13
170-
case $invert && $check(0b10001010, 0b01010101):
171-
return 'M%1$s,%2$s h%3$s q-%3$s,0 -%3$s,%3$sz m1,0 v%3$s q0,-%3$s -%3$s,-%3$sZ';
172-
case !$invert && $check(0b00111110, 0b11000001): // 35
173-
case $invert && $check(0b00101010, 0b01010101):
174-
return 'M%1$s,%2$s m1,0 v%3$s q0,-%3$s -%3$s,-%3$sz m0,1 h-%3$s q%3$s,0 %3$s,-%3$sZ';
175-
case !$invert && $check(0b11111000, 0b00000111): // 57
176-
case $invert && $check(0b10101000, 0b01010101):
177-
return 'M%1$s,%2$s m1,1 h-%3$s q%3$s,0 %3$s,-%3$sz m-1,0 v-%3$s q0,%3$s %3$s,%3$sZ';
178-
case !$invert && $check(0b11100011, 0b00011100): // 71
179-
case $invert && $check(0b10100010, 0b01010101):
180-
return 'M%1$s,%2$s h%3$s q-%3$s,0 -%3$s,%3$sz m0,1 v-%3$s q0,%3$s %3$s,%3$sZ';
173+
!$invert && $check(0b10001111, 0b01110000), // 13
174+
$invert && $check(0b10001010, 0b01010101)
175+
=> 'M%1$s,%2$s h%3$s q-%3$s,0 -%3$s,%3$sz m1,0 v%3$s q0,-%3$s -%3$s,-%3$sZ',
176+
!$invert && $check(0b00111110, 0b11000001), // 35
177+
$invert && $check(0b00101010, 0b01010101)
178+
=> 'M%1$s,%2$s m1,0 v%3$s q0,-%3$s -%3$s,-%3$sz m0,1 h-%3$s q%3$s,0 %3$s,-%3$sZ',
179+
!$invert && $check(0b11111000, 0b00000111), // 57
180+
$invert && $check(0b10101000, 0b01010101)
181+
=> 'M%1$s,%2$s m1,1 h-%3$s q%3$s,0 %3$s,-%3$sz m-1,0 v-%3$s q0,%3$s %3$s,%3$sZ',
182+
!$invert && $check(0b11100011, 0b00011100), // 71
183+
$invert && $check(0b10100010, 0b01010101)
184+
=> 'M%1$s,%2$s h%3$s q-%3$s,0 -%3$s,%3$sz m0,1 v-%3$s q0,%3$s %3$s,%3$sZ',
181185
// diagonal
182-
case !$invert && $check(0b10111011, 0b00000000): // 15
183-
return 'M%1$s,%2$s h%3$s q-%3$s,0 -%3$s,%3$sz m1,1 h-%3$s q%3$s,0 %3$s,-%3$sZ';
184-
case !$invert && $check(0b11101110, 0b00000000): // 37
185-
return 'M%1$s,%2$s m1,0 v%3$s q0,-%3$s -%3$s,-%3$sz m-1,1 v-%3$s q0,%3$s %3$s,%3$sZ';
186+
!$invert && $check(0b10111011, 0b00000000) // 15
187+
=> 'M%1$s,%2$s h%3$s q-%3$s,0 -%3$s,%3$sz m1,1 h-%3$s q%3$s,0 %3$s,-%3$sZ',
188+
!$invert && $check(0b11101110, 0b00000000) // 37
189+
=> 'M%1$s,%2$s m1,0 v%3$s q0,-%3$s -%3$s,-%3$sz m-1,1 v-%3$s q0,%3$s %3$s,%3$sZ',
186190

187191
// 1 rounded
188-
case !$invert && $check(0b10000011, 0b01111100): // 1
189-
case $invert && $check(0b10000010, 0b01010101):
190-
return 'M%1$s,%2$s h%3$s q-%3$s,0 -%3$s,%3$sZ';
191-
case !$invert && $check(0b00001110, 0b11110001): // 3
192-
case $invert && $check(0b00001010, 0b01010101):
193-
return 'M%1$s,%2$s m1,0 v%3$s q0,-%3$s -%3$s,-%3$sZ';
194-
case !$invert && $check(0b00111000, 0b11000111): // 5
195-
case $invert && $check(0b00101000, 0b01010101):
196-
return 'M%1$s,%2$s m1,1 h-%3$s q%3$s,0 %3$s,-%3$sZ';
197-
case !$invert && $check(0b11100000, 0b00011111): // 7
198-
case $invert && $check(0b10100000, 0b01010101):
199-
return 'M%1$s,%2$s m0,1 v-%3$s q0,%3$s %3$s,%3$sZ';
200-
default:
201-
// empty block
202-
return '';
203-
}
192+
!$invert && $check(0b10000011, 0b01111100), // 1
193+
$invert && $check(0b10000010, 0b01010101)
194+
=> 'M%1$s,%2$s h%3$s q-%3$s,0 -%3$s,%3$sZ',
195+
!$invert && $check(0b00001110, 0b11110001), // 3
196+
$invert && $check(0b00001010, 0b01010101)
197+
=> 'M%1$s,%2$s m1,0 v%3$s q0,-%3$s -%3$s,-%3$sZ',
198+
!$invert && $check(0b00111000, 0b11000111), // 5
199+
$invert && $check(0b00101000, 0b01010101)
200+
=> 'M%1$s,%2$s m1,1 h-%3$s q%3$s,0 %3$s,-%3$sZ',
201+
!$invert && $check(0b11100000, 0b00011111), // 7
202+
$invert && $check(0b10100000, 0b01010101)
203+
=> 'M%1$s,%2$s m0,1 v-%3$s q0,%3$s %3$s,%3$sZ',
204+
// empty block
205+
default
206+
=> '',
207+
};
204208

205209
}
206210

0 commit comments

Comments
 (0)