1. よしだむの仕事
2000 年 11 月 30 日の Perl/Ruby Conference
でXMLParser モジュールを紹介しました。
1999 年 3 月 13 日の第 1 回 XML 開発者の日で
XMLParser モジュールを紹介しました。
i. XMLParser モジュール
James Clark 氏の XML Parser Toolkit (expat) を Ruby
に組み込んでみました。
ver 0.7.2 での変更
- ver 0.7.0 で削除した digest.rb を復活
ver 0.7.1 での変更
- Ruby 1.9.1 での入力文字エンコーディングの自動変換
ver 0.7.0 での変更
- Ruby 1.9.1 対応
- 一部実験的ライブラリの削除
- サンプルプログラム削除
ver 0.6.8 での変更
- エンコード名のバッファオーバーフローを修正
- 入力が汚染されていた場合,出力も汚染するようにした
- XML::Parser#parse のブロック引数に XML::Parser オブジェクトを追加
- expat-1.2 サポートの削除
ver 0.6.5 での変更
- XML::Parser#reset 追加 (expat-1.95.3)
- skippedEntity イベント追加 (expat-1.95.4)
- XML::Parser.getFeatureList 追加 (expat-1.95.5)
- XML::Parser#useForeignDTD 追加 (expat-1.95.5)
ver 0.6.2 での変更
- lib のレイアウト変更。
- XML::Parser::Error の親クラス変更。
- DOM Level 2 の実験的対応。
- 名前空間の実験的対応 (XMl::ParserNS)。
ver 0.6.1 での変更
- expat-1.95.0,expat-1.2 対応。
ver 0.5.19 での変更。
- 高橋征義さんが xmltree.rb 等を RD 化してくださいました。
ver 0.5.18 での変更。
ver 0.5.16 での変更。
ver 0.5.15 での変更。
- expat-19990728 の start/endDoctypeDecl イベントに対応
- SAX ドライバのバグ修正
ver 0.5.14 での変更。
- expat-19990626 の外部パラメータ実体のパースに対応
- Ruby-1.2 サポートを打ち切り
ver 0.5.13 での変更。
- 実験的 SAX ドライバを追加
- expat-1.1 対応
ver 0.5.12 での変更。
- extconf.rb のバグ修正 (藤本尚邦さんありがとうございます)
- samples/xmlstats.rb をちょっぴり高速化
ver 0.5.11 での変更。
- expat-19990425 に対応し,NotStandalone イベント,
getSpecifiedAttributes, byteCount メソッド追加
- samples/xmlstats.rb 追加
ver 0.5.10 での変更。
- xmldigest.rb を xss4j の DOMHASH に対応させた
- DOM ツリーを使わない DOMHASH のテスト実装追加
ver 0.5.9 での変更。
- Ruby 1.3 用にオブジェクトの構造を変更
- XPointer のキーワードの省略を可能にした
- XML::DOM::Builder で外部パース実体の処理を追加
ver 0.5.7 での変更。
- expat-19990307 の start/endNamespaceDecl イベントに対応
ver 0.5.x は 0.4.x に比べ,以下の点が異なっています。
- Perl 用 XML::Parser のエンコーディングマップが
読み込めるようになりました。以下のエンコーディングが
利用できるほか,Perl 用 XML::Parser, XML::Encoding から
得ることができます。
-
EUC-JP エンコーディングマップ
Unicode Inc. の変換テーブルをもとにした EUC-JP
エンコーディングマップです。
-
X-EUC-JP エンコーディングマップ
Unicode Inc. の変換テーブルは正式なものとは
いえないようなので,
エンコーディング名を X-EUC-JP-Unicode,
X-EUC-JP-JISX0221 と変更したものです。
XML::Parser に採用されました。
-
X-Emacs-Mule エンコーディングマップ
Mule の内部エンコーディングに対応したエンコーディ
ングマップです。ISO-8859-[1-9],
JISX0208,JISX0201,JISX0212,KSC5601,
GB2312,CNS11643-[1-3],Big5 に対応しています。
- テスト版 expat に対応しました (Namespaces,
comment イベント,cdataSection イベント,内部実体を展開する
default イベント)。
ver 0.4.x は 0.3.x に比べ,以下の点が異なっています。
- 福嶋正機さんによってかなりよい XPointer がサポートされまし
た
- 外部エンティティに関するイベントが追加されました
- 文字列だけではなくストリームのパースが可能になりました
- XMLParser オブジェクトにインスタンス変数が追加できるように
なりました
- 未知の文字エンコーディングのイベントが追加され,
ユーザがエンコーディングコンバータを設定できるように
なりました。
- Tree クラスがより DOM レベル 1 勧告に近くなりました
- ドキュメントの更新が完全ではありません
- まだバグが残っているかも知れません
Python, Perl, Ruby の XML モジュールの比較みたいなものを
書いてみました。
ii. Uconv モジュール
XMLParser モジュールは UTF-16 と UTF-8 しか通さないので,
日本語 EUC と Shift_JIS を通すために Unicode
変換モジュールを作ってみました。
UTF-16, UTF-8, UCS-4 と EUC-JP, Shift_JIS を相互に変換します。
実際 Shift_JIS を使うのは Windows の場合が多いので,
Windows で使われている Shift_JIS の変種である CP932
に対応しています。
ver 0.5.3 での変更。
ver 0.4.12 での変更。
ver 0.4.11 での変更。
- --enable-compat-win32api 追加
(CP932 テーブルを Win32API 互換にする)
ver 0.4.10 での変更。
- 例外発生時のメモリリーク修正
- --enable-fullwidth-reverse-solidus 追加
ver 0.4.9 での変更。
ver 0.4.8 での変更。
- 汚染状態の感染に対応
- non-shortest form UTF-8 をチェック
- Exception を Uconv::Error に変更
ver 0.4.6 での変更。
- s2u_conv2 を修正
- USE_WIN32API 追加
ver 0.4.5 での変更。
- u2s_conv2 を修正
- USC/CP932 変換テーブルを変更
ver 0.4.4 での変更。
ver 0.4.3 での変更。
- non-constant initializers の削除
ver 0.4.2 での変更。
ver 0.4.0 での変更。
ver 0.3.1 での変更。
iii. Oracle モジュール
このライブラリは既に保守されていません。
意外なことに Ruby 用の Oracle モジュールが見付からなかったの
で,簡単なものを作ってみました。
このライブラリは Oracle 7 用です。
Oracle 8,8i,9i を使う場合は,
Ruby/OCI8 をお勧めします。
ver 0.2.11 での変更。
- Oracle#exec のイテレータ対応
- オートコミット対応
ver 0.2.9 での変更。
-
Clemens Hintze 氏による Oracle::Cursor
の拡張を取り込みました。
Ruby 1.6 にも対応したつもり。
ver 0.2.8 での変更。
- バッファが小さいときに 65534 バイト未満の
LONG データが一部しか取り出せない問題を修正
ver 0.2.7 での変更。
ver 0.2.6 での変更。
ver 0.2.5 での変更。
- Oracle#exec で第二引数以降の値を SQL 変数 :0, :1, :2, ...
に束縛するようにした。
- Oracle::Cursor#exec で,データの出力エンコーディングによっては
(例えば japanese_japan.utf8 など) 出力長が内部長より長くな
ることがあるので,VARCHAR2, CHAR の場合は出力長を 1.5 倍
とした
ver 0.2.3 での変更。
- Oracle::Cursor#fetch で NUMBER 型データの整数対応
ver 0.2.2 での変更。
- Ruby-1.3 対応
- WindowsNT での動作確認
iv. VFlib3 モジュール
このライブラリは既に保守されていません。
角川さんのベクトルフォントライブラリ
VFlib を
Ruby から呼び出すためのモジュールを作ってみました。
まだ一部の機能しか実装されていません。
ver 0.1.1 での変更。
v. Perl モジュール
このライブラリは既に保守されていません。
Perl の機能を Ruby から呼び出すためのモジュールを作ってみました。
Perl データ型への対応,Perl メソッドの呼び出し等,
かなり強力になりました。
version 0.2.9 での変更。
- Perl 5.6.x の -Dusethreads に対応
version 0.2.8 での変更。
- Ruby-1.6.4 対応 ((Akinori -Aki- MUSHA さん)
- 英語ドキュメント (すぎむしさん)
version 0.2.7 での変更。
- Ruby-1.6.0 対応
- Perl 5.6.0 対応, FreeBSD 対応
(Akinori -Aki- MUSHA さんありがとうございます)
version 0.2.5 での変更。
vi. 多バイト文字列のための String クラスの拡張ライブラリ
このライブラリは既に保守されていません。
String クラスに多バイト文字対応したメソッドを追加します。
vii. Syslog モジュール
このライブラリは既に保守されていません。
Amos Gouaux 氏の Syslog ライブラリ (Ruby に標準添付) を使ってください。
ちょっとログを残したいことがあって,
UNIX の syslog(3) を呼び出すモジュールを作ってみました。
可変引数の処理のあたりが中途半端です。
logger(1) を呼び出せば十分という話も…
version 0.1.2 での変更。
- openlog に option
引数が渡っていなかったバグを修正
version 0.1.1 での変更。
viii. Unicode ライブラリ
Unicode 文字列の正規化などを行うライブラリです。
ver 0.4.1 での変更。
- Unicode 6.1 に対応
- gemspec ファイルを同梱
ver 0.4.0 での変更。
- 昔のままだった合成アルゴリズムを現在のものに修正
- Unicode 6.0 に対応
ver 0.3.0 での変更。
- capitalize のバグ修正 (一文字の文字列の
capitalize ができなかった)
- "ß" (ドイツ語 eszett) から "SS" のような 2 文字以上になる大文字小文字変換に対応
ver 0.2.0 での変更。
ix. Susie プラグインライブラリ
このライブラリは既に保守されていません。
Windows でも Ruby を使い始めました。
手始めに,画像ビューア Susie 用プラグインを Ruby
から呼び出すライブラリを作ってみました。
CYGWIN 版 Ruby で動作します。
version 0.1.2 での変更。
- 中田伸悦さんによる Ruby-1.5 対応パッチを取り込み
version 0.1.1 での変更。
x. DirectDraw for Ruby
このライブラリは既に保守されていません。
DirectDraw モジュールの作成を始めました。
テストプログラムが動き始めたのでスナップショットを公開します。
CYGWIN 版 Ruby で動作します。
version 0.0.4 での変更。
- DirectDrawSurface#GetDC 等追加
version 0.0.3 での変更。
version 0.0.2 での変更。
xii. rbuconv ライブラリ
Ruby だけで書かれた Unicode 変換 ライブラリです。
C のコンパイルをすることができない環境でも使うことができます。
Uconv とほとんど互換です。
Ruby ライセンスです。
version 0.1.3 での変更。
- Ruby 1.9 対応
- gemspec ファイルを同梱
xiii. ymXML ライブラリ
Ruby だけで書かれたシンプルな XML パーサです。
Ruby ライセンスです。
ver 0.5.6での変更。
ver 0.5.3での変更。
ver 0.5.2での変更。
- 日本語文字コードの変換でNKF, Iconvに対応
xiv. ymHTML ライブラリ
Ruby だけで書かれたシンプルな HTML パーサです。
Ruby ライセンスです。
ver 0.1.18での変更。
- HTML 5 スタイルの charset 宣言に対応
ver 0.1.16での変更。
- DOCTYPE 内に CRLF が入っているとパースに失敗するバグを修正
ver 0.1.15での変更。
ver 0.1.13での変更。
ver 0.1.12での変更。
- 日本語文字コードの変換でNKF, Iconvに対応
ver 0.1.11での変更。
- forceHTML オプション追加 (XHTML ファイルを HTML モードでパース)
- コメント終了のバグ修正 ('--' と '>' の間に空白を許可)