]> Sergey Matveev's repositories - public-inbox.git/blobdiff - lib/PublicInbox/View.pm
add various TODO items
[public-inbox.git] / lib / PublicInbox / View.pm
index 663eff5b9ac496f6f71ea1a24d63922058b4557c..674d7b7cdfb73c77172c59485dea33c60908d3f7 100644 (file)
@@ -4,19 +4,22 @@ package PublicInbox::View;
 use strict;
 use warnings;
 use PublicInbox::Hval;
-use URI::Escape qw/uri_escape/;
+use URI::Escape qw/uri_escape_utf8/;
 use Encode qw/find_encoding/;
 use Encode::MIME::Header;
 use Email::MIME::ContentType qw/parse_content_type/;
+
+# TODO: make these constants tunable
 use constant MAX_INLINE_QUOTED => 5;
 use constant MAX_TRUNC_LEN => 72;
+
 *ascii_html = *PublicInbox::Hval::ascii_html;
 
 my $enc_utf8 = find_encoding('UTF-8');
 my $enc_mime = find_encoding('MIME-Header');
 
 # public functions:
-sub as_html {
+sub msg_html {
        my ($class, $mime, $full_pfx) = @_;
 
        headers_to_html_header($mime, $full_pfx) .
@@ -26,10 +29,10 @@ sub as_html {
                '</pre></body></html>';
 }
 
-sub as_feed_entry {
+sub feed_entry {
        my ($class, $mime, $full_pfx) = @_;
 
-       "<pre>" . multipart_text_as_html($mime, $full_pfx) . "</pre>";
+       '<pre>' . multipart_text_as_html($mime, $full_pfx) . '</pre>';
 }
 
 
@@ -92,6 +95,7 @@ sub add_text_body_short {
        my ($enc, $part, $part_nr, $full_pfx) = @_;
        my $n = 0;
        my $s = ascii_html($enc->decode($part->body));
+       # TODO: fold the "so-and-so wrote:" attribute line here, too:
        $s =~ s!^((?:(?:&gt;[^\n]*)\n)+)!
                my $cur = $1;
                my @lines = split(/\n/, $cur);
@@ -210,15 +214,17 @@ sub html_footer {
                        $to ||= $dst;
                }
        }
+       Email::Address->purge_cache;
 
        my $subj = $mime->header('Subject') || '';
        $subj = "Re: $subj" unless $subj =~ /\bRe:/;
-       my $irp = uri_escape($mime->header_obj->header_raw('Message-ID') || '');
+       my $irp = uri_escape_utf8(
+                       $mime->header_obj->header_raw('Message-ID') || '');
        delete $cc{$to};
-       $to = uri_escape($to);
-       $subj = uri_escape($subj);
+       $to = uri_escape_utf8($to);
+       $subj = uri_escape_utf8($subj);
 
-       my $cc = uri_escape(join(',', values %cc));
+       my $cc = uri_escape_utf8(join(',', values %cc));
        my $href = "mailto:$to?In-Reply-To=$irp&Cc=${cc}&Subject=$subj";
 
        '<a href="' . ascii_html($href) . '">reply</a>';