From be984ce279776d4513b4ca1bff05ebecafdd1bad Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Wed, 30 Dec 2015 21:34:10 +0000 Subject: view: thread using ' x ($max-1)) : ''; + $cb->write($x . ''); + } } $git = undef; Email::Address->purge_cache; @@ -637,12 +637,25 @@ sub ghost_parent { qq{[parent not found: <$html>]}; } -sub ghost_table { - my ($upfx, $mid, $level) = @_; - "" . - (INDENT x $level) . '
' .
-		ghost_parent($upfx, $mid) .
-		'
'; +sub __thread_adj_level { + my ($cb, $state, $level) = @_; + + return if $level <= 0; # flat output + my $max = $state->{max_level}; + if ($level > $max) { + $state->{max_level} = $level; + $$cb->write(($max ? '
  • ' : ''). '
    • '); + } else { + $$cb->write('
    • '); + } +} + +sub __ghost_flush { + my ($cb, $state, $upfx, $mid, $level) = @_; + + __thread_adj_level($cb, $state, $level); + $$cb->write('
      '. ghost_parent($upfx, $mid) .  '
      ' . + ($level > 0 ? '
    • ' : '')); } sub __thread_entry { @@ -655,20 +668,23 @@ sub __thread_entry { } or return; if ($state->{anchor_idx} == 0) { - thread_html_head($cb, $mime, $state); + thread_html_head($cb, $mime, $state, $level); } if (my $ghost = delete $state->{ghost}) { # n.b. ghost messages may only be parents, not children foreach my $g (@$ghost) { - $$cb->write(ghost_table('../../', @$g)); + __ghost_flush($cb, $state, '../../', @$g); } } + __thread_adj_level($cb, $state, $level); index_entry($$cb, $mime, $level, $state); + $$cb->write('') if $level > 0; + 1; } -sub __ghost_entry { +sub __ghost_prepare { my ($state, $node, $level) = @_; my $ghost = $state->{ghost} ||= []; push @$ghost, [ $node->messageid, $level ]; @@ -679,10 +695,10 @@ sub thread_entry { return unless $node; if (my $mime = $node->message) { unless (__thread_entry($cb, $git, $state, $mime, $level)) { - __ghost_entry($state, $node, $level); + __ghost_prepare($state, $node, $level); } } else { - __ghost_entry($state, $node, $level); + __ghost_prepare($state, $node, $level); } thread_entry($cb, $git, $state, $node->child, $level + 1); -- cgit v1.2.3-24-ge0c7