[Kansai-pm] Jcode 1.99_05 Released -- toward 2.00
Dan Kogai
dankogai at dan.co.jp
Thu Feb 17 10:21:27 PST 2005
弾です。
1.99_05をReleaseしました。
http://www.dan.co.jp/~dankogai/Jcode-1.99_05.tar.gz
今度は日本語PODが付いてきます! makamaka at donzoko.net さんありがとうございました。
=head1 Changes
1.99_05 2005/02/18
! Jcode.pm MANIFEST Makefile.PL
+ Jcode/Nihongo.pod t/jfold.t
Enhancements & Japanese POD with a help from makamaka at donzoko.net.
=head1 Comments
On Feb 17, 2005, at 17:59, makamaka at donzoko.net wrote:
> Dan様
> まかまか@donzoko.netです。
>
> 禁則処理のテストを書いてみました。その結果jfoldに関して気づいたことを。
>
> testは通りません :)
> これは、r_strがflagged UTF-8なのに対して禁則用の文字列がEUCのためでした。
というわけでこれは書き直しました。
> で、思ったのですが、JEncodeのjfoldは文字数で折り返していたので
> 禁則処理の意味もあると思うのですが、Jcodeのjfoldはバイト数で
> 折り返すため、そもそも禁則処理は必要ないのかもしれません。
>
> あと、EUCかUTF-8かでかなり折り返される文字数が代わるため、
> その旨PODに書いたほうがよいかなあとも思いました。
全角は2文字として数えるというのが元の jfold()
の仕様だったので、そちらに合わせました。ドキュメントもそれにあわせて書き直しています。早い話、
> 個人的に、文字数(半角1バイト全角2バイト計算)で折り返すjfold2
> メソッド(仮)を持ったJcode継承クラスを書いてみたいと思いました。
という風になったということです。
On Feb 17, 2005, at 14:30, Kawasaki Yusuke wrote:
> 川崎です。新バージョンありがとうございます。
> Perl 5.6.1 に入れてみましたが、特に問題はありません。
この場合だと0.88と同等ですね。
> さて、今回の新バージョンでは、待望の
> my $unistr = "\x{262f}"; # YIN YANG
> my $j = jcode($unistr); # $j->euc is '?'
> print $j->fallback(Jcode::FB_XMLCREF)->euc; # '☯'
> という手順が使えるようになりました。
>
> しかし、Perl 5.8.1 未満の環境を利用している場合は、
> このメソッド+定数FB_XMLCREF が利用できないようですね。
> Bareword "Jcode::FB_XMLCREF" not allowed while "strict subs" in use
> Can't locate object method "fallback" via package "Jcode"
> といったエラーが発生してしまいます。
まあ当然といえば当然ですね。新機能まわりはEncodeにずるずるべったりなので。
> Perl のバージョンが限定されない環境でこの機能を利用するためには、
> 予め、呼び出し元側で Jcode.pm のバージョンをチェックする必要が
> ありますね。
> if ( $Jcode::VERSION >= 1.99 ) {
> $sjis = $j->fallback(Jcode::FB_XMLCREF)->sjis();
> } else {
> $sjis = $j->sjis();
> }
> なんて条件分岐を入れずに済む方法があると良いと思いました。
いいえ、これはcroakするのが正しいのです。私としてはなるべく多くの人に Perl 5.8.1 以上に乗り換えてほしいのです。
もし条件判定が必要なら、$Jcode::USE_ENCODE
も判定に使えます(これはまだPODに書いてないけど)。でもどちらかというとelegantなやり方としては、
$j->can("fallbak") and $j->fallback(Jcode::FB_XMLCREF);
$sjis = $j->sjis;
でしょうね。
> ・ダミーのメソッド fallback を置いておく
> →実際には何もしないが、エラーは回避できる
という訳でこれは却下。
> ・Unicode/uni.c 側で FB_XMLCREF に対応しちゃう
> →今まで避けてきた拡張になりますが・・・
>
> なども考えられますが、いかがでしょうか?
はっきり宣言します。私としては Perl 5.8.1 以前の Version 用の機能拡張はしません。現在 Jcode は
5.005, 5.6, そして 5.8
と3世代に渡ってサポートしていますが、それがどれだけ無理をしてそうしているかはsourceを読めば分かって頂けると思います。
#すでに5.005のmake testはかなりきつくなっています(現在は FreeBSD 4-Stable の /usr/bin/perl
でやっている)。
その辺よろしくご理解のほどをお願い致します。
以上取り急ぎ
Dan the (J|En)code Maintainer
More information about the Kansai-pm
mailing list