lib/PublicInbox/Config.pm | 12 ++++++++++++ lib/PublicInbox/ManifestJsGz.pm | 8 ++------ diff --git a/lib/PublicInbox/Config.pm b/lib/PublicInbox/Config.pm index d2010f7af8f629b896be5c19030ecfc499220334..039eb445f6bbe54daadc977959e1101fae38af3c 100644 --- a/lib/PublicInbox/Config.pm +++ b/lib/PublicInbox/Config.pm @@ -488,4 +488,16 @@ undef; } } +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; diff --git a/lib/PublicInbox/ManifestJsGz.pm b/lib/PublicInbox/ManifestJsGz.pm index 16d2a87c49fd5f902d94218ec54427007161eb38..ab1478afcc38507245a8b41b9ac0ddfcb747d5c9 100644 --- a/lib/PublicInbox/ManifestJsGz.pm +++ b/lib/PublicInbox/ManifestJsGz.pm @@ -10,17 +10,13 @@ use Digest::SHA (); use File::Spec (); use bytes (); # length use PublicInbox::Inbox; +use PublicInbox::Config; use PublicInbox::Git; use IO::Compress::Gzip qw(gzip); use HTTP::Date qw(time2str); *try_cat = \&PublicInbox::Inbox::try_cat; -our $json; -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; -} +our $json = PublicInbox::Config::json(); # called by WwwListing sub url_regexp {