$self->{-by_name}->{$name} // _fill($self, "publicinbox.$name");
}
+sub lookup_ei {
+ my ($self, $name) = @_;
+ $self->{-ei_by_name}->{$name} //= _fill_ei($self, "extindex.$name");
+}
+
+# special case for [extindex "all"]
+sub ALL { lookup_ei($_[0], 'all') }
+
sub each_inbox {
my ($self, $cb, @arg) = @_;
# may auto-vivify if config file is non-existent:
}
}
if (my $ng = $ibx->{newsgroup}) {
- $self->{-by_newsgroup}->{$ng} = $ibx;
+ # PublicInbox::NNTPD does stricter (and more expensive checks),
+ # keep this lean for startup speed
+ $self->{-by_newsgroup}->{$ng} = $ibx unless ref($ng);
}
$self->{-by_name}->{$name} = $ibx;
if ($ibx->{obfuscate}) {
$ibx
}
+sub _fill_ei ($$) {
+ my ($self, $pfx) = @_;
+ require PublicInbox::ExtSearch;
+ my $d = $self->{"$pfx.topdir"};
+ defined($d) && -d $d ? PublicInbox::ExtSearch->new($d) : undef;
+}
+
sub urlmatch {
my ($self, $key, $url) = @_;
state $urlmatch_broken; # requires git 1.8.5
}
}
+sub json {
+ state $json;
+ $json //= do {
+ for my $mod (qw(Cpanel::JSON::XS JSON::MaybeXS JSON JSON::PP)) {
+ eval "require $mod" or next;
+ # ->ascii encodes non-ASCII to "\uXXXX"
+ $json = $mod->new->ascii(1) and last;
+ }
+ $json;
+ };
+}
+
1;