summaryrefslogtreecommitdiff
path: root/fml/lib/Mail/ThreadTrack/Print/Message.pm
diff options
context:
space:
mode:
Diffstat (limited to 'fml/lib/Mail/ThreadTrack/Print/Message.pm')
-rw-r--r--fml/lib/Mail/ThreadTrack/Print/Message.pm253
1 files changed, 0 insertions, 253 deletions
diff --git a/fml/lib/Mail/ThreadTrack/Print/Message.pm b/fml/lib/Mail/ThreadTrack/Print/Message.pm
deleted file mode 100644
index 7c61a63a..00000000
--- a/fml/lib/Mail/ThreadTrack/Print/Message.pm
+++ /dev/null
@@ -1,253 +0,0 @@
-#-*- perl -*-
-#
-# Copyright (C) 2001,2002,2003 Ken'ichi Fukamachi
-# All rights reserved. This program is free software; you can
-# redistribute it and/or modify it under the same terms as Perl itself.
-#
-# $FML: Message.pm,v 1.9 2002/12/22 03:19:15 fukachan Exp $
-#
-
-package Mail::ThreadTrack::Print::Message;
-use strict;
-use vars qw(@ISA @EXPORT @EXPORT_OK $AUTOLOAD);
-use Carp;
-use Mail::ThreadTrack::Print::Utils qw(decode_mime_string STR2EUC);
-
-
-=head1 NAME
-
-Mail::ThreadTrack::Print::Message - summarize message et.al.
-
-=head1 SYNOPSIS
-
-See C<Mail::ThreadTrack::Print> for usage of this subclass.
-
-=head1 DESCRIPTION
-
-See C<Mail::ThreadTrack::Print> for usage of this subclass.
-
-=head1 METHODS
-
-=head2 message_summary($file)
-
-make message summary for specified $file (article).
-
-=cut
-
-
-# Descriptions: make summary of the specified $file (article).
-# Arguments: OBJ($self) STR($file)
-# Side Effects: none
-# Return Value: STR
-sub message_summary
-{
- my ($self, $file) = @_;
- my (@header) = ();
- my $msgbuf = '';
- my $line = $self->{ _article_summary_lines } || 3;
- my $mode = $self->get_mode || 'text';
- my $padding = $mode eq 'text' ? ' ' : '';
-
- use FileHandle;
- my $fh = new FileHandle $file;
-
- if (defined $fh) {
- my $buf;
-
- LINE:
- while ($buf = <$fh>) {
- # remove useless lines
- next LINE if $buf =~ /^\>/o;
- next LINE if $buf =~ /^\-/o;
-
- # header part
- if (1 .. $buf =~ /^$/o) {
- push(@header, $buf);
- }
- # body part
- else {
- next LINE if $buf =~ /^\s*$/o;
-
- # ignore mail header like patterns.
- next LINE if $buf =~ /^X-[-A-Za-z0-9]+:/io;
- next LINE if $buf =~ /^Return-[-A-Za-z0-9]+:/io;
- next LINE if $buf =~ /^Mime-[-A-Za-z0-9]+:/io;
- next LINE if $buf =~ /^Content-[-A-Za-z0-9]+:/io;
- next LINE if $buf =~ /^(To|From|Subject|Reply-To|Received):/io;
- next LINE if $buf =~ /^(Message-ID|Date):/io;
-
- # pick up effetive the first $line lines
- if (_is_valid_buf($buf)) {
- $line--;
- $msgbuf .= $padding . $buf;
- }
-
- last LINE if $line < 0;
- }
- }
-
- $fh->close();
-
- # XXX-TODO: WHO CARE FOR CSS ? return raw messages from here.
- # XXX-TODO: care for non Japanese.
- if (defined $self->{ _no_header_summary }) {
- return STR2EUC( $msgbuf );
- }
- else {
- use Mail::Header;
- my $header = new Mail::Header \@header;
- my $header_info = $self->header_summary({
- header => $header,
- padding => $padding,
- });
- return STR2EUC( $header_info ."\n". $msgbuf );
- }
- }
- else {
- return undef;
- }
-}
-
-
-# Descriptions: check if $str looks effective, not quotation et.al. ?
-# Arguments: STR($str)
-# Side Effects: none
-# Return Value: 1 or 0
-sub _is_valid_buf
-{
- my ($str) = @_;
- $str = STR2EUC( $str );
-
- if ($str =~ /^[\>\#\|\*\:\;\=]/o) {
- return 0;
- }
- elsif ($str =~ /^in /o) { # quotation ?
- return 0;
- }
- elsif ($str =~ /\w+\@\w+/o) { # mail address ?
- return 0;
- }
- elsif ($str =~ /^\S+\>/o) { # quotation ?
- return 0;
- }
-
- return 1;
-}
-
-
-# Descriptions: remove subject tag like string in $str e.g. [elena 100].
-# Arguments: STR($str)
-# Side Effects: none
-# Return Value: STR
-sub _delete_subject_tag_like_string
-{
- my ($str) = @_;
-
- if (defined $str) {
- # XXX-TODO: hmm, method-ify Mail::Message::Utils ?
- use Mail::Message::Utils;
- return Mail::Message::Utils::remove_subject_tag_like_string($str);
- }
- else {
- return undef;
- }
-}
-
-
-# Descriptions: make summary of header $args->{ header }.
-# Arguments: OBJ($self) HASH_REF($args)
-# Side Effects: none
-# Return Value: STR
-sub header_summary
-{
- my ($self, $args) = @_;
- my $date = $args->{ header }->get('date');
- my $from = $args->{ header }->get('from');
- my $subject = $args->{ header }->get('subject');
- my $padding = $args->{ padding } || ' ';
-
- # XXX-TODO: care for non Japanese.
- if (defined $subject) {
- $subject = decode_mime_string($subject, { charset => 'euc-japan' });
- $subject =~ s/\n/ /g;
- $subject = _delete_subject_tag_like_string($subject);
- $subject =~ s/[\s\n]*$//g;
- }
-
- if (defined $from) {
- $from = $self->_who_of_address( $from );
- $from =~ s/\n/ /g;
- $from =~ s/[\s\n]*$//g;
- }
-
- # XXX-TODO: WHO CARE FOR CSS ? return raw messages from here.
- # XXX-TODO: care for non Japanese.
- # return buffer
- my $r = $padding. $date;
- $r .= $padding. "$subject, $from\n";
- return STR2EUC( $r );
-}
-
-
-# Descriptions: get gecos field in $address.
-# return $address itself if the extraction failed.
-# Arguments: OBJ($self) STR($address)
-# Side Effects: none
-# Return Value: STR
-sub _who_of_address
-{
- my ($self, $address) = @_;
- my ($user);
-
- use Mail::Address;
- my (@addrs) = Mail::Address->parse($address);
-
- for my $addr (@addrs) {
- if (defined( $addr->phrase() )) {
- # XXX-TODO: care for non Japanese.
- my $phrase = decode_mime_string( $addr->phrase(), {
- charset => 'euc-japan',
- });
-
- if ($phrase) {
- return($phrase);
- }
- }
-
- $user = $addr->user();
- }
-
- # XXX-TODO: hmm, CROSS SITE SCRIPTING may cause ?
- if ($self->get_mode() eq 'html') {
- return( $user ? "$user\@xxx.xxx.xxx.xxx" : $address );
- }
- else {
- return $address;
- }
-}
-
-
-=head1 CODING STYLE
-
-See C<http://www.fml.org/software/FNF/> on fml coding style guide.
-
-=head1 AUTHOR
-
-Ken'ichi Fukamachi
-
-=head1 COPYRIGHT
-
-Copyright (C) 2001,2002,2003 Ken'ichi Fukamachi
-
-All rights reserved. This program is free software; you can
-redistribute it and/or modify it under the same terms as Perl itself.
-
-=head1 HISTORY
-
-Mail::ThreadTrack::Print::Message first appeared in fml8 mailing list driver package.
-See C<http://www.fml.org/> for more details.
-
-=cut
-
-
-1;