Commit Diff


commit - 85fd8f63257c3c52f77790fd8e823737c9640b3b
commit + bd3babdf4467a7c440dd4fd8c66d8bbd1392d3ff
blob - 651a8a9b8a3e3f9e704f3838f6d4655e590cdab1
blob + 91f6d905d38a45097c6485b84619b9cb26c759d0
--- GotMArc.pm
+++ GotMArc.pm
@@ -10,7 +10,8 @@ use Exporter;
 use File::Basename;
 
 our @ISA = qw(Exporter);
-our @EXPORT_OK = qw(san urlencode parse initpage endpage index_header thread_header);
+our @EXPORT_OK = qw(san urlencode parse initpage endpage index_header
+    thread_header threntry);
 
 sub san {
 	my $str = shift;
@@ -119,4 +120,34 @@ sub thread_header {
 	say $fh "</header>\n";
 }
 
+sub threntry {
+	my ($fh, $type, $base, $last_level, $mail, $cur) = @_;
+	my $level = $mail->{level} - $base;
+
+	say $fh "</ul></li>" x ($last_level - $level) if $last_level > $level;
+	say $fh "<li><ul>" if $last_level < $level;
+
+	my $encmid = urlencode $mail->{mid};
+
+	print $fh "<li id='$encmid' class='mail'>";
+	print $fh "<p class='mail-meta'>";
+	print $fh "<time>$mail->{date}</time> ";
+	print $fh "<span class='from'>$mail->{from}</span>";
+	print $fh "<span class='colon'>:</span>";
+	print $fh "</p>";
+	print $fh "<p class='subject'>";
+
+	my $subj = $mail->{subj};
+	if (!defined($cur) || $mail->{mid} ne $cur->{mid}) {
+		print $fh "<a href='/$type/$encmid.html'>$subj</a>";
+	} else {
+		print $fh "<span>$subj</span>";
+	}
+
+	print $fh "</p>";
+	print $fh "</li>";
+
+	return $level;
+}
+
 1;
blob - 9c151d9caf0e5ce8eaf0ec3754f35bd7af8fc7d1
blob + f8c8f11646bf8e6a90e6d111c702c164c762c5cd
--- mexp
+++ mexp
@@ -16,7 +16,7 @@ use OpenBSD::Pledge;
 use OpenBSD::Unveil;
 
 use lib ".";
-use GotMArc qw(parse san urlencode initpage endpage thread_header);
+use GotMArc qw(parse san urlencode initpage endpage thread_header threntry);
 
 my $outdir = $ENV{'OUTDIR'};
 die 'Set $OUTDIR' unless defined $outdir;
@@ -99,36 +99,6 @@ sub min_level {
 		$l = $_->{level} if $_->{level} < $l;
 	}
 	return $l;
-}
-
-sub threntry {
-	my ($fh, $base, $last_level, $cur, $mail) = @_;
-	my $level = $mail->{level} - $base;
-
-	say $fh "</ul></li>" x ($last_level - $level) if $last_level > $level;
-	say $fh "<li><ul>" if $last_level < $level;
-
-	my $encmid = urlencode $mail->{mid};
-
-	print $fh "<li id='$encmid' class='mail'>";
-	print $fh "<p class='mail-meta'>";
-	print $fh "<time>$mail->{date}</time> ";
-	print $fh "<span class='from'>$mail->{from}</span>";
-	print $fh "<span class='colon'>:</span>";
-	print $fh "</p>";
-	print $fh "<p class='subject'>";
-
-	my $subj = $mail->{subj};
-	if ($mail->{mid} ne $cur->{mid}) {
-		print $fh "<a href='/mail/$encmid.html'>$subj</a>";
-	} else {
-		print $fh "<span>$subj</span>";
-	}
-
-	print $fh "</p>";
-	print $fh "</li>\n";
-
-	return $level;
 }
 
 sub thrslice {
@@ -141,7 +111,7 @@ sub thrslice {
 	my $level = 0;
 	print $fh "<div class='thread'>";
 	print $fh "<ul class='mails'>";
-	$level = threntry $fh, $base, $level, $mail, $_ for @thread;
+	$level = threntry $fh, "mail", $base, $level, $_, $mail for @thread;
 	print $fh "</ul></li>" x $level;
 	print $fh "</ul></div>";
 }
blob - fd403de1064803cc3e2e1c54403634e992f97321
blob + 5bc5e0b9eed800030b21dbef52c2a654cb166edc
--- mkindex
+++ mkindex
@@ -15,7 +15,8 @@ use OpenBSD::Pledge;
 use OpenBSD::Unveil;
 
 use lib ".";
-use GotMArc qw(parse san urlencode initpage endpage index_header thread_header);
+use GotMArc qw(parse san urlencode initpage endpage index_header
+    thread_header threntry);
 
 my $outdir = $ENV{'OUTDIR'};
 die 'Set $OUTDIR' unless defined $outdir;
@@ -143,35 +144,19 @@ sub nextthread {
 	print $tfh "<div class='thread'><ul class='mails'>\n";
 }
 
-sub entry {
-	my ($fh, $type, $mid, $date, $from, $subj) = @_;
-	my $encmid = urlencode $mid;
-
-	print $fh "<li id='$encmid' class='mail'>";
-	print $fh "<p class='mail-meta'>";
-	print $fh "<time>$date</time> ";
-	print $fh "<span class='from'>$from</span>";
-	print $fh "<span class='colon'>:</span>";
-	print $fh "</p>";
-	print $fh "<p class='subject'>";
-	print $fh "<a href='/$type/$encmid.html'>$subj</a>";
-	print $fh "</p>";
-	print $fh "</li>\n";
-}
-
 sub index_entry {
 	my ($fh, $mid, $date, $from, $subj) = @_;
 
-	entry $fh, "thread", $mid, $date, $from, $subj;
-}
+	# synthetic mail hash
+	my $mail = {
+		mid => $mid,
+		level => 0,
+		date => $date,
+		from => $from,
+		subj => $subj,
+	};
 
-sub thread_entry {
-	my ($fh, $mid, $level, $date, $from, $subj) = @_;
-
-	say $fh "</ul>\n</li>" x ($last_level - $level) if $last_level > $level;
-	say $fh "<li>\n<ul>" if $last_level < $level;
-
-	entry $fh, "mail", $mid, $date, $from, $subj;
+	threntry $fh, "thread", 0, 0, $mail;
 }
 
 unveil($outdir, "rwc") or die "unveil $outdir: $!";
@@ -204,9 +189,7 @@ while (<>) {
 		$from_day = maxs $day, $from_day;
 	}
 
-	thread_entry($tfh, $mail->{mid}, $mail->{level}, $mail->{date},
-	    $mail->{from}, $mail->{subj});
-	$last_level = $mail->{level};
+	$last_level = threntry $tfh, "mail", 0, $last_level, $mail;
 	$threads_seen = 1;
 
 	index_entry $pfh, $last_tid, $last_date, $last_from, $last_subj