28 October 2007
[自由自在Squeak][FileMan] サンプルコードをまとめてBOM付きに
「自由自在Squeakプログラミング」は、今から3年前に出た本です。当時はSqueakは3.6で、BOMなしUTF-8をソースとして読む仕様になっていました。現在はBOMつきを読むようになっています。
そのため当時のサンプルコードを最近のSqueak(3.8以降)で読ませるようにするにはBOMをつけるという変換を行わなければなりません。これを我らがFileManで行ったという話です。
まずはBOMを付ける処理です。SampleCodes以下のサブディレクトリ群以下にあるファイル全てについて、BOMを先頭に追加します。以前のファイルを消さずに、ファイル名に'.bom'を付けています。
dir := './SampleCodes' asDirectoryEntry.
bom := {16rEF. 16rBB. 16rBF} asByteArray.
dirs directoriesDo: [:dir |
dir filesDo: [:file |
binContents := file binaryContents.
dir binaryAt: (file name, '.bom') put: (bom, binContents).
]
].
どうやら変換がうまくいったようなので、'.bom'以外のファイルを全て消します。
rootDir := './SampleCodes' asDirectoryEntry.
rootDir allFilesDo: [:file |
(file extension endsWith: '.bom') ifFalse: [file delete]
].
次にファイル名をもとに戻します。
rootDir := './SampleCodes' asDirectoryEntry.
rootDir allFilesDo: [:file |
file rename: (file name copyReplaceAll: '.bom' with: '')
].
ということで、Squeakであればファイル操作も簡単にできますよ。
変換したサンプルは自由自在SqueakプログラミングサポートWikiに置いてあります。