-# Copyright (C) 2016-2019 all contributors <meta@public-inbox.org>
+# Copyright (C) 2016-2020 all contributors <meta@public-inbox.org>
# License: AGPL-3.0+ <https://www.gnu.org/licenses/agpl-3.0.txt>
#
# Represents a public-inbox (which may have multiple mailing addresses)
sub description {
my ($self) = @_;
- my $desc = $self->{description};
- return $desc if defined $desc;
- $desc = try_cat("$self->{inboxdir}/description");
- local $/ = "\n";
- chomp $desc;
- $desc =~ s/\s+/ /smg;
- $desc = '($INBOX_DIR/description missing)' if $desc eq '';
- $self->{description} = $desc;
+ ($self->{description} //= do {
+ my $desc = try_cat("$self->{inboxdir}/description");
+ local $/ = "\n";
+ chomp $desc;
+ $desc =~ s/\s+/ /smg;
+ $desc eq '' ? undef : $desc;
+ }) // '($INBOX_DIR/description missing)';
}
sub cloneurl {
my ($self) = @_;
- my $url = $self->{cloneurl};
- return $url if $url;
- $url = try_cat("$self->{inboxdir}/cloneurl");
- my @url = split(/\s+/s, $url);
- local $/ = "\n";
- chomp @url;
- $self->{cloneurl} = \@url;
+ ($self->{cloneurl} //= do {
+ my $s = try_cat("$self->{inboxdir}/cloneurl");
+ my @urls = split(/\s+/s, $s);
+ scalar(@urls) ? \@urls : undef
+ }) // [];
}
sub base_url {
$ret;
}
+# for v1 users w/o SQLite only
sub msg_by_path ($$;$) {
my ($self, $path, $ref) = @_;
- # TODO: allow other refs:
my $str = git($self)->cat_file('HEAD:'.$path, $ref);
$$str =~ s/\A[\r\n]*From [^\r\n]*\r?\n//s if $str;
$str;
# favor the Message-ID we used for the NNTP article number:
defined(my $num = mid2num($self, $mid)) or return;
my $smsg = $over->get_art($num) or return;
- PublicInbox::SearchMsg::psgi_cull($smsg);
+ PublicInbox::Smsg::psgi_cull($smsg);
}
sub msg_by_mid ($$;$) {
git($self)->modified; # v1
}
+# returns prefix => pathname mapping
+# (pathname is NOT public, but prefix is used for Xapian queries)
+sub altid_map ($) {
+ my ($self) = @_;
+ $self->{-altid_map} //= eval {
+ require PublicInbox::AltId;
+ my $altid = $self->{altid} or return {};
+ my %h = map {;
+ my $x = PublicInbox::AltId->new($self, $_);
+ "$x->{prefix}" => $x->{filename}
+ } @$altid;
+ \%h;
+ } // {};
+}
+
1;