@@ -159,8 +159,6 @@ public function has(string $key): bool
159
159
*/
160
160
public function get (string $ key ): Item |InnerList
161
161
{
162
- self ::validateKey ($ key );
163
-
164
162
if (!array_key_exists ($ key , $ this ->members )) {
165
163
throw InvalidOffset::dueToKeyNotFound ($ key );
166
164
}
@@ -226,19 +224,19 @@ public function pair(int $index): array
226
224
*/
227
225
public function set (string $ key , InnerList |Item |ByteSequence |Token |array |bool |int |float |string $ member ): void
228
226
{
229
- self ::validateKey ($ key );
230
-
231
- $ this ->members [$ key ] = self ::filterMember ($ member );
227
+ $ this ->members [self ::filterKey ($ key )] = self ::filterMember ($ member );
232
228
}
233
229
234
230
/**
235
231
* Validate the instance key against RFC8941 rules.
236
232
*/
237
- private static function validateKey (string $ key ): void
233
+ private static function filterKey (string $ key ): string
238
234
{
239
235
if (1 !== preg_match ('/^[a-z*][a-z0-9.*_-]*$/ ' , $ key )) {
240
236
throw new SyntaxError ("The dictionary key ` $ key` contains invalid characters. " );
241
237
}
238
+
239
+ return $ key ;
242
240
}
243
241
244
242
/**
@@ -251,7 +249,7 @@ private static function filterMember(InnerList|Item|ByteSequence|Token|array|boo
251
249
{
252
250
return match (true ) {
253
251
$ member instanceof InnerList, $ member instanceof Item => $ member ,
254
- is_iterable ($ member ) => InnerList::fromList (...$ member ),
252
+ is_array ($ member ) => InnerList::fromList (...$ member ),
255
253
default => Item::from ($ member ),
256
254
};
257
255
}
@@ -284,11 +282,9 @@ public function clear(): void
284
282
*/
285
283
public function append (string $ key , InnerList |Item |ByteSequence |Token |array |bool |int |float |string $ member ): void
286
284
{
287
- self ::validateKey ($ key );
288
-
289
285
unset($ this ->members [$ key ]);
290
286
291
- $ this ->members [$ key ] = self ::filterMember ($ member );
287
+ $ this ->members [self :: filterKey ( $ key) ] = self ::filterMember ($ member );
292
288
}
293
289
294
290
/**
@@ -301,11 +297,9 @@ public function append(string $key, InnerList|Item|ByteSequence|Token|array|bool
301
297
*/
302
298
public function prepend (string $ key , InnerList |Item |ByteSequence |Token |array |bool |int |float |string $ member ): void
303
299
{
304
- self ::validateKey ($ key );
305
-
306
300
unset($ this ->members [$ key ]);
307
301
308
- $ this ->members = [...[$ key => self ::filterMember ($ member )], ...$ this ->members ];
302
+ $ this ->members = [...[self :: filterKey ( $ key) => self ::filterMember ($ member )], ...$ this ->members ];
309
303
}
310
304
311
305
/**
0 commit comments