@@ -486,51 +486,63 @@ defmodule Mail.Parsers.RFC2822 do
486
486
acc \\ ""
487
487
)
488
488
489
- defp parse_structured_header_value ( "" , value , [ { key , nil } | sub_types ] , _part , acc ) ,
490
- do: [ value | Enum . reverse ( [ { key , acc } | sub_types ] ) ]
489
+ defp parse_structured_header_value ( "" , value , [ { key , nil } | sub_types ] , _part , acc ) do
490
+ [ value | Enum . reverse ( [ { key , acc } | sub_types ] ) ]
491
+ end
491
492
492
- defp parse_structured_header_value ( "" , nil , [ ] , _part , acc ) ,
493
- do: acc
493
+ defp parse_structured_header_value ( "" , value , sub_types , :param_name , _acc ) do
494
+ [ value | Enum . reverse ( sub_types ) ]
495
+ end
494
496
495
- defp parse_structured_header_value ( "" , value , sub_types , _part , "" ) ,
496
- do: [ value | Enum . reverse ( sub_types ) ]
497
+ defp parse_structured_header_value ( "" , nil , [ ] , _part , acc ) do
498
+ acc
499
+ end
497
500
498
- defp parse_structured_header_value ( "" , value , [ ] , _part , acc ) ,
499
- do: [ value , String . trim ( acc ) ]
501
+ defp parse_structured_header_value ( "" , value , [ _ | _ ] = sub_types , _part , "" ) do
502
+ [ value | Enum . reverse ( sub_types ) ]
503
+ end
500
504
501
- defp parse_structured_header_value ( "" , value , sub_types , part , acc ) ,
502
- do: parse_structured_header_value ( "" , value , sub_types , part , String . trim ( acc ) )
505
+ defp parse_structured_header_value ( "" , value , [ ] , _part , acc ) do
506
+ [ value , String . trim ( acc ) ]
507
+ end
508
+
509
+ defp parse_structured_header_value ( "" , value , sub_types , part , acc ) do
510
+ parse_structured_header_value ( "" , value , sub_types , part , String . trim ( acc ) )
511
+ end
503
512
504
513
defp parse_structured_header_value ( << "\" " , rest :: binary >> , value , sub_types , part , acc ) do
505
514
{ string , rest } = parse_quoted_string ( rest )
506
515
parse_structured_header_value ( rest , value , sub_types , part , << acc :: binary , string :: binary >> )
507
516
end
508
517
509
518
defp parse_structured_header_value ( << ";" , rest :: binary >> , nil , sub_types , part , acc )
510
- when part in [ :value , :param_value ] ,
511
- do: parse_structured_header_value ( rest , acc , sub_types , :param_name , "" )
519
+ when part in [ :value , :param_value ] do
520
+ parse_structured_header_value ( rest , acc , sub_types , :param_name , "" )
521
+ end
512
522
513
523
defp parse_structured_header_value (
514
524
<< ";" , rest :: binary >> ,
515
525
value ,
516
526
[ { key , nil } | sub_types ] ,
517
527
:param_value ,
518
528
acc
519
- ) ,
520
- do: parse_structured_header_value ( rest , value , [ { key , acc } | sub_types ] , :param_name , "" )
529
+ ) do
530
+ parse_structured_header_value ( rest , value , [ { key , acc } | sub_types ] , :param_name , "" )
531
+ end
521
532
522
- defp parse_structured_header_value ( << "=" , rest :: binary >> , value , sub_types , :param_name , acc ) ,
523
- do:
524
- parse_structured_header_value (
525
- rest ,
526
- value ,
527
- [ { key_to_atom ( acc ) , nil } | sub_types ] ,
528
- :param_value ,
529
- ""
530
- )
531
-
532
- defp parse_structured_header_value ( << char :: utf8 , rest :: binary >> , value , sub_types , part , acc ) ,
533
- do: parse_structured_header_value ( rest , value , sub_types , part , << acc :: binary , char :: utf8 >> )
533
+ defp parse_structured_header_value ( << "=" , rest :: binary >> , value , sub_types , :param_name , acc ) do
534
+ parse_structured_header_value (
535
+ rest ,
536
+ value ,
537
+ [ { key_to_atom ( acc ) , nil } | sub_types ] ,
538
+ :param_value ,
539
+ ""
540
+ )
541
+ end
542
+
543
+ defp parse_structured_header_value ( << char :: utf8 , rest :: binary >> , value , sub_types , part , acc ) do
544
+ parse_structured_header_value ( rest , value , sub_types , part , << acc :: binary , char :: utf8 >> )
545
+ end
534
546
535
547
defp parse_quoted_string ( string , acc \\ "" )
536
548
0 commit comments