From a01b6d3b95b272b494dc07d932e015ada9dfdb05 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Wed, 5 Oct 2016 23:47:24 +0000 Subject: thread: remove iterate_down Unnecessary subs and complexity. This was hiding the fact that $before is never used. --- lib/PublicInbox/SearchThread.pm | 39 +++++++++++++-------------------------- 1 file changed, 13 insertions(+), 26 deletions(-) (limited to 'lib') diff --git a/lib/PublicInbox/SearchThread.pm b/lib/PublicInbox/SearchThread.pm index a1616620..dad783ef 100644 --- a/lib/PublicInbox/SearchThread.pm +++ b/lib/PublicInbox/SearchThread.pm @@ -81,8 +81,7 @@ sub _add_message ($$) { } sub order { - my $self = shift; - my $ordersub = shift; + my ($self, $ordersub) = @_; # make a fake root my $root = _get_cont_for_id($self, 'fakeroot'); @@ -174,22 +173,6 @@ sub set_children { } while ($walk); } -sub order_children { - my $self = shift; - my $ordersub = shift; - - return unless $ordersub; - - my $sub = sub { - my $cont = shift; - my $children = $cont->children; - return if @$children < 2; - $cont->set_children( $ordersub->( $children ) ); - }; - $self->iterate_down( undef, $sub ); - undef $sub; -} - # non-recursive version of recurse_down to avoid stack depth warnings sub recurse_down { my ($self, $callback) = @_; @@ -216,17 +199,14 @@ sub recurse_down { } } -sub iterate_down { - my $self = shift; - my ($before, $after) = @_; +sub order_children { + my ($walk, $ordersub) = @_; my %seen; - my $walk = $self; my $depth = 0; my @visited; while ($walk) { - push @visited, [ $walk, $depth ]; - $before->($walk, $depth) if $before; + push @visited, $walk; # spot/break loops $seen{$walk}++; @@ -258,8 +238,15 @@ sub iterate_down { } $walk = $next; } - return unless $after; - while (@visited) { $after->(@{ pop @visited }) } + foreach my $cont (@visited) { + my $children = $cont->children; + next if @$children < 2; + $children = $ordersub->($children); + $cont = $cont->{child} = shift @$children; + do { + $cont = $cont->{next} = shift @$children; + } while ($cont); + } } 1; -- cgit v1.2.3-24-ge0c7