From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: X-Spam-Status: No, score=-2.9 required=3.0 tests=ALL_TRUSTED,AWL,BAYES_00 shortcircuit=no autolearn=unavailable version=3.3.2 X-Original-To: meta@public-inbox.org Received: from localhost (dcvr.yhbt.net [127.0.0.1]) by dcvr.yhbt.net (Postfix) with ESMTP id D69511F823; Sun, 16 Aug 2015 08:38:05 +0000 (UTC) From: Eric Wong To: meta@public-inbox.org Cc: Eric Wong Subject: [RFC 07/11] view: hoist out index_walk function Date: Sun, 16 Aug 2015 08:37:55 +0000 Message-Id: <1439714279-21923-8-git-send-email-e@80x24.org> In-Reply-To: <1439714279-21923-1-git-send-email-e@80x24.org> References: <1439714279-21923-1-git-send-email-e@80x24.org> List-Id: We will reuse it for thread views when powered by Xapian. --- lib/PublicInbox/View.pm | 77 +++++++++++++++++++++++++++---------------------- 1 file changed, 42 insertions(+), 35 deletions(-) diff --git a/lib/PublicInbox/View.pm b/lib/PublicInbox/View.pm index fe4f2df..66d3bcb 100644 --- a/lib/PublicInbox/View.pm +++ b/lib/PublicInbox/View.pm @@ -92,41 +92,9 @@ sub index_entry { my $more = 'message'; # scan through all parts, looking for displayable text $mime->walk_parts(sub { - my ($part) = @_; - return if $part->subparts; # walk_parts already recurses - my $ct = $part->content_type; - - # account for filter bugs... - return if defined $ct && $ct =~ m!\btext/[xh]+tml\b!i; - - my $enc = enc_for($ct, $enc_msg); - - if ($part_nr > 0) { - my $fn = $part->filename; - defined($fn) or $fn = "part #" . ($part_nr + 1); - $rv .= $pfx . add_filename_line($enc->decode($fn)); - } - - my $s = add_text_body_short($enc, $part, $part_nr, $fhref); - - # drop the remainder of git patches, they're usually better - # to review when the full message is viewed - $s =~ s!^---+\n.*\z!!ms and $more = 'more...'; - - # Drop signatures - $s =~ s/^-- \n.*\z//ms and $more = 'more...'; - - # kill any leading or trailing whitespace - $s =~ s/\A\s+//s; - $s =~ s/\s+\z//s; - - if (length $s) { - # add prefix: - $s =~ s/^/$pfx/sgm; - - $rv .= $s . "\n"; - } - ++$part_nr; + $rv .= index_walk($_[0], $pfx, $enc_msg, $part_nr, $fhref, + \$more); + $part_nr++; }); $rv .= "\n$pfx$more "; @@ -150,6 +118,45 @@ sub index_entry { # only private functions below. +sub index_walk { + my ($part, $pfx, $enc_msg, $part_nr, $fhref, $more) = @_; + my $rv = ''; + return $rv if $part->subparts; # walk_parts already recurses + my $ct = $part->content_type; + + # account for filter bugs... + return if defined $ct && $ct =~ m!\btext/[xh]+tml\b!i; + + my $enc = enc_for($ct, $enc_msg); + + if ($part_nr > 0) { + my $fn = $part->filename; + defined($fn) or $fn = "part #" . ($part_nr + 1); + $rv .= $pfx . add_filename_line($enc->decode($fn)); + } + + my $s = add_text_body_short($enc, $part, $part_nr, $fhref); + + # drop the remainder of git patches, they're usually better + # to review when the full message is viewed + $s =~ s!^---+\n.*\z!!ms and $$more = 'more...'; + + # Drop signatures + $s =~ s/^-- \n.*\z//ms and $$more = 'more...'; + + # kill any leading or trailing whitespace + $s =~ s/\A\s+//s; + $s =~ s/\s+\z//s; + + if (length $s) { + # add prefix: + $s =~ s/^/$pfx/sgm; + + $rv .= $s . "\n"; + } + $rv; +} + sub enc_for { my ($ct, $default) = @_; $default ||= $enc_utf8; -- EW