人気ブログランキング | 話題のタグを見る

edit.rb で snippet 管理

プログラムをするとき、snippet は便利だ。動作テストの済んだ snippet をたくさん持っていると、コピペでプログラムを書くことができる。しかし、意外に snippet の管理は難しい。snippet の内容を忘れていることが多いし。cat でファイルの中身を見て、ruby foo.rb で実行して、vi の :r コマンドで取り込んでという手順が面倒だ。

このブログで掲載した、edit.rb を利用するとそんな snippet の管理が楽にできる。irb に require 'edit.rb' しておくと、snippet の作成が、foo = edit でワンタッチでできる。eval foo で動作確認ができるし、動作にエラーが出たときは、foo = edit(foo) で編集ができる。動作確認のできたプログラムは、save('foo.rb', foo) でファイルへの書き出しが、hoge = IO.read('foo.rb') でファイルからの読み込みができる。

ディスクの snippet のリストは、irb から system 'ls snippets/' のようにすれば取得できる。

また、変数へプログラムを読み込む利点は、irb から出ることなしに、複数の snippet の動作を確認することができることだ。foo と bar に別の snippet が入っていても eval foo、eval bar で実行できる。また、それぞれの内容は、puts foo、puts bar とすれば、すぐに確認できる。

irb に edit.rb を require すると、snippet を作りたくてたまらなくなる。

実行例は下のようになる。

Ruby$ irb
irb(main):001:0> require 'edit'
=> true
irb(main):002:0> hello = edit
=> "puts 'hello, world'\n"
irb(main):003:0> puts hello
puts 'hello, world'
=> nil
irb(main):004:0> eval hello
hello, world
=> nil
irb(main):005:0> triangle = edit
=> "for i in 1..5\n for j in 1..i\n print '*'\n end\n puts\nend\n"
irb(main):006:0> puts triangle
for i in 1..5
  for j in 1..i
    print '*'
  end
  puts
end
=> nil
irb(main):007:0> eval triangle
*
**
***
****
*****
=> 1..5
irb(main):008:0> save('hello.rb', hello)
=> 20
irb(main):009:0> save('triangle.rb', triangle)
=> 61
irb(main):010:0> foo = IO.read('triangle.rb')
=> "for i in 1..5\n for j in 1..i\n print '*'\n end\n puts\nend\n"
irb(main):011:0> eval foo
*
**
***
****
*****
=> 1..5
by tnomura9 | 2008-09-21 07:48 | Ruby | Comments(0)
<< 統計計算スニペット edb.rb で簡単プログラム... >>