言語ゲーム

とあるエンジニアが嘘ばかり書く日記

Twitter: @propella

Squeak ファイル操作案

ファイル操作に関しては、Ruby と比べるとどうしても見劣りしてしまう Squeak だが、こんな風に書きたいという希望を書いてみた。実装はそんなにたいした事無いと思うけど、読みやすくなったかな。Ruby では割とファイル名に文字列を使うみたいだけど、Squeak では一貫して「ファイルオブジェクト」(FileDirectory + FileName + FileEntry のようなもの)を使うようにしたいです。

  • ディレクトリの表記はわりと自由に
  • glob: によりマッチしたFile インスタンスのリストが返る
  • ソートブロックとしてシンボルが使える。これは、例えば File >> asName がよく使うソートブロックを返す事にしておく
  • mtime は慣用句なのでそのまま使いたい。
  • ディレクトリは必ずオブジェクト経由で使う、
  • ファイルをディレクトリにリネームするとそこに移動という意味になる(これも慣用句だと思う)
dir := 'c:/takasi/tmp/' asDirectoryName.  
pattern := '.###.pr'. 
allProjects := dir glob: '*', pattern.

projectNames :=
    (allProjects collect: [:each | each localName allButLast: pattern size]) asSet.

newestProjects =
    projectNames collect: [:each | ( (dir glob: (each, pattern)) sort: #asName) first]

newestProjects do: [:file | dateDirName := file mtime yyyymmdd.
    newDir := (dir directoryNamed: dateDirName) assured.
    file rename: newDir]