diff options
Diffstat (limited to 'lib/PublicInbox/Address.pm')
-rw-r--r-- | lib/PublicInbox/Address.pm | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/lib/PublicInbox/Address.pm b/lib/PublicInbox/Address.pm index 2c9c4395..3a59945c 100644 --- a/lib/PublicInbox/Address.pm +++ b/lib/PublicInbox/Address.pm @@ -1,9 +1,8 @@ -# Copyright (C) 2016-2021 all contributors <meta@public-inbox.org> +# Copyright (C) all contributors <meta@public-inbox.org> # License: AGPL-3.0+ <https://www.gnu.org/licenses/agpl-3.0.txt> package PublicInbox::Address; -use strict; -use v5.10.1; -use parent 'Exporter'; +use v5.12; +use parent qw(Exporter); our @EXPORT_OK = qw(pairs); sub xs_emails { @@ -20,8 +19,11 @@ sub xs_names { } sub xs_pairs { # for JMAP, RFC 8621 section 4.1.2.3 - [ map { # LHS (name) may be undef - [ $_->phrase // $_->comment, $_->address ] + [ map { # LHS (name) may be undef if there's an address + my @p = ($_->phrase // $_->comment, $_->address); + # show original if totally bogus: + $p[0] = $_->original unless defined $p[1]; + \@p; } parse_email_addresses($_[0]) ]; } @@ -31,6 +33,7 @@ eval { *emails = \&xs_emails; *names = \&xs_names; *pairs = \&xs_pairs; + *objects = sub { Email::Address::XS->parse(@_) }; }; if ($@) { @@ -38,6 +41,7 @@ if ($@) { *emails = \&PublicInbox::AddressPP::emails; *names = \&PublicInbox::AddressPP::names; *pairs = \&PublicInbox::AddressPP::pairs; + *objects = \&PublicInbox::AddressPP::objects; } 1; |