Hello community,
here is the log from the commit of package perl-MIME-EncWords for openSUSE:Factory checked in at 2013-08-27 20:58:29
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/perl-MIME-EncWords (Old)
and /work/SRC/openSUSE:Factory/.perl-MIME-EncWords.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "perl-MIME-EncWords"
Changes:
--------
--- /work/SRC/openSUSE:Factory/perl-MIME-EncWords/perl-MIME-EncWords.changes 2011-11-21 12:43:15.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.perl-MIME-EncWords.new/perl-MIME-EncWords.changes 2013-08-27 20:58:30.000000000 +0200
@@ -1,0 +2,14 @@
+Sun Aug 25 14:31:46 UTC 2013 - opensuse@cboltz.de
+
+- Update to 1.014.1:
+ * Fix: CPAN RT#84295: MaxLineLen fixes to the value set at the first
+ time.
+ * Imp: encode_mimewords() supports UTF-16, UTF-32 and their flavors.
+ They will be encoded as UTF-8.
+ * Requires MIME-Charset >= 1.010.
+ * Minor Fix: After ASCII words extending over multiple lines,
+ line length was estimated shorter. CPAN RT #79399.
+ * see upstream changelog for all details
+- add Recommends: perl(Unicode::String) (optionally used)
+
+-------------------------------------------------------------------
Old:
----
MIME-EncWords-1.012.4.tar.gz
New:
----
MIME-EncWords-1.014.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ perl-MIME-EncWords.spec ++++++
--- /var/tmp/diff_new_pack.17E78e/_old 2013-08-27 20:58:31.000000000 +0200
+++ /var/tmp/diff_new_pack.17E78e/_new 2013-08-27 20:58:31.000000000 +0200
@@ -1,7 +1,7 @@
#
# spec file for package perl-MIME-EncWords
#
-# Copyright (c) 2011 SUSE LINUX Products GmbH, Nuernberg, Germany.
+# Copyright (c) 2013 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -16,20 +16,20 @@
#
-
Name: perl-MIME-EncWords
-Version: 1.012.4
-Release: 1
-License: GPL-1.0+ or Artistic-1.0
+Version: 1.014.1
+Release: 0
%define cpan_name MIME-EncWords
Summary: deal with RFC 2047 encoded words (improved)
-Url: http://search.cpan.org/dist/MIME-EncWords/
+License: GPL-1.0+ or Artistic-1.0
Group: Development/Libraries/Perl
+Url: http://search.cpan.org/dist/MIME-EncWords/
Source: http://www.cpan.org/authors/id/N/NE/NEZUMI/MIME-EncWords-%{version}.tar.gz
-BuildRequires: perl(MIME::Charset) >= 1.008.2
BuildRequires: perl
BuildRequires: perl-macros
-Requires: perl(MIME::Charset) >= 1.008.2
+BuildRequires: perl(MIME::Charset) >= 1.010
+Requires: perl(MIME::Charset) >= 1.010
+Recommends: perl(Unicode::String)
BuildRoot: %{_tmppath}/%{name}-%{version}-build
BuildArch: noarch
%{perl_requires}
++++++ MIME-EncWords-1.012.4.tar.gz -> MIME-EncWords-1.014.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/MIME-EncWords-1.012.4/Changes new/MIME-EncWords-1.014.1/Changes
--- old/MIME-EncWords-1.012.4/Changes 2011-10-26 08:17:02.000000000 +0200
+++ new/MIME-EncWords-1.014.1/Changes 2013-08-25 04:40:29.000000000 +0200
@@ -1,3 +1,35 @@
+2013-08-25 Hatuka*nezumi - IKEDA Soji
+
+ * Release 1.014.1.
+ * No new features.
+ * Move Japanese documentations under POD2::JA.
+
+2013-04-27 Hatuka*nezumi - IKEDA Soji
+
+ * Release 1.014.
+ * No changes.
+
+2013-04-14 Hatuka*nezumi - IKEDA Soji
+
+ * Release 1.013_02.
+ * Fix: CPAN RT#84295: MaxLineLen fixes to the value set at the first
+ time.
+ * Imp: encode_mimewords() supports UTF-16, UTF-32 and their flavors.
+ They will be encoded as UTF-8.
+ * Requires MIME-Charset >= 1.010.
+
+2012-10-01 Hatuka*nezumi - IKEDA Soji
+
+ * Relese 1.012.6.
+ * No changes.
+
+2012-09-05 Hatuka*nezumi - IKEDA Soji
+
+ * Release 1.012_5.
+ * Minor Fix: After ASCII words extending over multiple lines,
+ line length was estimated shorter. CPAN RT #79399.
+ * Doc: corrected typo.
+
2011-10-26 Hatuka*nezumi - IKEDA Soji
* Release 1.012.4.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/MIME-EncWords-1.012.4/MANIFEST new/MIME-EncWords-1.014.1/MANIFEST
--- old/MIME-EncWords-1.012.4/MANIFEST 2011-10-26 08:17:02.000000000 +0200
+++ new/MIME-EncWords-1.014.1/MANIFEST 2013-08-25 04:40:29.000000000 +0200
@@ -2,10 +2,10 @@
Changes
GPL
lib/Encode/MIME/EncWords.pm
-lib/Encode/MIME/EncWords/JA_JP.pod
lib/MIME/EncWords.pm
lib/MIME/EncWords/Defaults.pm.sample
-lib/MIME/EncWords/JA_JP.pod
+lib/POD2/JA/Encode/MIME/EncWords.pod
+lib/POD2/JA/MIME/EncWords.pod
Makefile.PL
MANIFEST This list of files
META.yml Module meta-data (added by author)
@@ -14,6 +14,7 @@
t/02encode.t
t/03Encode-MIME-EncWords.t
t/04Encode-MIME-EncWords-ISO_2022_JP.t
+t/05encode_utf.t
t/pod.t
testin/decode-ascii.txt
testin/decode-multibyte.txt
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/MIME-EncWords-1.012.4/META.yml new/MIME-EncWords-1.014.1/META.yml
--- old/MIME-EncWords-1.012.4/META.yml 2011-10-26 08:17:02.000000000 +0200
+++ new/MIME-EncWords-1.014.1/META.yml 2013-08-25 04:40:29.000000000 +0200
@@ -1,7 +1,7 @@
--- #YAML:1.0
name: MIME-EncWords
abstract: deal with RFC 2047 encoded words (improved)
-version: 1.012.4
+version: 1.014.1
author:
- Hatuka*nezumi - IKEDA Soji
license: perl
@@ -9,14 +9,14 @@
requires:
Encode: 1.98
MIME::Base64: 2.13
- MIME::Charset: 1.008.2
+ MIME::Charset: 1.010.1
perl: 5.005
build_requires:
Test::More: 0
provides:
MIME::EncWords:
file: lib/MIME/EncWords.pm
- version: 1.012.4
+ version: 1.014.1
Encode::MIME::EncWords:
file: lib/Encode/MIME/EncWords.pm
version: 0.03
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/MIME-EncWords-1.012.4/Makefile.PL new/MIME-EncWords-1.014.1/Makefile.PL
--- old/MIME-EncWords-1.012.4/Makefile.PL 2011-10-26 08:17:02.000000000 +0200
+++ new/MIME-EncWords-1.014.1/Makefile.PL 2013-08-25 04:40:29.000000000 +0200
@@ -6,13 +6,14 @@
'VERSION_FROM' => 'lib/MIME/EncWords.pm',
'PREREQ_PM' => ($] >= 5.007003)? {
'Encode' => 1.98,
- 'MIME::Charset' => '1.008.2',
+ 'MIME::Charset' => '1.010.1',
'MIME::Base64' => 2.13,
'Test::More' => 0,
}: {
'MIME::Charset' => '1.006',
'MIME::Base64' => 2.13,
'Test::More' => 0,
+ 'Unicode::String' => 2.09,
},
);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/MIME-EncWords-1.012.4/README new/MIME-EncWords-1.014.1/README
--- old/MIME-EncWords-1.012.4/README 2011-10-26 08:17:02.000000000 +0200
+++ new/MIME-EncWords-1.014.1/README 2013-08-25 04:40:29.000000000 +0200
@@ -1,6 +1,6 @@
MIME-EncWords Package.
-Copyright (C) 2006-2011 by Hatuka*nezumi - IKEDA Soji .
+Copyright (C) 2006-2013 by Hatuka*nezumi - IKEDA Soji .
This package is free software; you can redistribute it and/or modify it
under the same terms as Perl itself.
@@ -15,7 +15,7 @@
For japonophones, POD in Japanese language is also included:
- MIME::EncWords::JA_JP - RFC 2047 encoded-word 関連 (改良版)
- Encode::MIME::EncWords::JA_JP - MIME の「B」・「Q」ヘッダエンコーディング (代替案)
+ POD2::JA::MIME::EncWords - RFC 2047 encoded-word 関連 (改良版)
+ POD2::JA::Encode::MIME::EncWords - MIME の「B」・「Q」ヘッダエンコーディング (代替案)
$$
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/MIME-EncWords-1.012.4/lib/Encode/MIME/EncWords/JA_JP.pod new/MIME-EncWords-1.014.1/lib/Encode/MIME/EncWords/JA_JP.pod
--- old/MIME-EncWords-1.012.4/lib/Encode/MIME/EncWords/JA_JP.pod 2011-10-26 08:17:02.000000000 +0200
+++ new/MIME-EncWords-1.014.1/lib/Encode/MIME/EncWords/JA_JP.pod 1970-01-01 01:00:00.000000000 +0100
@@ -1,160 +0,0 @@
-use utf8;
-
-=encoding utf-8
-
-=head1 NAME
-
-Encode::MIME::EncWords::JA_JP - MIME の「B」・「Q」ヘッダエンコーディング (代替案)
-
-=head1 SYNOPSIS
-
- use Encode::MIME::EncWords;
- use Encode qw/encode decode/;
-
- # ヘッダデコードする。
- $utf8 = decode('MIME-EncWords', $header);
-
- # 初期のキャラクタセット (UTF-8) でヘッダエンコードする。
- $header = encode('MIME-EncWords', $utf8);
-
- # ほかのキャラクタセットでヘッダエンコードする。
- Encode::MIME::EncWords->config(Charset => 'GB2312');
- $header = encode('MIME-EncWords', $utf8);
-
-=head1 ABSTRACT
-
-このモジュールは、RFC 2047 に述べる
-MIME のヘッダエンコーディングを実装している。
-エンコーディングの名前には、みっつの変種と、
-キャラクタセットに特化したひとつの簡易版がある。
-
- エンコーディング名 encode() の結果 備考
- ------------------------------------------------------------------
- MIME-EncWords (B と Q を自動判別)
- MIME-EncWords-B =?XXXX?B?...?= 初期値は UTF-8。
- MIME-EncWords-Q =?XXXX?Q?...?= ,,
- MIME-EncWords-ISO_2022_JP =?ISO-2022-JP?B?...?=
-
-decode() の結果は、どのエンコーディングでも同じになる。
-
-=head1 DESCRIPTION
-
-このモジュールは、LEncode::MIME::Header コアモジュールが提供する
-C エンコーディングの代替となることを意図している。
-このモジュールの使いかたをよく知るためには、L<Encode> を参照してほしい。
-
-=head2 モジュール独自の機能
-
-=over 4
-
-=item config(KEY => VALUE, ...);
-
-I<クラスメソッド。>
-KEY => VALUE の対でオプションを設定する。
-次のオプションが使える。
-
-=over 4
-
-=item Charset
-
-[encode] データ要素を変換するのに使うキャラクタセット。
-初期値は C<"UTF-8">。
-C では C<"ISO-2022-JP"> に固定。
-
-=item Detect7bit
-
-[decode/encode] エンコードされていない部分の
-7 ビットキャラクタセットを判別しようとする。
-初期値は C<"YES">。
-
-=item Field
-
-[encode] ヘッダフィールドの名前。エンコードされた結果の最初の行で、
-これの長さが考慮される。
-初期値は C<undef>。
-
-=item Mapping
-
-[decode/encode] キャラクタセットの名前に対して実際に使うマッピングを指定する。
-初期値は C<"EXTENDED">。
-
-=item MaxLineLen
-
-[encode] 行の最大長 (改行を除く)。
-初期値は C<76>。
-
-=item Minimal
-
-[encode] エンコーディングを最小限にするか否か。
-初期値は C<"YES">。
-
-=back
-
-オプションの詳細については LMIME::EncWords::JA_JP を参照。
-
-=back
-
-=head1 CAVEAT
-
-=over 4
-
-=item *
-
-MIME ヘッダエンコーディング用のエンコーディングモジュールは、
-こみいったヘッダフィールドを簡単に作り出したり、
-そこから望みの要素を取り出したりできる打ち出の小槌ではない。
-
-アドレスヘッダフィールド (To:、From: など) をデコードするには、
-まず mailbox-list を分解する。
-そして、個々の要素をエンコーディングモジュールでデコードする。
-これをエンコードするには、
-今度は個々の要素をエンコーディングモジュールでエンコードする。
-そして、エンコードした要素から mailbox-list を組み立てる。
-mailbox-list の組み立てや分解には、LMail::Address
-のようなモジュールが使えるだろう。
-
-=item *
-
-行を LF (C<"\n">) で区切る。
-RFC5322 は、インターネットのメッセージでは行を CRLF (C<"\r\n">)
-で区切るとしている。
-
-=back
-
-=head1 BUGS
-
-バグやバグのような動作は開発者に知らせてください。
-
-CPAN Request Tracker:
-Lhttp://rt.cpan.org/Public/Dist/Display.html?Name=MIME-EncWords.
-
-=head1 VERSION
-
-C<$VERSION> 変数を参照してほしい。
-
-B<これは実験的なリリースである>。仕様は近い将来、変わるかもしれない。
-
-このパッケージの開発版が次の場所にある。
-Lhttp://hatuka.nezumi.nu/repos/MIME-EncWords/。
-
-=head1 SEE ALSO
-
-L<Encode>, LEncode::MIME::Header, LMIME::EncWords::JA_JP.
-
-RFC 2047 I.
-
-=head1 AUTHOR
-
-Hatuka*nezumi - IKEDA Soji
-
-=head1 COPYRIGHT
-
-Copyright (C) 2011 Hatuka*nezumi - IKEDA Soji.
-
-This program is free software; you can redistribute it and/or modify it
-under the same terms as Perl itself.
-
-
-=cut
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/MIME-EncWords-1.012.4/lib/MIME/EncWords/JA_JP.pod new/MIME-EncWords-1.014.1/lib/MIME/EncWords/JA_JP.pod
--- old/MIME-EncWords-1.012.4/lib/MIME/EncWords/JA_JP.pod 2011-10-26 08:17:02.000000000 +0200
+++ new/MIME-EncWords-1.014.1/lib/MIME/EncWords/JA_JP.pod 1970-01-01 01:00:00.000000000 +0100
@@ -1,367 +0,0 @@
-=encoding utf-8
-
-=head1 NAME
-
-MIME::EncWords::JA_JP - RFC 2047 encoded-word 関連 (改良版)
-
-=head1 SYNOPSIS
-
-IMIME::EncWords は、RFC 2047 (旧 RFC 1522)
-の仕様により適合することをめざした LMIME::Words の別実装です。
-加えて、いくらかの改良がなされています。
-以下の梗概と説明は、もとの MIME::Words から採ったものに、
-改良点の説明 (B<**>) および変更点の説明と明確化 (B<*>)
-を加えたものです。>
-
-読み進める前に、LMIME::Tools を見るべきだ。そうして、
-あなたの成し遂げようとしていることのどこでこのモジュールを使うのかを、
-理解してほしい。
-いますぐ。待ってるから。
-
-いいかな。はじめるよ...
-
- use MIME::EncWords qw(:all);
-
- ### 文字列を、キャラクタセットは無視してデコードした文字列にする:
- $decoded = decode_mimewords(
- 'To: =?ISO-8859-1?Q?Keld_J=F8rn_Simonsen?= ',
- );
-
- ### 文字列を、デコードされた [DATA,CHARSET] の対の配列にする:
- @decoded = decode_mimewords(
- 'To: =?ISO-8859-1?Q?Keld_J=F8rn_Simonsen?= ',
- );
-
- ### 単一の「安全でない語」をエンコードする:
- $encoded = encode_mimeword("\xABFran\xE7ois\xBB");
-
- ### 文字列を、「安全でない語」を探しながらエンコードする:
- $encoded = encode_mimewords("Me and \xABFran\xE7ois\xBB in town");
-
-=head1 DESCRIPTION
-
-合衆国の諸君。このモジュールでいったい何をやらかそうというのか、
-わからないかもしれないね。欧州、ロシア等の諸君なら、わかるだろう。C<(:-)>。
-
-たとえば、これは有効な MIME ヘッダだ:
-
- From: =?US-ASCII?Q?Keith_Moore?=
- To: =?ISO-8859-1?Q?Keld_J=F8rn_Simonsen?=
- CC: =?ISO-8859-1?Q?Andr=E9_?= Pirard
- Subject: =?ISO-8859-1?B?SWYgeW91IGNhbiByZWFkIHRoaXMgeW8=?=
- =?ISO-8859-2?B?dSB1bmRlcnN0YW5kIHRoZSBleGFtcGxlLg==?=
- =?US-ASCII?Q?.._cool!?=
-
-これらのフィールドは、だいたいつぎのようにデコードできる:
-
- From: Keith Moore
- To: Keld Jørn Simonsen
- CC: André Pirard
- Subject: If you can read this you understand the example... cool!
-
-B<追補>: 合衆国、欧州の諸君。
-このモジュールでいったいなにをやらかそうというのか、
-わからないかもしれないね。東アジア等の諸君なら、わかるだろう。
-C<(^_^)>.
-
-たとえば、これは有効な MIME ヘッダだ:
-
- Subject: =?EUC-KR?B?sNTAuLinKGxhemluZXNzKSwgwvzB9ri7seIoaW1w?=
- =?EUC-KR?B?YXRpZW5jZSksILGzuLgoaHVicmlzKQ==?=
-
-これらのフィールドは、だいたいつぎのようにデコードできる:
-
- Subject: 게으름(laziness), 참지말기(impatience), 교만(hubris)
-
-=head1 PUBLIC INTERFACE
-
-=over 4
-
-
-=cut
-
-=item decode_mimewords ENCODED, [OPTS...]
-
-I<関数>。
-文字列から RFC 2047 スタイルの "Q" エンコーディング
-(quoted-printable の一種) や "B" エンコーディング (base64)
-を探し、それをデコードする。
-
-B<配列コンテクストでは>、文字列 ENCODED をデコードした
-C<[DATA, CHARSET]> の対に分割し、そのリストを返す。
-エンコードされていなかったデータは 1 要素の配列
-C<[DATA]> で返す (CHARSET は実質的に C<undef>)。
-
- $enc = '=?ISO-8859-1?Q?Keld_J=F8rn_Simonsen?= ';
- foreach (decode_mimewords($enc)) {
- print "", ($_[1] || 'US-ASCII'), ": ", $_[0], "\n";
- }
-
-B<**>
-ただし、隣り合う「encoded-word」を、キャラクタセットがおなじなら連結する。
-これは、マルチバイト列を安全に扱えるようにするためである。
-
-B<**>
-RFC2231 第 5 節で定義している言語情報があれば、第 3 の要素として追加する。
-
-B<*>
-エンコードされていなかったデータの両端の空白文字は取り去らない。
-これは、LMIME::Words との互換性を保つためである。
-
-B<スカラコンテクストでは>、上記のリストの DATA 要素をすべて連結し、
-それを返す。I<注意: 情報の損失がある>ので、
-望んだ結果が得られI<ない>かもしれない。
-だが、文字列 ENCODED
-のすべての文字のキャラクタセットが同一だとわかっているのなら、
-これは役に立つこともある。
-(これを使う前に、LMIME::WordDecoder/unmime を見てほしい。
-これが望みのものかもしれない。)
-B<**>
-下記の "Charset" も参照。
-
-構文エラーが発生すると、$@ にエラーの説明をセットするが、
-解析はできるかぎり (ヘッダのデコードで得られたI<なにか>を返すために)
-続行する。
-エラーが見つからなければ、$@ は偽となる。
-
-B<*>
-「encoded-word」が壊れているときは、エンコードしたままのものを返す。
-この場合、$@ をセットする。
-
-ENCODED に引き続く引数は、ハッシュによるオプションの定義とみなす。
-B<**>
-Unicode/マルチバイト文字対応が有効になっていないとき
-(LMIME::Charset::JA_JP/USE_ENCODE 参照) は、
-以下のオプションはなんの効果も持たない。
-
-=over 4
-
-=item Charset
-B<**>
-
-スカラコンテクストで、DATA 要素をこの名前のキャラクタセットで変換する。
-このオプションに特殊値 C<"_UNICODE_"> を指定すると、
-返す値は Unicode 文字列となる。
-
-B<Note>:
-この仕様は、I を指定したとき以外は>、
-やはり情報の損失がある。
-
-=item Detect7bit
-B<**>
-
-エンコードされていなかった部分の 7 ビットキャラクタセットを判別しようとする。
-初期値は C<"YES">。
-
-
-=cut
-
-=item Mapping
-B<**>
-
-スカラコンテクストで、
-キャラクタセットの名前に対して実際に使うマッピングを指定する。
-C<"EXTENDED"> は拡張マッピングを使う。
-C<"STANDARD"> は標準化されている厳密なマッピングを使う。
-初期値は C<"EXTENDED">。
-
-=back
-
-
-=cut
-
-=item encode_mimeword RAW, [ENCODING], [CHARSET]
-
-I<関数>。
-「安全でない」文字のある単一の「語」RAW をエンコードする。
-「語」全体がエンコードされる。
-
- ### "«François»" をエンコードする:
- $encoded = encode_mimeword("\xABFran\xE7ois\xBB");
-
-エンコーディング ENCODING を指定できる (C<"Q"> または C<"B">)。
-初期値は C<"Q">。
-B<**>
-さらに、「特殊」な値も指定できる。
-C<"S"> は C<"Q"> と C<"B"> のうち短くなるほうを選ぶ。
-
-キャラクタセット CHARSET を指定できる。初期値は C<iso-8859-1>。
-
-B<*>
-C<"Q"> エンコーディングでは、空白を ``_'' でエスケープする。
-
-
-=cut
-
-=item encode_mimewords RAW, [OPTS]
-
-I<関数>。
-文字列 RAW から、「安全でない」文字の列を見つけてエンコードしようとする。
-
- ### 「安全でない語」のある文字列をエンコードする:
- $encoded = encode_mimewords("Me and \xABFran\xE7ois\xBB");
-
-エンコードした文字列を返す。
-
-B<**>
-RAW は Unicode でもよい。ただし Unicode/マルチバイト対応が有効な場合
-(LMIME::Charset::JA_JP/USE_ENCODE 参照)。
-さらに RAW は、L
-が配列コンテクストで返すものへの参照でもよい。
-後の場合は、"Charset" オプション (下記参照) が適宜上書きされる
-(下の注も参照)。
-
-B<Note>:
-B<*>
-RAW が配列への参照であるときは、
-隣り合う「encoded-word」
-(つまり、ASCII 以外のキャラクタセット要素のある要素)
-を連結する。その上で、マルチバイト文字の文字境界を考慮しながら
-(ただしこれは Unicode/マルチバイト対応が有効なときだけ)、分割する。
-エンコードしないデータ部分は両端に空白文字が必要。
-そうしなければ隣り合う「encoded-word」に併合されてしまう。
-
-RAW に引き続く引数は、ハッシュによるオプションの定義とみなす:
-
-=over 4
-
-=item Charset
-
-「安全でない」ものはこのキャラクタセットでエンコードする。
-初期値は 'ISO-8859-1' (別名 "Latin-1")。
-
-=item Detect7bit
-B<**>
-
-"Encoding" オプション (下記参照) が C<"a"> に指定してあって "Charset"
-オプションが不明なら、
-RAW 文字列の 7 ビットキャラクタセットを判別しようとする。
-初期値は C<"YES">。
-Unicode/マルチバイト文字対応が有効になっていないとき
-(LMIME::Charset::JA_JP/USE_ENCODE 参照) は、
-このオプションはなんの効果も持たない。
-
-=item Encoding
-
-使用するエンコーディング。C<"q"> または C<"b">。
-B<**>
-「特殊」な値も指定できる。C<"a"> は推奨されるエンコーディングを自動選択する
-(キャラクタセットに別のものが推奨されるときはキャラクタセット変換も行う。
-LMIME::Charset::JA_JP 参照)。
-C<"s"> は C<"q"> と C<"b"> のうち短くなるほうを選ぶ。
-B<Note>:
-B<*>
-リリース 1.005 で、初期値が C<"q">
-(MIME::Words での初期値) から C<"a"> に変わった。
-
-=item Field
-
-この文字列を使うメールフィールドの名前。
-B<**>
-ヘッダをエンコードする際には、最初の行でメールフィールド名の長さを考慮する。
-
-=item Folding
-B<**>
-
-エンコードする行を「行折り」する文字の列。初期値は C<"\n">。
-空文字列 C<""> を指定すると、行長 (下記 L</MaxLineLen> 参照)
-を超える「encoded-word」を SPACE で分割するだけ。
-
-B<Note>:
-B<*>
-RFC 5822 (旧 RFC 2822) には、インターネットのメッセージでは行を
-CRLF (C<"\r\n">) で区切ると明記してあるが、
-このモジュールでは後方互換性を保つために LF (C<"\n">) を初期値としてきた。
-初期値を使っている場合、
-エンコードしたヘッダをセッションへと放つ前に、
-改行文字の変換が必要になることもある。
-
-=item Mapping
-B<**>
-
-キャラクタセットの名前に対して実際に使うマッピングを指定する。
-C<"EXTENDED"> は拡張マッピングを使う。
-C<"STANDARD"> は標準化されている厳密なマッピングを使う。
-初期値は C<"EXTENDED">。
-Unicode/マルチバイト文字対応が有効になっていないとき
-(LMIME::Charset::JA_JP/USE_ENCODE 参照) は、
-このオプションはなんの効果も持たない。
-
-=item MaxLineLen
-B<**>
-
-行の最大長 (改行を除く)。
-初期値は 76。
-負の値は行長無制限を意味する (リリース 1.012.3 以降)。
-
-=item Minimal
-B<**>
-
-エンコードするテキストの中の自然な語分離子 (要するに空白文字)
-に注意を払う。
-C<"NO"> を指定すると、
-このモジュールは空白文字を考慮せずにテキスト全体をエンコード
-(エンコードが必要なら)
-し、行長を超える「encoded-word」は単にその長さによって分割される。
-初期値は C<"YES"> で、最小限の部分だけエンコードする。
-C<"DISPNAME"> を指定すると、RFC5322 (旧 RFC2822、RFC822)
-のアドレス仕様 (3.4節) で述べている特殊文字を含む部分もエンコードする。
-これはアドレスフィールド中の display-name をエンコードする際に有用である。
-
-B<Note>:
-リリース 0.040 で、初期値が C<"YES"> に変わった。
-MIME::Words との互換性を保つためである。
-それ以前のリリースでは、このオプションは C<"NO"> 固定であった。
-
-B<Note>:
-C<"DISPNAME"> はリリース 1.012 で導入された。
-
-=item Replacement
-B<**>
-
-LMIME::Charset::JA_JP/エラー処理 参照。
-
-=back
-
-
-=cut
-
-=back
-
-=head2 設定ファイル
-B<**>
-
-L ('Charset' オプションを除く) および
-L のオプション引数の組み込み初期値は、
-設定ファイルで上書きできる。
-F と F。
-詳細は F を読んでほしい。
-
-=head1 VERSION
-
-C<$VERSION> 変数を参照してほしい。
-
-このモジュールの開発版が
-Lhttp://hatuka.nezumi.nu/repos/MIME-EncWords/
-にある。
-
-=head1 SEE ALSO
-
-LMIME::Charset::JA_JP,
-LMIME::Tools
-
-=head1 AUTHORS
-
-decode_mimewords() 関数の元の版は LMIME::Words
-モジュールから引き継いだもので、著者は以下のとおり:
- Eryq (F), ZeeGee Software Inc (Fhttp://www.zeegee.com).
- David F. Skoll (dfs@roaringpenguin.com) http://www.roaringpenguin.com
-
-そのほかの部分は、次の者が書き直しあるいは加えた:
- Hatuka*nezumi - IKEDA Soji .
-
-This program is free software; you can redistribute
-it and/or modify it under the same terms as Perl itself.
-
-
-=cut
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/MIME-EncWords-1.012.4/lib/MIME/EncWords.pm new/MIME-EncWords-1.014.1/lib/MIME/EncWords.pm
--- old/MIME-EncWords-1.012.4/lib/MIME/EncWords.pm 2011-10-26 08:17:02.000000000 +0200
+++ new/MIME-EncWords-1.014.1/lib/MIME/EncWords.pm 2013-08-25 04:40:29.000000000 +0200
@@ -116,6 +116,7 @@
}
}
} else {
+ require Unicode::String;
require MIME::Charset::_Compat;
for my $sub (@ENCODE_SUBS) {
no strict "refs";
@@ -130,7 +131,7 @@
#------------------------------
### The package version, both in 1.23 style *and* usable by MakeMaker:
-$VERSION = '1.012.4';
+$VERSION = '1.014.1';
### Public Configuration Attributes
$Config = {
@@ -152,10 +153,40 @@
my $UNSAFE = qr{[^\x01-\x20$PRINTABLE]};
my $WIDECHAR = qr{[^\x00-\xFF]};
my $ASCIITRANS = qr{^(?:HZ-GB-2312|UTF-7)$}i;
+my $ASCIIINCOMPAT = qr{^UTF-(?:16|32)(?:BE|LE)?$}i;
my $DISPNAMESPECIAL = "\\x22(),:;<>\\x40\\x5C"; # RFC5322 name-addr specials.
#------------------------------
+# _utf_to_unicode CSETOBJ, STR
+# Private: Convert UTF-16*/32* to Unicode or UTF-8.
+sub _utf_to_unicode {
+ my $csetobj = shift;
+ my $str = shift;
+
+ return $str if is_utf8($str);
+
+ return $csetobj->decode($str)
+ if MIME::Charset::USE_ENCODE();
+
+ my $cset = $csetobj->as_string;
+ my $unistr = Unicode::String->new();
+ if ($cset eq 'UTF-16' or $cset eq 'UTF-16BE') {
+ $unistr->utf16($str);
+ } elsif ($cset eq 'UTF-16LE') {
+ $unistr->utf16le($str);
+ } elsif ($cset eq 'UTF-32' or $cset eq 'UTF-32BE') {
+ $unistr->utf32($str);
+ } elsif ($cset eq 'UTF-32LE') {
+ $unistr->utf32le($str);
+ } else {
+ croak "unknown transformation '$cset'";
+ }
+ return $unistr->utf8;
+}
+
+#------------------------------
+
# _decode_B STRING
# Private: used by _decode_header() to decode "B" encoding.
# Improvement by this module: sanity check on encoded sequence.
@@ -714,11 +745,17 @@
# unsafe ASCII sequences
my $UNSAFEASCII = ($maxrestlen <= 1)?
qr{(?: =\? )}ox:
- qr{(?: =\? | [$PRINTABLE]{$Params{MaxLineLen}} )}ox;
- $UNSAFEASCII = qr{(?: [$DISPNAMESPECIAL] | $UNSAFEASCII )}ox
+ qr{(?: =\? | [$PRINTABLE]{$Params{MaxLineLen}} )}x;
+ $UNSAFEASCII = qr{(?: [$DISPNAMESPECIAL] | $UNSAFEASCII )}x
if $Params{Minimal} eq 'DISPNAME';
unless (ref($words) eq "ARRAY") {
+ # workaround for UTF-16* & UTF-32*: force UTF-8.
+ if ($charsetobj->as_string =~ /$ASCIIINCOMPAT/) {
+ $words = _utf_to_unicode($charsetobj, $words);
+ $charsetobj = MIME::Charset->new('UTF-8');
+ }
+
my @words = ();
# unfolding: normalize linear-white-spaces and orphan newlines.
$words =~ s/(?:[\r\n]+[\t ])*[\r\n]+([\t ]|\Z)/$1? " ": ""/eg;
@@ -786,6 +823,13 @@
next unless length($s);
my $csetobj = MIME::Charset->new($cset || "",
Mapping => $Params{Mapping});
+
+ # workaround for UTF-16*/UTF-32*: force UTF-8
+ if ($csetobj->as_string and $csetobj->as_string =~ /$ASCIIINCOMPAT/) {
+ $s = _utf_to_unicode($csetobj, $s);
+ $csetobj = MIME::Charset->new('UTF-8');
+ }
+
# determine charset and encoding
# try defaults only if 7-bit charset detection is not required
my $enc;
@@ -897,24 +941,26 @@
}
# Split long ``words''.
- my @splitted;
+ my @splitwords;
my $restlen;
if ($Params{MaxLineLen} < 0) {
- @splitted = @triplets;
+ @splitwords = @triplets;
} else {
$restlen = $firstlinelen;
foreach (@triplets) {
my ($s, $enc, $csetobj) = @$_;
- push @splitted, &_split($s, $enc, $csetobj, $restlen, $maxrestlen);
- my ($last, $lastenc, $lastcsetobj) = @{$splitted[-1]};
+ my @s = &_split($s, $enc, $csetobj, $restlen, $maxrestlen);
+ push @splitwords, @s;
+ my ($last, $lastenc, $lastcsetobj) = @{$s[-1]};
my $lastlen;
if ($lastenc) {
$lastlen = $lastcsetobj->encoded_header_len($last, $lastenc);
} else {
$lastlen = length($last);
}
- $restlen -= $lastlen; # FIXME: Sometimes estimated longer
+ $restlen = $maxrestlen if scalar @s > 1; # has split; new line(s) fed
+ $restlen -= $lastlen;
$restlen = $maxrestlen if $restlen <= 1;
}
}
@@ -922,7 +968,7 @@
# Do encoding.
my @lines;
$restlen = $firstlinelen;
- foreach (@splitted) {
+ foreach (@splitwords) {
my ($str, $encoding, $charsetobj) = @$_;
next unless length($str);
@@ -978,10 +1024,10 @@
return ([$str, $encoding, $charset]);
}
- my (@splitted, $ustr, $first);
+ my (@splitwords, $ustr, $first);
while (length($str)) {
if ($charset->encoded_header_len($str, $encoding) <= $restlen) {
- push @splitted, [$str, $encoding, $charset];
+ push @splitwords, [$str, $encoding, $charset];
last;
}
$ustr = $str;
@@ -996,10 +1042,10 @@
($first, $str) = &_clip_unsafe($ustr, $encoding, $charset,
$maxrestlen);
}
- push @splitted, [$first, $encoding, $charset];
+ push @splitwords, [$first, $encoding, $charset];
$restlen = $maxrestlen;
}
- return @splitted;
+ return @splitwords;
}
# _split_ascii RAW, ROOM_OF_FIRST_LINE, MAXRESTLEN
@@ -1012,12 +1058,12 @@
my $maxrestlen = shift;
$restlen ||= $maxrestlen;
- my @splitted;
+ my @splitwords;
my $ascii = MIME::Charset->new("US-ASCII", Mapping => 'STANDARD');
foreach my $line (split(/(?:[\t ]*[\r\n]+)+/, $s)) {
my $spc = '';
foreach my $word (split(/([\t ]+)/, $line)) {
- next unless scalar(@splitted) or $word; # skip first garbage
+ next unless scalar(@splitwords) or $word; # skip first garbage
if ($word =~ /[\t ]/) {
$spc = $word;
next;
@@ -1026,33 +1072,33 @@
my $cont = $spc.$word;
my $elen = length($cont);
next unless $elen;
- if (scalar(@splitted)) {
+ if (scalar(@splitwords)) {
# Concatenate adjacent words so that encoded-word and
# unencoded text will adjoin with separating whitespace.
if ($elen <= $restlen) {
- $splitted[-1]->[0] .= $cont;
+ $splitwords[-1]->[0] .= $cont;
$restlen -= $elen;
} else {
- push @splitted, [$cont, undef, $ascii];
+ push @splitwords, [$cont, undef, $ascii];
$restlen = $maxrestlen - $elen;
}
} else {
- push @splitted, [$cont, undef, $ascii];
+ push @splitwords, [$cont, undef, $ascii];
$restlen -= $elen;
}
$spc = '';
}
if ($spc) {
- if (scalar(@splitted)) {
- $splitted[-1]->[0] .= $spc;
+ if (scalar(@splitwords)) {
+ $splitwords[-1]->[0] .= $spc;
$restlen -= length($spc);
} else { # only WSPs
- push @splitted, [$spc, undef, $ascii];
+ push @splitwords, [$spc, undef, $ascii];
$restlen = $maxrestlen - length($spc);
}
}
}
- return @splitted;
+ return @splitwords;
}
# _clip_unsafe UNICODE, ENCODING, CHARSET_OBJECT, ROOM_OF_FIRST_LINE
@@ -1155,7 +1201,6 @@
return %GotParams;
}
-
#------------------------------
=back
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/MIME-EncWords-1.012.4/lib/POD2/JA/Encode/MIME/EncWords.pod new/MIME-EncWords-1.014.1/lib/POD2/JA/Encode/MIME/EncWords.pod
--- old/MIME-EncWords-1.012.4/lib/POD2/JA/Encode/MIME/EncWords.pod 1970-01-01 01:00:00.000000000 +0100
+++ new/MIME-EncWords-1.014.1/lib/POD2/JA/Encode/MIME/EncWords.pod 2013-08-25 04:40:29.000000000 +0200
@@ -0,0 +1,160 @@
+use utf8;
+
+=encoding utf-8
+
+=head1 NAME
+
+Encode::MIME::EncWords~[ja] - MIME の「B」・「Q」ヘッダエンコーディング (代替案)
+
+=head1 SYNOPSIS
+
+ use Encode::MIME::EncWords;
+ use Encode qw/encode decode/;
+
+ # ヘッダデコードする。
+ $utf8 = decode('MIME-EncWords', $header);
+
+ # 初期のキャラクタセット (UTF-8) でヘッダエンコードする。
+ $header = encode('MIME-EncWords', $utf8);
+
+ # ほかのキャラクタセットでヘッダエンコードする。
+ Encode::MIME::EncWords->config(Charset => 'GB2312');
+ $header = encode('MIME-EncWords', $utf8);
+
+=head1 ABSTRACT
+
+このモジュールは、RFC 2047 に述べる
+MIME のヘッダエンコーディングを実装している。
+エンコーディングの名前には、みっつの変種と、
+キャラクタセットに特化したひとつの簡易版がある。
+
+ エンコーディング名 encode() の結果 備考
+ ------------------------------------------------------------------
+ MIME-EncWords (B と Q を自動判別)
+ MIME-EncWords-B =?XXXX?B?...?= 初期値は UTF-8。
+ MIME-EncWords-Q =?XXXX?Q?...?= ,,
+ MIME-EncWords-ISO_2022_JP =?ISO-2022-JP?B?...?=
+
+decode() の結果は、どのエンコーディングでも同じになる。
+
+=head1 DESCRIPTION
+
+このモジュールは、LEncode::MIME::Header コアモジュールが提供する
+C エンコーディングの代替となることを意図している。
+このモジュールの使いかたをよく知るためには、L<Encode> を参照してほしい。
+
+=head2 モジュール独自の機能
+
+=over 4
+
+=item config(KEY => VALUE, ...);
+
+I<クラスメソッド。>
+KEY => VALUE の対でオプションを設定する。
+次のオプションが使える。
+
+=over 4
+
+=item Charset
+
+[encode] データ要素を変換するのに使うキャラクタセット。
+初期値は C<"UTF-8">。
+C では C<"ISO-2022-JP"> に固定。
+
+=item Detect7bit
+
+[decode/encode] エンコードされていない部分の
+7 ビットキャラクタセットを判別しようとする。
+初期値は C<"YES">。
+
+=item Field
+
+[encode] ヘッダフィールドの名前。エンコードされた結果の最初の行で、
+これの長さが考慮される。
+初期値は C<undef>。
+
+=item Mapping
+
+[decode/encode] キャラクタセットの名前に対して実際に使うマッピングを指定する。
+初期値は C<"EXTENDED">。
+
+=item MaxLineLen
+
+[encode] 行の最大長 (改行を除く)。
+初期値は C<76>。
+
+=item Minimal
+
+[encode] エンコーディングを最小限にするか否か。
+初期値は C<"YES">。
+
+=back
+
+オプションの詳細については LMIME::EncWords|POD2::JA::MIME::EncWords を参照。
+
+=back
+
+=head1 CAVEAT
+
+=over 4
+
+=item *
+
+MIME ヘッダエンコーディング用のエンコーディングモジュールは、
+こみいったヘッダフィールドを簡単に作り出したり、
+そこから望みの要素を取り出したりできる打ち出の小槌ではない。
+
+アドレスヘッダフィールド (To:、From: など) をデコードするには、
+まず mailbox-list を分解する。
+そして、個々の要素をエンコーディングモジュールでデコードする。
+これをエンコードするには、
+今度は個々の要素をエンコーディングモジュールでエンコードする。
+そして、エンコードした要素から mailbox-list を組み立てる。
+mailbox-list の組み立てや分解には、LMail::Address
+のようなモジュールが使えるだろう。
+
+=item *
+
+行を LF (C<"\n">) で区切る。
+RFC5322 は、インターネットのメッセージでは行を CRLF (C<"\r\n">)
+で区切るとしている。
+
+=back
+
+=head1 BUGS
+
+バグやバグのような動作は開発者に知らせてください。
+
+CPAN Request Tracker:
+Lhttp://rt.cpan.org/Public/Dist/Display.html?Name=MIME-EncWords.
+
+=head1 VERSION
+
+C<$VERSION> 変数を参照してほしい。
+
+B<これは実験的なリリースである>。仕様は近い将来、変わるかもしれない。
+
+このパッケージの開発版が次の場所にある。
+Lhttp://hatuka.nezumi.nu/repos/MIME-EncWords/。
+
+=head1 SEE ALSO
+
+L<Encode>, LEncode::MIME::Header, LMIME::EncWords|POD2::JA::MIME::EncWords.
+
+RFC 2047 I.
+
+=head1 AUTHOR
+
+Hatuka*nezumi - IKEDA Soji
+
+=head1 COPYRIGHT
+
+Copyright (C) 2011 Hatuka*nezumi - IKEDA Soji.
+
+This program is free software; you can redistribute it and/or modify it
+under the same terms as Perl itself.
+
+
+=cut
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/MIME-EncWords-1.012.4/lib/POD2/JA/MIME/EncWords.pod new/MIME-EncWords-1.014.1/lib/POD2/JA/MIME/EncWords.pod
--- old/MIME-EncWords-1.012.4/lib/POD2/JA/MIME/EncWords.pod 1970-01-01 01:00:00.000000000 +0100
+++ new/MIME-EncWords-1.014.1/lib/POD2/JA/MIME/EncWords.pod 2013-08-25 04:40:29.000000000 +0200
@@ -0,0 +1,365 @@
+=encoding utf-8
+
+=head1 NAME
+
+MIME::EncWords~[ja] - RFC 2047 encoded-word 関連 (改良版)
+
+=head1 SYNOPSIS
+
+IMIME::EncWords は、RFC 2047 (旧 RFC 1522)
+の仕様により適合することをめざした LMIME::Words の別実装です。
+加えて、いくらかの改良がなされています。
+以下の梗概と説明は、もとの MIME::Words から採ったものに、
+改良点の説明 (B<**>) および変更点の説明と明確化 (B<*>)
+を加えたものです。>
+
+読み進める前に、LMIME::Tools を見るべきだ。そうして、
+あなたの成し遂げようとしていることのどこでこのモジュールを使うのかを、
+理解してほしい。
+いますぐ。待ってるから。
+
+いいかな。はじめるよ...
+
+ use MIME::EncWords qw(:all);
+
+ ### 文字列を、キャラクタセットは無視してデコードした文字列にする:
+ $decoded = decode_mimewords(
+ 'To: =?ISO-8859-1?Q?Keld_J=F8rn_Simonsen?= ',
+ );
+
+ ### 文字列を、デコードされた [DATA,CHARSET] の対の配列にする:
+ @decoded = decode_mimewords(
+ 'To: =?ISO-8859-1?Q?Keld_J=F8rn_Simonsen?= ',
+ );
+
+ ### 単一の「安全でない語」をエンコードする:
+ $encoded = encode_mimeword("\xABFran\xE7ois\xBB");
+
+ ### 文字列を、「安全でない語」を探しながらエンコードする:
+ $encoded = encode_mimewords("Me and \xABFran\xE7ois\xBB in town");
+
+=head1 DESCRIPTION
+
+合衆国の諸君。このモジュールでいったい何をやらかそうというのか、
+わからないかもしれないね。欧州、ロシア等の諸君なら、わかるだろう。C<(:-)>。
+
+たとえば、これは有効な MIME ヘッダだ:
+
+ From: =?US-ASCII?Q?Keith_Moore?=
+ To: =?ISO-8859-1?Q?Keld_J=F8rn_Simonsen?=
+ CC: =?ISO-8859-1?Q?Andr=E9_?= Pirard
+ Subject: =?ISO-8859-1?B?SWYgeW91IGNhbiByZWFkIHRoaXMgeW8=?=
+ =?ISO-8859-2?B?dSB1bmRlcnN0YW5kIHRoZSBleGFtcGxlLg==?=
+ =?US-ASCII?Q?.._cool!?=
+
+これらのフィールドは、だいたいつぎのようにデコードできる:
+
+ From: Keith Moore
+ To: Keld Jørn Simonsen
+ CC: André Pirard
+ Subject: If you can read this you understand the example... cool!
+
+B<追補>: 合衆国、欧州の諸君。
+このモジュールでいったいなにをやらかそうというのか、
+わからないかもしれないね。東アジア等の諸君なら、わかるだろう。
+C<(^_^)>.
+
+たとえば、これは有効な MIME ヘッダだ:
+
+ Subject: =?EUC-KR?B?sNTAuLinKGxhemluZXNzKSwgwvzB9ri7seIoaW1w?=
+ =?EUC-KR?B?YXRpZW5jZSksILGzuLgoaHVicmlzKQ==?=
+
+これらのフィールドは、だいたいつぎのようにデコードできる:
+
+ Subject: 게으름(laziness), 참지말기(impatience), 교만(hubris)
+
+=head1 PUBLIC INTERFACE
+
+=over 4
+
+
+=cut
+
+=item decode_mimewords ENCODED, [OPTS...]
+
+I<関数>。
+文字列から RFC 2047 スタイルの "Q" エンコーディング
+(quoted-printable の一種) や "B" エンコーディング (base64)
+を探し、それをデコードする。
+
+B<配列コンテクストでは>、文字列 ENCODED をデコードした
+C<[DATA, CHARSET]> の対に分割し、そのリストを返す。
+エンコードされていなかったデータは 1 要素の配列
+C<[DATA]> で返す (CHARSET は実質的に C<undef>)。
+
+ $enc = '=?ISO-8859-1?Q?Keld_J=F8rn_Simonsen?= ';
+ foreach (decode_mimewords($enc)) {
+ print "", ($_[1] || 'US-ASCII'), ": ", $_[0], "\n";
+ }
+
+B<**>
+ただし、隣り合う「encoded-word」を、キャラクタセットがおなじなら連結する。
+これは、マルチバイト列を安全に扱えるようにするためである。
+
+B<**>
+RFC2231 第 5 節で定義している言語情報があれば、第 3 の要素として追加する。
+
+B<*>
+エンコードされていなかったデータの両端の空白文字は取り去らない。
+これは、LMIME::Words との互換性を保つためである。
+
+B<スカラコンテクストでは>、上記のリストの DATA 要素をすべて連結し、
+それを返す。I<注意: 情報の損失がある>ので、
+望んだ結果が得られI<ない>かもしれない。
+だが、文字列 ENCODED
+のすべての文字のキャラクタセットが同一だとわかっているのなら、
+これは役に立つこともある。
+(これを使う前に、LMIME::WordDecoder/unmime を見てほしい。
+これが望みのものかもしれない。)
+B<**>
+下記の "Charset" も参照。
+
+構文エラーが発生すると、$@ にエラーの説明をセットするが、
+解析はできるかぎり (ヘッダのデコードで得られたI<なにか>を返すために)
+続行する。
+エラーが見つからなければ、$@ は偽となる。
+
+B<*>
+「encoded-word」が壊れているときは、エンコードしたままのものを返す。
+この場合、$@ をセットする。
+
+ENCODED に引き続く引数は、ハッシュによるオプションの定義とみなす。
+B<**>
+Unicode/マルチバイト文字対応が有効になっていないとき
+(LMIME::Charset/USE_ENCODE 参照) は、
+以下のオプションはなんの効果も持たない。
+
+=over 4
+
+=item Charset
+B<**>
+
+スカラコンテクストで、DATA 要素をこの名前のキャラクタセットで変換する。
+このオプションに特殊値 C<"_UNICODE_"> を指定すると、
+返す値は Unicode 文字列となる。
+
+B<Note>:
+この仕様は、I を指定したとき以外は>、
+やはり情報の損失がある。
+
+=item Detect7bit
+B<**>
+
+エンコードされていなかった部分の 7 ビットキャラクタセットを判別しようとする。
+初期値は C<"YES">。
+
+
+=cut
+
+=item Mapping
+B<**>
+
+スカラコンテクストで、
+キャラクタセットの名前に対して実際に使うマッピングを指定する。
+C<"EXTENDED"> は拡張マッピングを使う。
+C<"STANDARD"> は標準化されている厳密なマッピングを使う。
+初期値は C<"EXTENDED">。
+
+=back
+
+=cut
+
+=item encode_mimeword RAW, [ENCODING], [CHARSET]
+
+I<関数>。
+「安全でない」文字のある単一の「語」RAW をエンコードする。
+「語」全体がエンコードされる。
+
+ ### "«François»" をエンコードする:
+ $encoded = encode_mimeword("\xABFran\xE7ois\xBB");
+
+エンコーディング ENCODING を指定できる (C<"Q"> または C<"B">)。
+初期値は C<"Q">。
+B<**>
+さらに、「特殊」な値も指定できる。
+C<"S"> は C<"Q"> と C<"B"> のうち短くなるほうを選ぶ。
+
+キャラクタセット CHARSET を指定できる。初期値は C<iso-8859-1>。
+
+B<*>
+C<"Q"> エンコーディングでは、空白を ``_'' でエスケープする。
+
+
+=cut
+
+=item encode_mimewords RAW, [OPTS]
+
+I<関数>。
+文字列 RAW から、「安全でない」文字の列を見つけてエンコードしようとする。
+
+ ### 「安全でない語」のある文字列をエンコードする:
+ $encoded = encode_mimewords("Me and \xABFran\xE7ois\xBB");
+
+エンコードした文字列を返す。
+
+B<**>
+RAW は Unicode でもよい。ただし Unicode/マルチバイト対応が有効な場合
+(LMIME::Charset/USE_ENCODE 参照)。
+さらに RAW は、L
+が配列コンテクストで返すものへの参照でもよい。
+後の場合は、"Charset" オプション (下記参照) が適宜上書きされる
+(下の注も参照)。
+
+B<Note>:
+B<*>
+RAW が配列への参照であるときは、
+隣り合う「encoded-word」
+(つまり、ASCII 以外のキャラクタセット要素のある要素)
+を連結する。その上で、マルチバイト文字の文字境界を考慮しながら
+(ただしこれは Unicode/マルチバイト対応が有効なときだけ)、分割する。
+エンコードしないデータ部分は両端に空白文字が必要。
+そうしなければ隣り合う「encoded-word」に併合されてしまう。
+
+RAW に引き続く引数は、ハッシュによるオプションの定義とみなす:
+
+=over 4
+
+=item Charset
+
+「安全でない」ものはこのキャラクタセットでエンコードする。
+初期値は 'ISO-8859-1' (別名 "Latin-1")。
+
+=item Detect7bit
+B<**>
+
+"Encoding" オプション (下記参照) が C<"a"> に指定してあって "Charset"
+オプションが不明なら、
+RAW 文字列の 7 ビットキャラクタセットを判別しようとする。
+初期値は C<"YES">。
+Unicode/マルチバイト文字対応が有効になっていないとき
+(LMIME::Charset/USE_ENCODE 参照) は、
+このオプションはなんの効果も持たない。
+
+=item Encoding
+
+使用するエンコーディング。C<"q"> または C<"b">。
+B<**>
+「特殊」な値も指定できる。C<"a"> は推奨されるエンコーディングを自動選択する
+(キャラクタセットに別のものが推奨されるときはキャラクタセット変換も行う。
+LMIME::Charset|POD2::JA::MIME::Charset 参照)。
+C<"s"> は C<"q"> と C<"b"> のうち短くなるほうを選ぶ。
+B<Note>:
+B<*>
+リリース 1.005 で、初期値が C<"q">
+(MIME::Words での初期値) から C<"a"> に変わった。
+
+=item Field
+
+この文字列を使うメールフィールドの名前。
+B<**>
+ヘッダをエンコードする際には、最初の行でメールフィールド名の長さを考慮する。
+
+=item Folding
+B<**>
+
+エンコードする行を「行折り」する文字の列。初期値は C<"\n">。
+空文字列 C<""> を指定すると、行長 (下記 L</MaxLineLen> 参照)
+を超える「encoded-word」を SPACE で分割するだけ。
+
+B<Note>:
+B<*>
+RFC 5322 (旧 RFC 2822) には、インターネットのメッセージでは行を
+CRLF (C<"\r\n">) で区切ると明記してあるが、
+このモジュールでは後方互換性を保つために LF (C<"\n">) を初期値としてきた。
+初期値を使っている場合、
+エンコードしたヘッダをセッションへと放つ前に、
+改行文字の変換が必要になることもある。
+
+=item Mapping
+B<**>
+
+キャラクタセットの名前に対して実際に使うマッピングを指定する。
+C<"EXTENDED"> は拡張マッピングを使う。
+C<"STANDARD"> は標準化されている厳密なマッピングを使う。
+初期値は C<"EXTENDED">。
+Unicode/マルチバイト文字対応が有効になっていないとき
+(LMIME::Charset/USE_ENCODE 参照) は、
+このオプションはなんの効果も持たない。
+
+=item MaxLineLen
+B<**>
+
+行の最大長 (改行を除く)。
+初期値は 76。
+負の値は行長無制限を意味する (リリース 1.012.3 以降)。
+
+=item Minimal
+B<**>
+
+エンコードするテキストの中の自然な語分離子 (要するに空白文字)
+に注意を払う。
+C<"NO"> を指定すると、
+このモジュールは空白文字を考慮せずにテキスト全体をエンコード
+(エンコードが必要なら)
+し、行長を超える「encoded-word」は単にその長さによって分割される。
+初期値は C<"YES"> で、最小限の部分だけエンコードする。
+C<"DISPNAME"> を指定すると、RFC5322 (旧 RFC2822、RFC822)
+のアドレス仕様 (3.4節) で述べている特殊文字を含む部分もエンコードする。
+これはアドレスフィールド中の display-name をエンコードする際に有用である。
+
+B<Note>:
+リリース 0.040 で、初期値が C<"YES"> に変わった。
+MIME::Words との互換性を保つためである。
+それ以前のリリースでは、このオプションは C<"NO"> 固定であった。
+
+B<Note>:
+C<"DISPNAME"> はリリース 1.012 で導入された。
+
+=item Replacement
+B<**>
+
+LPOD2::JA::MIME::Charset/エラー処理 参照。
+
+=back
+
+=cut
+
+=back
+
+=head2 設定ファイル
+B<**>
+
+L ('Charset' オプションを除く) および
+L のオプション引数の組み込み初期値は、
+設定ファイルで上書きできる。
+F と F。
+詳細は F を読んでほしい。
+
+=head1 VERSION
+
+C<$VERSION> 変数を参照してほしい。
+
+このモジュールの開発版が
+Lhttp://hatuka.nezumi.nu/repos/MIME-EncWords/
+にある。
+
+=head1 SEE ALSO
+
+LMIME::Charset|POD2::JA::MIME::Charset,
+LMIME::Tools
+
+=head1 AUTHORS
+
+decode_mimewords() 関数の元の版は LMIME::Words
+モジュールから引き継いだもので、著者は以下のとおり:
+ Eryq (F), ZeeGee Software Inc (Fhttp://www.zeegee.com).
+ David F. Skoll (dfs@roaringpenguin.com) http://www.roaringpenguin.com
+
+そのほかの部分は、次の者が書き直しあるいは加えた:
+ Hatuka*nezumi - IKEDA Soji .
+
+This program is free software; you can redistribute
+it and/or modify it under the same terms as Perl itself.
+
+
+=cut
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/MIME-EncWords-1.012.4/t/05encode_utf.t new/MIME-EncWords-1.014.1/t/05encode_utf.t
--- old/MIME-EncWords-1.012.4/t/05encode_utf.t 1970-01-01 01:00:00.000000000 +0100
+++ new/MIME-EncWords-1.014.1/t/05encode_utf.t 2013-08-25 04:40:29.000000000 +0200
@@ -0,0 +1,67 @@
+use strict;
+use Test::More;
+
+BEGIN {
+ if ($] < 5.007003) {
+ plan skip_all => 'No Unicode/multibyte support';
+ } else {
+ plan tests => 36;
+ }
+}
+
+use MIME::EncWords qw(encode_mimewords);
+$MIME::EncWords::Config = {
+ Detect7bit => 'YES',
+ Mapping => 'EXTENDED',
+ Replacement => 'DEFAULT',
+ Charset => 'ISO-8859-1',
+ Encoding => 'A',
+ Field => undef,
+ Folding => "\n",
+ MaxLineLen => 76,
+ Minimal => 'YES',
+};
+
+dotest('UTF-16');
+dotest('UTF-16BE');
+dotest('UTF-16LE');
+dotest('UTF-32');
+dotest('UTF-32BE');
+dotest('UTF-32LE');
+
+sub dotest {
+ my $charset = shift;
+
+ local($/) = '';
+ open WORDS, "[1] and uc $p->[1] eq 'UTF-8') {
+ Encode::from_to($p->[0], 'UTF-8', $charset);
+ $p->[1] = $charset;
+ }
+ }
+ } else {
+ if ($params[1] and $params[1] eq 'Charset' and
+ uc $params[2] eq 'UTF-8') {
+ Encode::from_to($params[0], 'UTF-8', $charset);
+ $params[2] = $charset;
+ }
+ }
+
+ my $enc = encode_mimewords(@params);
+ is((($isgood && !$@) or (!$isgood && $@)) &&
+ ($isgood ? $enc : $expect), $expect, $@ || $enc);
+ }
+ close WORDS;
+}
+
+1;
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/MIME-EncWords-1.012.4/testin/encode-ascii.txt new/MIME-EncWords-1.014.1/testin/encode-ascii.txt
--- old/MIME-EncWords-1.012.4/testin/encode-ascii.txt 2011-10-26 08:17:02.000000000 +0200
+++ new/MIME-EncWords-1.014.1/testin/encode-ascii.txt 2013-08-25 04:40:29.000000000 +0200
@@ -1,8 +1,8 @@
GOOD
([["Perl=?: "], ["\x1B\x24BIBE*\x40^Co "EUC-JP")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/MIME-EncWords-1.012.4/testin/encode-singlebyte.txt new/MIME-EncWords-1.014.1/testin/encode-singlebyte.txt
--- old/MIME-EncWords-1.012.4/testin/encode-singlebyte.txt 2011-10-26 08:17:02.000000000 +0200
+++ new/MIME-EncWords-1.014.1/testin/encode-singlebyte.txt 2013-08-25 04:40:29.000000000 +0200
@@ -42,8 +42,8 @@
GOOD
("Th\xE8me tr\xE8s important\xA0: La r\xE9alisation du Syst\xE8me de R\xE9f\xE9rence C\xE9leste", Charset => "iso-8859-1")
=?ISO-8859-1?Q?Th=E8me_tr=E8s_important=A0=3A?= La =?ISO-8859-1?Q?r=E9alis?=
- =?ISO-8859-1?Q?ation?= du =?ISO-8859-1?Q?Syst=E8me?= de
- =?ISO-8859-1?Q?R=E9f=E9rence_C=E9leste?=
+ =?ISO-8859-1?Q?ation?= du =?ISO-8859-1?Q?Syst=E8me?= de =?ISO-8859-1?Q?R?=
+ =?ISO-8859-1?Q?=E9f=E9rence_C=E9leste?=
GOOD
("_-_")
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org
For additional commands, e-mail: opensuse-commit+help@opensuse.org