SourceForge.jp

青空文庫TextTools

 このプロジェクトは、青空文庫のテキストファイルを主にrubyで色々いじろうというプロジェクトです。

 現在、下記のツール・ライブラリのリリースを実施・予定しています

現在のリリース(ダウンロード)

txt2html改

 txt2htmlは、大野 裕さんがメインとなって作成された、青空文庫形式のテキストからxhtmlにフォーマット変換を行うスクリプトです。
ですが、残念なことに、

という問題があります。
 そこで、「rubyで全部書き直してしまえ!」と作り始めたのがtxt2html改(ao2xhtml)です。

オリジナルのtxt2htmlに比べ、

という特徴があります。現在バージョン0.13を公開中です。
また、現在、内部コードの大改造を行っているため、0.14または0.2のリリースはしばらく後になる予定です。

染み抜き君(仮)

 現在の青空文庫形式テキストはファイルフォーマットをSJIS X0208としているため、JIS X0208文字(第一水準、第二水準)限定という縛りがあります。
そのため、第三・第四水準にならある漢字でもファイルに保存できないので、外字注記という形式で記述しないといけません。
でも、unicode(UTF-8,UTF-16)や、SJIS2000/2004ファイルフォーマットなら、ある文字が外字かどうかを気にすることなく保存できます。
そこで、青空文庫のテキスト入力中は、この文字が外字かどうかを気にすることなく入力していき、最後にファイル内の外字を外字注記に自動変換してしまおうというプログラムです。

 名前の由来は、ファイルから第四(し)・三(み)水準の文字を抜き取るというオヤジギャグです。
良い名前をご提案頂けましたら、採用するかもしれません。

X0208→X0213

 unicodeの普及に伴い、Shif_JIS X0208にファイル形式を制限するのが勿体なくなりつつあります。
Shift_JIS X0208からの脱皮は、第三・四水準文字を外字注記せず、そのまま記述できるというメリットにも繋がります。
しかし、過去の資産を同様にJIS X0213を内包するファイルフォーマットに変更しようとすると、外字の文字コード化、JIS X0208で包摂され、同じ文字とされてしまっていた文字の復元という作業が必要になり、作業量が馬鹿にならないくらい大量に発生します。
この部分をサポートするプログラムを書く予定です。
これもまだアイディアだけで実体がありません、リリースの予定も立てていません

青空文庫テキスト仕様書

 青空文庫テキストは、文学用のルビ、字下げ、字上げ(地付き)、傍線、傍点などをサポートしたマークアップ言語です。 文法が日本語なTeX/htmlと思えばいいでしょうか?
 ただし、その記述の方法が青空文庫の説明ページの中をいろいろと探し回らないと見つからなかったので、文法の仕様書という形で、ルビの使い方や、注記の一覧をまとめて見ようと思っています。
これもぼちぼちやっていますので、まとまったら公開します。

酢昆布

 酢昆布はsconvです。(すみません。なんのこっちゃ?ですね)
rubyで上記プログラムを作るに辺り、文字コードの変換が重要な課題です。
また、ユーザー層を考えると、Windows/Macintoshどちらでも動くプログラムである必要があります。
そこで、まず浮上するのがiconvですが、これはWindows上では問題なく動くのですが、MacOS標準のiconvが1.9と古く、sjis2004に対応していません。
よしだむさんのuconvは、sjisへの変換がcp932までと、sjis2004に対応していません。
と、上記2つの文字コードコンバーターがこのプロジェクトの目的にそぐわなかったため、車輪の再発明ではありますが、sjis2004主体の文字コード変換器をrubyのString Classを拡張する拡張ライブラリとして作成しました。
これがsconvです。 綴りをそのまま読むと「すこんぶ」と読めてしまうので、まあ、またまたオヤジギャグで、酢昆布と呼んでいます。

 基本ポリシーはよしだむさんのuconvに倣い、
文字コードの判定は行わない
処理する文字列がどんなエンコーディングであるかは、プログラマーが判断する
という前提です。
また、面区点コードと文字の相互変換、漢字水準番号の取得と言った、青空文庫特有の機能も備えています。

今のところ、

  • sjis2004をutf-8に変換する sj2utf8
  • utf-8をsjis2004に変換する utf82sj
  • 面区点コードをsjis2004に変換する ku2sj(青)
  • sjis2004文字列の最初の1文字の、面区点コード、水準番号を取得する sj2ku(青)
  • sjis2004をutf-16leに変換する sj2utf16le
  • sjis2004をutf-16beに変換する sj2utf16be
  • utf16のエンディアンを入れ替える chg_endian
  • の7つのメソッドが使えます。 将来の拡張として、

  • utf16からsjis2004へ変換する utf162sj
  • utf16からutf8へ変換する utf162utf8
  • utf8からutf16へ変換する utf82utf16
  • の3つのメソッドの追加を予定しています。
    (今のところ、これが書いていて苦しいけど一番楽しいです。)