File tree 2 files changed +31
-0
lines changed
2 files changed +31
-0
lines changed Original file line number Diff line number Diff line change 8
8
namespace ZBateson \MailMimeParser \Header \Consumer ;
9
9
10
10
use Psr \Log \LoggerInterface ;
11
+ use Iterator ;
11
12
use ZBateson \MailMimeParser \Header \Part \AddressGroupPart ;
12
13
use ZBateson \MailMimeParser \Header \Part \HeaderPartFactory ;
13
14
@@ -72,6 +73,22 @@ protected function isStartToken(string $token) : bool
72
73
return ($ token === ': ' );
73
74
}
74
75
76
+ /**
77
+ * Overridden to always call processParts even for an empty set of
78
+ * addresses, since a group could be empty.
79
+ *
80
+ * @param Iterator $tokens
81
+ * @return IHeaderPart[]
82
+ */
83
+ protected function parseTokensIntoParts (Iterator $ tokens ) : array
84
+ {
85
+ $ ret = parent ::parseTokensIntoParts ($ tokens );
86
+ if ($ ret === []) {
87
+ return $ this ->processParts ([]);
88
+ }
89
+ return $ ret ;
90
+ }
91
+
75
92
/**
76
93
* Performs post-processing on parsed parts.
77
94
*
Original file line number Diff line number Diff line change @@ -230,4 +230,18 @@ public function testGetGroups() : void
230
230
$ this ->assertSame ($ parts [0 ], $ groups [0 ]);
231
231
$ this ->assertSame ($ parts [1 ], $ groups [1 ]);
232
232
}
233
+
234
+ public function testEmptyAddressGroup () : void
235
+ {
236
+ $ header = $ this ->newAddressHeader (
237
+ 'Cc ' ,
238
+ 'House Stark:; '
239
+ );
240
+ $ parts = $ header ->getParts ();
241
+ $ this ->assertCount (1 , $ parts );
242
+
243
+ $ starks = $ parts [0 ];
244
+ $ this ->assertEquals ('House Stark ' , $ starks ->getName ());
245
+ $ this ->assertCount (0 , $ starks ->getAddresses ());
246
+ }
233
247
}
You can’t perform that action at this time.
0 commit comments