about summary refs log tree commit homepage
path: root/lib/PublicInbox/Smsg.pm
diff options
context:
space:
mode:
authorEric Wong <e@yhbt.net>2020-06-01 10:06:56 +0000
committerEric Wong <e@yhbt.net>2020-06-03 04:04:21 +0000
commit62b80b61d334361677e26e9ddb966e6bc5f8635d (patch)
treef10d0e4e7a0b7a1319535907581abae951e2183d /lib/PublicInbox/Smsg.pm
parentdee9a7231ca1019f56eea3596f0c428769e3eac1 (diff)
downloadpublic-inbox-62b80b61d334361677e26e9ddb966e6bc5f8635d.tar.gz
We'll continue to favor simpler data models that can be
used directly rather than wasting time and memory with
accessor APIs.

The ->from, ->to, -cc, ->mid, ->subject, >references methods can
all be trivially replaced by hash lookups since all their values
are stored in doc_data.  Most remaining callers of those methods
were test cases, anyways.

->from_name is only used in the PSGI code, so we can just
use ->psgi_cull to take care of populating the {from_name}
field.
Diffstat (limited to 'lib/PublicInbox/Smsg.pm')
-rw-r--r--lib/PublicInbox/Smsg.pm45
1 files changed, 7 insertions, 38 deletions
diff --git a/lib/PublicInbox/Smsg.pm b/lib/PublicInbox/Smsg.pm
index a7ee2e40..e8f9c9a3 100644
--- a/lib/PublicInbox/Smsg.pm
+++ b/lib/PublicInbox/Smsg.pm
@@ -28,7 +28,7 @@ sub to_doc_data {
         join("\n",
                 $self->{subject},
                 $self->{from},
-                $self->references,
+                $self->{references} // '',
                 $self->{to},
                 $self->{cc},
                 $self->{blob},
@@ -74,11 +74,15 @@ sub load_expand {
 
 sub psgi_cull ($) {
         my ($self) = @_;
-        from_name($self); # fill in {from_name} so we can delete {from}
+
+        # ghosts don't have ->{from}
+        my $from = delete($self->{from}) // '';
+        my @n = PublicInbox::Address::names($from);
+        $self->{from_name} = join(', ', @n);
 
         # drop NNTP-only fields which aren't relevant to PSGI results:
         # saves ~80K on a 200 item search result:
-        delete @$self{qw(from ts to cc bytes lines)};
+        delete @$self{qw(ts to cc bytes lines)};
         $self;
 }
 
@@ -90,11 +94,6 @@ sub from_mitem {
         psgi_cull(load_expand($self, $mitem->get_document));
 }
 
-sub __hdr ($$) {
-        my ($self, $field) = @_;
-        $self->{lc($field)};
-}
-
 # for Import and v1 non-SQLite WWW code paths
 sub populate {
         my ($self, $hdr, $v2w) = @_;
@@ -128,10 +127,6 @@ sub populate {
         $self->{mid} //= eval { mids($hdr)->[0] } // '';
 }
 
-sub subject ($) { __hdr($_[0], 'Subject') }
-sub to ($) { __hdr($_[0], 'To') }
-sub cc ($) { __hdr($_[0], 'Cc') }
-
 # no strftime, that is locale-dependent and not for RFC822
 my @DoW = qw(Sun Mon Tue Wed Thu Fri Sat);
 my @MoY = qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec);
@@ -146,32 +141,6 @@ sub date ($) {
 
 }
 
-sub from ($) {
-        my ($self) = @_;
-        my $from = __hdr($self, 'From');
-        if (defined $from && !defined $self->{from_name}) {
-                my @n = PublicInbox::Address::names($from);
-                $self->{from_name} = join(', ', @n);
-        }
-        $from;
-}
-
-sub from_name {
-        my ($self) = @_;
-        my $from_name = $self->{from_name};
-        return $from_name if defined $from_name;
-        $self->from;
-        $self->{from_name};
-}
-
-sub references {
-        my ($self) = @_;
-        my $x = $self->{references};
-        defined $x ? $x : '';
-}
-
-sub mid { $_[0]->{mid} }
-
 our $REPLY_RE = qr/^re:\s+/i;
 
 sub subject_normalized ($) {