えーっと何をしなきゃいけないんだっけ。
とりあえずは俺以外でも作業できる環境を作らないとだめだな。 ということは、まず、
あたりか。
簡単なところで、割り当てリストから。 Subversion のレポジトリに ASSIGN てファイルを作っておいて、 アカウント名を書き込んでチェックインしたら OK ということにしよう。 えーと、*.rd と *.off を拡張子とってリストすれば終わりと。
次。依存関係を考えると、ツールかな。 パーサはだいたいできてるから、リストするツールを書けばいいだろう。
うむ。こんなとこか。 bc-list はパースして pp するだけという手抜き実装だ。 bc-convert は ReFe のコードを持ってきてでっちあげた。
それからサンプルファイル。 Object, String, Enumerable, Comparable があればよかろう。 あと組み込み定数と組み込み関数は記法が特殊なので俺が引き取るっと。 メソッドを置き換えるライブラリも一つ欲しいな。jcode にしよう。
最後に作業マニュアル。 ざっと書いてメール → 完。
(10:56)
もう Symbol が String に統合されるのは規定事項なのだろうか……。 やっぱ別物のほうがいいなあ。 Symbol を String のように扱いたい、というのはわかるけど、 それと継承関係を作ることは別の話だと思うんだよな。 どうせ破壊的メソッドは実装できないんだし、 いくつかメソッドを追加するだけで済ますわけにはいかないのだろうか。
やはりもう一発メールを投げてみよう。
(11:18)
ああ、そうか、ActiveSupport の件は Hash で同一視したいって話なのか。 ますます ActiveSupport が嫌いになってきた。
(11:27)
シェルスクリプトのユニットテストを書く必要が発生した。 …… shunitってあるのかな。ありそうだな。あるらしい。
うーむ。CVS HEAD 見てみたが、イマイチ好きになれない。特に関数名が。 これ使うなら「ふつりな」のときに自分で作ったやつのほうがいいや。 こんなやつ。
#!/bin/sh . ./shunit.sh assert_ok() { assert_stdout "OK" $1 assert_status 0 $1 } assert_out() { assert_stdout "$1" $2 assert_status 0 $2 } assert_out "Hello, World!" ./hello assert_out "Hello, World!" ./hello2 assert_status 77 ./add assert_out "ret=77" ./add2 assert_out "ret=77" ./sub assert_out "ret=56" ./imul assert_out "ret=2000" ./idiv assert_out "i=0; i=1" ./lvar1 assert_ok ./if assert_ok ./while1 assert_ok ./while2 assert_out "i=3; i=3; i=2; i=1; i=0" ./while3 assert_ok ./while-break assert_ok ./while-continue assert_out "i=3; i=2; i=1; i=0" ./for assert_ok ./for-break assert_ok ./for-continue assert_ok ./immscope test_finished
(13:25)
ちなみに、こんなハッシュを作って演算子をメソッド名に変換してた。
OP = { '+' => 'add', '-' => 'sub', '*' => 'mul', '/' => 'div', '%' => 'mod', '&' => 'bitand', '|' => 'bitor', '^' => 'bitxor', '<<' => 'lshift', '>>' => 'rshift', '==' => 'eq', '!=' => 'neq', '>' => 'gt', '<' => 'lt', '>=' => 'gteq', '<=' => 'lteq', '&&' => 'logicaland', '||' => 'logicalor' }
ハッシュ側のキーは文字列なんだけど、 検索するときは intern してあった罠。 世の中ままならねーんですよ。
(16:39)
Copyright (c) 2002-2007 青木峰郎 / Minero Aoki. All rights reserved.