diff options
author | Elizabeth Mattijsen <liz@dijkmat.nl> | 2002-07-08 12:21:09 +0200 |
---|---|---|
committer | Jarkko Hietaniemi <jhi@iki.fi> | 2002-07-09 18:38:04 +0000 |
commit | b31b80f9d91ded188b47dd78c18a0a1effe2584d (patch) | |
tree | f27137554d00433ffb81dea3e47a9957960f1b06 /lib | |
parent | d068fc0dfbe72bcd63e0b2a470a9d322ca5cab34 (diff) | |
download | perl-b31b80f9d91ded188b47dd78c18a0a1effe2584d.tar.gz |
[PATCH] Removing example layers from MIME::QuotedPrint
Date: Mon, 08 Jul 2002 10:21:09 +0200
Message-Id: <4.2.0.58.20020708090819.02740f00@mickey.dijkmat.nl>
Subject: Re: [PATCH] Removing example layers from MIME::QuotedPrint
From: Elizabeth Mattijsen <liz@dijkmat.nl>
Date: Tue, 09 Jul 2002 09:29:52 +0200
Message-Id: <4.2.0.58.20020709092337.02893300@mickey.dijkmat.nl>
p4raw-id: //depot/perl@17449
Diffstat (limited to 'lib')
-rw-r--r-- | lib/PerlIO/Via/QuotedPrint.pm | 87 | ||||
-rw-r--r-- | lib/PerlIO/Via/t/QuotedPrint.t | 55 |
2 files changed, 142 insertions, 0 deletions
diff --git a/lib/PerlIO/Via/QuotedPrint.pm b/lib/PerlIO/Via/QuotedPrint.pm new file mode 100644 index 0000000000..ab3448d469 --- /dev/null +++ b/lib/PerlIO/Via/QuotedPrint.pm @@ -0,0 +1,87 @@ +package PerlIO::Via::QuotedPrint; + +# Make sure we do things by the book +# Set the version info + +use strict; +$PerlIO::Via::QuotedPrint::VERSION = 0.01; + +# Make sure the encoding/decoding stuff is available + +use MIME::QuotedPrint (); # no need to pollute this namespace + +#----------------------------------------------------------------------- +# IN: 1 class to bless with +# 2 mode string (ignored) +# 3 file handle of PerlIO layer below (ignored) +# OUT: 1 blessed object + +sub PUSHED { bless [],$_[0] } #PUSHED + +#----------------------------------------------------------------------- +# IN: 1 instantiated object (ignored) +# 2 handle to read from +# OUT: 1 decoded string + +sub FILL { + +# Read the line from the handle +# Decode if there is something decode and return result or signal eof + + my $line = readline( $_[1] ); + (defined $line) ? MIME::QuotedPrint::decode_qp( $line ) : undef; +} #FILL + +#----------------------------------------------------------------------- +# IN: 1 instantiated object (ignored) +# 2 buffer to be written +# 3 handle to write to +# OUT: 1 number of bytes written + +sub WRITE { + +# Encode whatever needs to be encoded and write to handle: indicate result + + (print {$_[2]} MIME::QuotedPrint::encode_qp($_[1])) ? length($_[1]) : -1; +} #WRITE + +# Satisfy -require- + +1; + +__END__ + +=head1 NAME + +PerlIO::Via::QuotedPrint - PerlIO layer for quoted-printable strings + +=head1 SYNOPSIS + + use PerlIO::Via::QuotedPrint; + + open( my $in,'<Via(PerlIO::Via::QuotedPrint)','file.qp' ) + or die "Can't open file.qp for reading: $!\n"; + + open( my $out,'>Via(PerlIO::Via::QuotedPrint)','file.qp' ) + or die "Can't open file.qp for writing: $!\n"; + +=head1 DESCRIPTION + +This module implements a PerlIO layer that works on files encoded in the +quoted-printable format. It will decode from quoted-printable while reading +from a handle, and it will encode as quoted-printable while writing to a handle. + +=head1 SEE ALSO + +L<PerlIO::Via>, L<MIME::QuotedPrint>, L<PerlIO::Via::Base64>, L<PerlIO::Via::MD5>, +L<PerlIO::Via::StripHTML>. + +=head1 COPYRIGHT + +Copyright (c) 2002 Elizabeth Mattijsen. Based on example that was initially +added to MIME::QuotedPrint.pm for the 5.8.0 distribution of Perl. + +This library is free software; you can redistribute it and/or +modify it under the same terms as Perl itself. + +=cut diff --git a/lib/PerlIO/Via/t/QuotedPrint.t b/lib/PerlIO/Via/t/QuotedPrint.t new file mode 100644 index 0000000000..59d1363534 --- /dev/null +++ b/lib/PerlIO/Via/t/QuotedPrint.t @@ -0,0 +1,55 @@ +my $file = 'test.qp'; + +BEGIN { + if ($ENV{PERL_CORE}) { + chdir 't' if -d 't'; + @INC = '../lib'; + } +} + +use Test::More tests => 11; + +BEGIN { use_ok('PerlIO::Via::QuotedPrint') } + +my $decoded = <<EOD; +This is a tést for quoted-printable text that has hàrdly any speçial characters +in it. +EOD + +my $encoded = <<EOD; +This is a t=E9st for quoted-printable text that has h=E0rdly any spe=E7ial = +characters +in it. +EOD + +# Create the encoded test-file + +ok( + open( my $out,'>:Via(PerlIO::Via::QuotedPrint)', $file ), + "opening '$file' for writing" +); + +ok( (print $out $decoded), 'print to file' ); +ok( close( $out ), 'closing encoding handle' ); + +# Check encoding without layers + +{ +local $/ = undef; +ok( open( my $test,$file ), 'opening without layer' ); +is( $encoded,readline( $test ), 'check encoded content' ); +ok( close( $test ), 'close test handle' ); +} + +# Check decoding _with_ layers + +ok( + open( my $in,'<:Via(PerlIO::Via::QuotedPrint)', $file ), + "opening '$file' for reading" +); +is( $decoded,join( '',<$in> ), 'check decoding' ); +ok( close( $in ), 'close decoding handle' ); + +# Remove whatever we created now + +ok( unlink( $file ), "remove test file '$file'" ); |