ファイル操作に関しては、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]