$seen->{$id} = "#$id"; # save the anchor for children, later
}
+sub ghost_parent {
+ my ($upfx, $mid) = @_;
+ # 'subject dummy' is used internally by Mail::Thread
+ return '[no common parent]' if ($mid eq 'subject dummy');
+
+ $mid = PublicInbox::Hval->new_msgid($mid);
+ my $href = $mid->as_href;
+ my $html = $mid->as_html;
+ qq{[parent not found: <<a\nhref="$upfx../$href/">$html</a>>]};
+}
+
sub __thread_entry {
my ($cb, $git, $state, $mime, $level) = @_;
if (my $ghost = delete $state->{ghost}) {
# n.b. ghost messages may only be parents, not children
foreach my $g (@$ghost) {
- my $mid = PublicInbox::Hval->new_msgid($g->[0]);
- my $pfx = INDENT x $g->[1];
- my $href = $mid->as_href;
- my $html = $mid->as_html;
- $$cb->write("<table><tr><td>$pfx</td><td>" .
- PRE_WRAP .
- '[parent not found: <' .
- qq{<a\nhref="../../$href/">}.
- "$html</a>>]</pre></td></table>");
+ $$cb->write("<table\nsummary=ghost><tr><td>" .
+ (INDENT x $g->[1]) . "</td><td>" .
+ PRE_WRAP . ghost_parent('', $g->[0]) .
+ '</pre></td></table>');
}
}
index_entry($$cb, $mime, $level, $state);
_inline_header($dst, $state, $upfx, $mime, $level);
} else {
my $pfx = INDENT x $level;
- my $v = PublicInbox::Hval->new_msgid($node->messageid, 1);
- my $html = $v->as_html;
- my $href = $v->as_href;
- $$dst .= $pfx . '` [parent not found: <' .
- qq{<a\nhref="$upfx../$href/">}.
- "$html</a>>]\n";
+ $$dst .= $pfx . '` ' . ghost_parent($upfx, $node->messageid);
}
inline_dump($dst, $state, $upfx, $node->child, $level+1);
inline_dump($dst, $state, $upfx, $node->next, $level);