commit - 85fd8f63257c3c52f77790fd8e823737c9640b3b
commit + bd3babdf4467a7c440dd4fd8c66d8bbd1392d3ff
blob - 651a8a9b8a3e3f9e704f3838f6d4655e590cdab1
blob + 91f6d905d38a45097c6485b84619b9cb26c759d0
--- GotMArc.pm
+++ GotMArc.pm
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;
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
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;
$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 {
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
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;
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: $!";
$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