From 235b55840c4066029e56ed91d6d3dc46c921a23b Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Sun, 10 Dec 2023 13:42:52 +0000 Subject: imap: replace Mail::Address fallback with AddressPP Our pure-Perl (PublicInbox::AddressPP) fallback is closer to the preferred Email::Address::XS (EAX) behavior than Mail::Address is for ->name support. EAX tends to be overkill with good spam filtering, and using our own fallback means life is easier for users with neither C/XS build tools nor a pre-built EAX package. --- lib/PublicInbox/AddressPP.pm | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'lib/PublicInbox/AddressPP.pm') diff --git a/lib/PublicInbox/AddressPP.pm b/lib/PublicInbox/AddressPP.pm index 6a3ae4fe..65ba36a9 100644 --- a/lib/PublicInbox/AddressPP.pm +++ b/lib/PublicInbox/AddressPP.pm @@ -1,7 +1,8 @@ -# Copyright (C) 2016-2021 all contributors +# Copyright (C) all contributors # License: AGPL-3.0+ package PublicInbox::AddressPP; use strict; +use v5.10.1; # TODO check regexps for unicode_strings compat # very loose regexes, here. We don't need RFC-compliance, # just enough to make thing sanely displayable and pass to git @@ -56,4 +57,13 @@ sub pairs { # for JMAP, RFC 8621 section 4.1.2.3 } emails($s) ]; } +# Mail::Address->name is inconsistent with Email::Address::XS, so we're +# doing our own thing, here: +sub objects { map { bless $_, __PACKAGE__ } @{pairs($_[0])} } + +# OO API for objects() results +sub user { (split(/@/, $_[0]->[1]))[0] } +sub host { (split(/@/, $_[0]->[1]))[1] } +sub name { $_[0]->[0] // user($_[0]) } + 1; -- cgit v1.2.3-24-ge0c7