言語ゲーム

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

Twitter: @propella

SuperSwiki で集めた学生の作品を整理。

ごめんなさい。折角ワークショップではこだて未来大の学生さんにたくさん作品を作ってもらったのにも関わらず、作品を全然整理してませんでした。SuperSwiki で作品を集めたのは良いものの、SuperSwiki って作成中の作品も全部保存するから、ファイルが多くなりすぎて訳が分からなくなってしまったのでした。という事で、SuperSwiki で集めた作品を整理する為のスクリプトを書きました。

"まず、SuperSwiki の upload ディレクトりの内容をまるまま適当なディレク
トリにコピーします。量が多すぎる場合はシェルで cp -p *.pr ~/tmp/ とし
た方がよいかも。それからディレクトリを Squeak に伝えます。"
dirName _ 'C:\takasi\tmp\'.

"プロジェクトの名前だけ取り出します。"
dir _ FileDirectory on: dirName.
allProjects _ (dir entries collect: [:each | each name]) select: [:aName | '*.###.pr' match: aName].

"バージョンの数字を除いた「プロジェクト名」のみ取り出します"
projectNames _ (allProjects collect: [:each | each allButLast: '.###.pr' size]) asSet.

"ファイル名全体から、バージョン番号の一番大きい最新の物を取り出します"
newestNames _ projectNames collect: [:prName | (allProjects select: [:each | prName, '.*' match: each]) asSortedCollection first].

"最新の物以外を削除します"
allProjects do: [:each | (newestNames includes: each) ifFalse: [dir deleteFileNamed: each ] ].

本当は、コピーも Squeak でやりたかったのですが、Squeak にはファイル更新時刻を保存したままコピーする事が出来ないみたいなので断念しました。