Commit Diff


commit - 181eab119235a3dc75592fbbb8b8c6add017db75
commit + 8f7a9a4697c9b6250d14b65d66d44929975f40c8
blob - f5b7f092c6cc63635fcba6e020e6a2196a58e99c
blob + 2f7230899ca5f4d92033805a91393b01842bfa75
--- GotMArc.pm
+++ GotMArc.pm
@@ -11,7 +11,7 @@ use File::Basename;
 
 our @ISA = qw(Exporter);
 our @EXPORT_OK = qw(san urlencode parse initpage endpage index_header
-    thread_header threntry);
+    thread_header threntry thrslice);
 
 sub san {
 	my $str = shift;
@@ -91,11 +91,13 @@ sub index_header {
 }
 
 sub thread_header {
-	my ($fh, $tid, $mid, $e) = @_;
+	my ($fh, $e, $mail, $p, $n, $spoiler) = @_;
+	$spoiler = 0 unless defined $spoiler;
+
 	my @entries = @$e;
 
-	my $enctid = urlencode $tid if defined $tid;
-	my $encmid = urlencode $mid if defined $mid;
+	my $enctid = urlencode $mail->{tid} if defined $mail;
+	my $encmid = urlencode $mail->{mid} if defined $mail;
 
 	print $fh "<header class='mail-header'>\n";
 
@@ -118,6 +120,11 @@ sub thread_header {
 	say $fh "<p>Download raw <a href='/text/$encmid.txt'>body</a>.</p>"
 	    if defined $encmid;
 
+	say $fh "<details>" if $spoiler;
+	say $fh "<summary>Thread</summary>" if $spoiler;
+	thrslice($fh, $mail, $p, $n) if defined $p and defined $n;
+	say $fh "</details>" if $spoiler;
+
 	say $fh "</header>\n";
 }
 
@@ -151,4 +158,28 @@ sub threntry {
 	return $level;
 }
 
+sub min_level {
+	my $l = 999;
+	return 0 unless @_;
+	for (@_) {
+		$l = $_->{level} if $_->{level} < $l;
+	}
+	return $l;
+}
+
+sub thrslice {
+	my ($fh, $mail, $p, $n) = @_;
+	my @prev = @{$p};
+	my @next = @{$n};
+	my @thread = (@prev, $mail, @next);
+	return unless @thread;
+	my $base = min_level @thread;
+	my $level = 0;
+	print $fh "<div class='thread'>";
+	print $fh "<ul class='mails'>";
+	$level = threntry $fh, "mail", $base, $level, $_, $mail for @thread;
+	print $fh "</ul></li>" x $level;
+	print $fh "</ul></div>";
+}
+
 1;
blob - 658e1b2ac3106a6041b84c1bdfa64996a592a2e8
blob + 7edfd18e5899171341b45a0ac8d248b83b04ed2b
--- mexp
+++ mexp
@@ -16,7 +16,8 @@ use OpenBSD::Pledge;
 use OpenBSD::Unveil;
 
 use lib ".";
-use GotMArc qw(parse san urlencode initpage endpage thread_header threntry);
+use GotMArc qw(parse san urlencode initpage endpage thread_header
+    threntry thrslice);
 
 my $outdir = $ENV{'OUTDIR'};
 die 'Set $OUTDIR' unless defined $outdir;
@@ -90,30 +91,6 @@ sub thrnav {
 	print $fh "</nav>";
 }
 
-sub min_level {
-	my $l = 999;
-	return 0 unless @_;
-	for (@_) {
-		$l = $_->{level} if $_->{level} < $l;
-	}
-	return $l;
-}
-
-sub thrslice {
-	my ($fh, $mail, $p, $n) = @_;
-	my @prev = @{$p};
-	my @next = @{$n};
-	my @thread = (@prev, $mail, @next);
-	return unless @thread;
-	my $base = min_level @thread;
-	my $level = 0;
-	print $fh "<div class='thread'>";
-	print $fh "<ul class='mails'>";
-	$level = threntry $fh, "mail", $base, $level, $_, $mail for @thread;
-	print $fh "</ul></li>" x $level;
-	print $fh "</ul></div>";
-}
-
 sub export_one {
 	my ($mail, $prev, $next) = @_;
 	my $dest = "$outdir/mail/$mail->{mid}.html";
@@ -139,7 +116,7 @@ sub export_one {
 	}
 	say $text "";
 
-	thread_header $fh, $mail->{tid}, $mail->{mid}, \@hdrs;
+	thread_header $fh, \@hdrs, $mail, $prev, $next, 1;
 
 	print $fh "<pre>";
 	while (<$mshow>) {
blob - ad5a88859f2a7ce765c00e2adf4a80cb056cb44e
blob + d659ee67cdec71fd62bf3467e94662909d08c354
--- mkindex
+++ mkindex
@@ -152,7 +152,7 @@ sub nextthread {
 	my $dest = "$outdir/thread/$mid.html";
 	open($tfh, '>', $dest) or die "can't open $dest: $!";
 	initpage($tfh, $subj);
-	thread_header $tfh, undef, undef, ["Thread: $subj"];
+	thread_header $tfh, ["Thread: $subj"];
 	print $tfh "<div class='thread'><ul class='mails'>\n";
 }